Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Блок кода
languagebash
themeRDark
cd eccm/2.89/

В файле eccm/.env замените значение пароля пользователя peeper_monitor и все вхождения tester_password/eccm_password на ваш пароль:

...

Блок кода
languagebash
themeRDark
cd eccm/2.89/

В файле eccm/.env замените все вхождения old_tester_password, old_eccm_password и old_peeper_monitor_password на ваш новый пароль:

...

Настройка PostgreSQL позволяет ограничить доступ нежелательных пользователей к базе данных . Для конфигурирования доступа необходимо, чтобы ЕССМ был запущен. 

Предупреждение

Изменение настройки PostgreSQL при инсталляции ЕССМ в отказоустойчивой системе может привести к проблемам с его работой.

Выведите подсети, которые использует docker:

при запуске ECCM в отказоустойчивой системе, или когда база данных находится на отдельном сервере.

Подсказка

Когда ECCM и база данных — на одном сервере, настройка подключений не требуется. По умолчанию контейнер с базой данных при выбранной инсталляции изолирован и недоступен из внешней сети.   

Раскрыть
titleНастройка доступа к БД в отказоустойчивой системе

Настройте доступ к БД только с localhost, подсетей docker и адреса администратора при помощи любого текстового редактора в файле postgres/data/pg_hba.cluster.conf.tpl:

Блок кода
themeRDark
titlepostgres/data/pg_hba.cluster.conf.tpl
# TYPE      DATABASE 
Блок кода
languagebash
themeRDark
sudo docker network inspect internal | grep "Subnet"
        
"Subnet":
 
"172.21.0.0/16", sudo
 
docker
 
network
USER 
inspect
 
external
 
|
 
grep
 
"Subnet"
                     
"Subnet":
 
"172.20.0.0/16"

Во избежание утери выставленных настроек доступа, создайте новый файл:

Блок кода
languagebash
themeRDark
cd
 
<путь
 
до
 
каталога
ADDRESS 
с
 
файлами
 
запуска
 
ECCM>/postgres/ touch
 
data/pg_hba.conf.tpl

Скопируйте текущую конфигурацию настроек доступа:

Блок кода
languagebash
themeRDark
docker
 
exec
 
-i
 
eccm-postgres
  
cat
 
/etc/postgresql/pg_hba.conf
 
>>
 
data/pg_hba.conf.tpl

Настройте доступ к БД только с localhost, с подсетей docker-а и адреса администратора при помощи любого текстового редактора:

Блок кода
themeRDark
titlepostgres/data/pg_hba.conf.tpl
#
 
TYPE
  
DATABASE
 METHOD       
USER
            
ADDRESS
                 
METHOD #
 
"local"
 
is
 
for
 
Unix
 
domain
 
socket
 
connections
 
only local
  
all
             
all
                                     
trust


#
IPv4 local connections: host
 "local" is for Unix domain socket connections only          
all
             
all
             
127.0.0.1/32
            
trust #
 
IPv6
 
local
 
connections: host
    
all
             
all
             
::1/128
                 
trust #
 
Allow
 
replication
 
connections
 
from
 
localhost,
 
by
 
a
 
user
 
with
 
the #
 
replication
 
privilege. local
   
replication
     
all
                      
local       all        
trust host
    
replication
     all             
127.0.0.1/32
            
trust host
    
replication
     
all
             
::1/128
        trust         
trust #host
    
all
             
all
             
all
                     
md5 host
    
all
             
all
             
<eccm_ip>/32
       
# IPv4 local connections:  
md5
  
#
 
IP
 
адрес
 
ECCM
 
приложений host
    
all
             
all
             
<admin_ip>/32
           
md5
  
#
 
опционально:
 
IP
 
адрес
 
для
 
удаленного
 
подключения
 
администратора
 
к
 
БД host
    
all
             
all
             
172.21.0.0
 
255.255.0.0
  
md5
  
# docker network internal host
                                                                   
all
     
host        all             
172.20.0.0 255.255.0.0
    
md5
all  
#
 
docker
 
network external

Смонтируйте созданный файл настроек доступа в БД в файле postgres/docker-compose.yml:

Блок кода
languagebash
themeRDark
titlepostgres/docker-compose.yml
services:
	postgres:
	...
	volumes:
		...
		- ./data/pg_hba.conf.tpl:/configurations/templates/pg_hba.conf.tpl
...

Перезапустите ЕССМ:

Блок кода
languagebash
themeRDark
sudo ./compose-tools.sh --stop
sudo ./compose-tools.sh --https --start <IP-адрес сервера или его доменное имя>

Настройка firewall

Для обеспечения большей безопасности необходимо ограничить внешние подключения к серверу ECCM.

Создайте файл iptables.sh с правилами:

                           127.0.0.1/32            trust                                                                                                 
# IPv6 local connections:                                                                                                                                                                       
host        all                 all                               ::1/128                 trust                                                                                                                                                                                                                                                                                                                                                                                                                                                                

# Docker network internal (172.21.0.0/20) и external (172.20.0.0/20)                                                                                                                            
hostssl     ${ECCM_DATABASE}    ${POSTGRES_USER}                  172.21.0.0/16           md5  # docker network internal                                                                        
hostssl     ${ECCM_DATABASE}    ${ECCM_POSTGRES_USER}             172.21.0.0/16           md5  # docker network internal                                                                        
hostssl     all                 ${PEEPER_MONITOR_POSTGRES_USER}   172.21.0.0/16           md5  # docker network internal                                                                        
hostssl     repmgr              ${REPMGR_USER}                    172.21.0.0/16           md5  # docker network internal                                                                        

hostssl     ${ECCM_DATABASE}    ${POSTGRES_USER}                  172.20.0.0/16           md5  # docker network external                                                                        
hostssl     ${ECCM_DATABASE}    ${ECCM_POSTGRES_USER}             172.20.0.0/16           md5  # docker network external                                                                        
hostssl     all                 ${PEEPER_MONITOR_POSTGRES_USER}   172.20.0.0/16           md5  # docker network external                                                                        
hostssl     repmgr              ${REPMGR_USER}                    172.20.0.0/16           md5  # docker network external

# Опционально: удаленный доступ администратора к БД                                                                                                                                             
hostssl     all                 all                               <admin_ip>/32           md5  # опционально: IP адрес для удаленного подключения администратора к БД

# Опционально: доступ приложений ECCM инсталляции отказоустойчивой системы с БД на отдельном сервере
hostssl     ${ECCM_DATABASE}    ${POSTGRES_USER}                  <master_app_ip>/32      md5  # IP адрес Master-ECCM                                                                       
hostssl     ${ECCM_DATABASE}    ${ECCM_POSTGRES_USER}             <master_app_ip>/32      md5  # IP адрес Master-ECCM                                                                       
hostssl     all                 ${PEEPER_MONITOR_POSTGRES_USER}   <master_app_ip>/32      md5  # IP адрес Master-ECCM
hostssl     repmgr              ${REPMGR_USER}                    <master_app_ip>/32      md5  # IP адрес Master-ECCM

hostssl     ${ECCM_DATABASE}    ${POSTGRES_USER}                  <slave_app_ip>/32       md5  # IP адрес Slave-ECCM                                                                       
hostssl     ${ECCM_DATABASE}    ${ECCM_POSTGRES_USER}             <slave_app_ip>/32       md5  # IP адрес Slave-ECCM                                                                       
hostssl     all                 ${PEEPER_MONITOR_POSTGRES_USER}   <slave_app_ip>/32       md5  # IP адрес Slave-ECCM                                                                       
hostssl     repmgr              ${REPMGR_USER}                    <slave_app_ip>/32       md5  # IP адрес Slave-ECCM                           
Подсказка

IP-адреса всех узлов отказоустойчивой системы будут добавлены автоматически при запуске ECCM.

Синхронизируйте конфигурационные файлы между узлами:

Блок кода
languagebash
themeRDark
sudo rsync -av --delete --rsync-path="sudo rsync" eccm/2.9/postgres/data/pg_hba.cluster.conf.tpl <имя пользователя сервера>@<IP-адрес сервера назначения>:<полный путь до директории eccm>/postgres/data/

В файле .env.cluster измените значение параметра RECONFIGURE_CLUSTER на true и перезапустите систему в соответствии с инструкцией в разделе "Запуск ECCM в отказоустойчивой системе".

Примечание

Во избежание ошибок верните значение параметра RECONFIGURE_CLUSTER на false после перезапуска

Настройка firewall

Для обеспечения большей безопасности необходимо ограничить внешние подключения к серверу ECCM.

Создайте файл iptables.sh с правилами:

Блок кода
languagebash
themeRDark
titleiptables.sh
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT     # веб-интерфейс ECCM на схеме HTTPS - не используется для Witness

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT    # DHCP
sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT    # TFTP
sudo iptables -A INPUT -p udp --dport 162 -j ACCEPT   # SNMP-трапы
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT   # Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT   # Syslog (TCP)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT  # загрузка прошивок

Примените правила:

Блок кода
languagebash
themeRDark
chmod +x iptables.sh
sudo ./iptables.sh

Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы):

Блок кода
languagebash
themeRDark
sudo apt-get install iptables-persistent
sudo netfilter-persistent save
Раскрыть
titleНастройка firewall для ECCM с БД на отдельном сервере

Создайте файл iptables.sh на сервере с ECCM со следующими правилами:

Блок кода
languagebash
themeRDark
titleСервер ECCM
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT     # веб-интерфейс ECCM на схеме HTTPS

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT      # DHCP
sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT      # TFTP
sudo iptables -A INPUT -p udp --dport 162 -j ACCEPT     # SNMP-трапы
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT     # Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT     # Syslog (TCP)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT    # загрузка прошивок

На сервере с БД создайте файл iptables.sh со следующими правилами:

Блок кода
languagebash
themeRDark
titleСервер с БД
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH
sudo iptables -A INPUT -p tcp -s <IP сервера ECCM> --dport 5432 -j ACCEPT  # доступ приложений к БД

# разрешим исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# опционально: доступ администратора к БД
sudo iptables -A INPUT -p tcp -s <admin_ip>/32 --dport 5432 -j ACCEPT

Примените правила на каждом сервере:

Блок кода
languagebash
themeRDark
chmod +x iptables.sh
sudo ./iptables.sh

Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы):

Блок кода
languagebash
themeRDark
sudo apt-get install iptables-persistent
sudo netfilter-persistent save


Раскрыть
titleНастройка firewall для отказоустойчивой системы по стандартной схеме

Создайте файл iptables.sh на узлах Master и Slave со следующими правилами:

Блок кода
languagebash
themeRDark
titleУзлы Master и Slave
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT     # веб-интерфейс ECCM на схеме HTTPS

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
# опционально: доступ администратора к БД
sudo iptables -A INPUT -p tcp -s <admin_ip>/32 --dport 5432 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT      # DHCP
sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT      # TFTP
sudo iptables -A INPUT -p udp --dport 162 -j ACCEPT     # SNMP-трапы
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT     # Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT     # Syslog (TCP)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT    # загрузка прошивок

# PostgreSQL
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 5432 -j ACCEPT

# Redis
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 6379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 6379 -j ACCEPT

# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 26379 -j ACCEPT

# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 25672 -j ACCEPT

# Keepalived
sudo iptables -A INPUT -p vrrp -j ACCEPT

На узле Witness создайте файл iptables.sh со следующими правилами:

Блок кода
languagebash
themeRDark
titleУзел Witness
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# PostgreSQL
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5432 -j ACCEPT

# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 26379 -j ACCEPT

# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 25672 -j ACCEPT

Примените правила на каждом сервере:

Блок кода
languagebash
themeRDark
chmod +x iptables.sh
sudo ./iptables.sh

Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы):

Блок кода
languagebash
themeRDark
sudo apt-get install iptables-persistent
sudo netfilter-persistent save


Раскрыть
titleНастройка firewall для отказоустойчивой системы с БД на отдельном сервере

Создайте файл iptables.sh на узлах Master-app и Slave-app со следующими правилами:

Блок кода
languagebash
themeRDark
titleУзлы Master-app и Slave-app
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT     # веб-интерфейс ECCM на схеме HTTPS

# разрешим исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально, разрешим пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

sudo iptables -A INPUT -p udp --dport 67 -j ACCEPT    # DHCP
sudo iptables -A INPUT -p udp --dport 69 -j ACCEPT    # TFTP
sudo iptables -A INPUT -p udp --dport 162 -j ACCEPT   # SNMP-трапы
sudo iptables -A INPUT -p udp --dport 514 -j ACCEPT   # Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT   # Syslog (TCP)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT  # загрузка прошивок

# Redis
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 6379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 6379 -j ACCEPT

# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app> --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 26379 -j ACCEPT

# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 25672 -j ACCEPT

# Keepalived
sudo iptables -A INPUT -p vrrp -j ACCEPT

На узлах Master-db и Slave-db создайте файл iptables.sh со следующими правилами:

Блок кода
languagebash
themeRDark
titleУзлы Master-db и Slave-db
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# PostgreSQL репликация
sudo iptables -A INPUT -p tcp -s <IP Master-db>  --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-db>  --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 5432 -j ACCEPT

# доступ приложений к PostgreSQL
sudo iptables -A INPUT -p tcp -s <IP Master-app> --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app> --dport 5432 -j ACCEPT

# опционально: доступ администратора к БД
sudo iptables -A INPUT -p tcp -s <admin_ip>/32 --dport 5432 -j ACCEPT

На узле Witness создайте файл iptables.sh со следующими правилами:

Блок кода
languagebash
themeRDark
titleУзел Witness
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений
sudo iptables -P FORWARD DROP                           # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT      # SSH

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT

# PostgreSQL
sudo iptables -A INPUT -p tcp -s <IP Master-db>  --dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-db>  --dport 5432 -j ACCEPT

# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 26379 -j ACCEPT

# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 5671 -j 
Блок кода
languagebash
themeRDark
titleiptables.sh
sudo iptables -P INPUT DROP # запрет всех входящих соединений sudo iptables -P FORWARD DROP # запрет для всех проходящих через ваш хост соединений sudo iptables -P OUTPUT
ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 
22
4369 -j ACCEPT
# SSH

sudo iptables -A INPUT -p tcp -
-dport
s 
5432
<IP Slave-
j
app> 
ACCEPT    # Postgres # опционально, разрешим пинговать себя
 --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p
icmp --icmp-type 8
 tcp -s <IP Master-app>  --dport 25672 -j ACCEPT
# разрешим исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -
m
p 
state
tcp -
-state ESTABLISHED,RELATED -j ACCEPT # разрешить обращения к localhost sudo iptables -A INPUT -i lo
s <IP Slave-app>  --dport 25672 -j ACCEPT

Примените правила на каждом сервере:

Блок кода
languagebash
themeRDark
chmod +x iptables.sh
sudo ./iptables.sh

Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы):

Блок кода
languagebash
themeRDark
sudo apt-get install iptables-persistent
sudo netfilter-persistent save



Дополнительная защита сервера

...

  • Разблокировка адресов

IP-адреса, попавшие которые попали в бан:

Блок кода
themeRDark
Status for the jail: sshd
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     0
|  `- File list:        /var/log/auth.log
`- Actions
   |- Currently banned: 0
   |- Total banned:     0
   `- Banned IP list: 192.168.х.х

Чтобы разблокировать IP-адрес, попавший который попал в бан (например, 192.168.х.х), используйте следующую команду:

...

Чтобы разблокировать все адреса, попавшие которые попали в бан, используйте следующую команду:

...