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

Ключ

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

...

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

Подсказка

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

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

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

Блок кода
themeRDark
titlepostgres/data/pg_hba.cluster.conf.tpl
# TYPE      DATABASE            USER                              ADDRESS                 METHOD                                                                                                

# "local" is for Unix domain socket connections only                                                                                                                                            
local       all                 all                                                       trust                                                                                                 
# IPv4 local connections:                                                                                                                                                                       
host        all                 all                               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 после перезапуска

...

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

...

Создайте файл iptables.sh

...

 с

...

правилами:

Сервер ECCM
Блок кода
languagebash
themeRDark
title
iptables.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
  
# загрузка прошивок
На сервере с БД создайте файл iptables.sh со следующими правилами

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

sudo
chmod +x iptables.sh
sudo ./iptables.sh
Блок кода
languagebash
themeRDark
titleСервер с БД

Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту 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 -s-dport <IP443 сервера-j ECCM>ACCEPT --dport 5432 -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 tcp -s <admin_ip>/32udp --dport 543269 -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                              # 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 -PA FORWARDINPUT DROP-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 OUTPUT ACCEPT

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

# разрешимзапрет исходящиевсех подключения, которые инициировали мы самивходящих соединений
sudo iptables -AP INPUTFORWARD -mDROP 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ваш хост соединений
sudo iptables -P OUTPUT ACCEPT

sudo iptables -A INPUT -p udptcp --dport 6722 -j ACCEPT      # DHCPSSH
sudo iptables -A INPUT -p udp tcp -s <IP сервера ECCM> --dport 695432 -j ACCEPT  # доступ приложений  # TFTPк БД

# разрешим исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -pm udpstate --dportstate 162ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения   # SNMP-трапык localhost
sudo iptables -A INPUT -p udp --dport 514i lo -j ACCEPT
# опционально: разрешить   # Syslog (UDP)пинговать себя
sudo iptables -A INPUT -p tcpicmp --dporticmp-type 5148 -j ACCEPT
# опционально: доступ администратора  # Syslog (TCP)к БД
sudo iptables -A INPUT -p tcp -s <admin_ip>/32 --dport 22225432 -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
    # загрузка прошивок

# 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 2637922 -j ACCEPT

      # RabbitMQSSH
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 5671443 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5671 -j ACCEPT     # веб-интерфейс ECCM на схеме HTTPS

# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -pm tcpstate --sstate <IP Witness>  --dport 5671 -j ACCEPTESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -pi tcplo -sj <IP Master>  --dport 4369 -j ACCEPTACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p tcpicmp -s <IP Slave>  -icmp-dporttype 43698 -j ACCEPT
sudo# iptablesопционально: -Aдоступ INPUTадминистратора -p tcp -s <IP Witness>  --dport 4369 -j ACCEPTк БД
sudo iptables -A INPUT -p tcp -s <IP Master> <admin_ip>/32 --dport 256725432 -j ACCEPT

sudo iptables -A INPUT -p tcp -s <IP Slave> udp --dport 2567267 -j ACCEPT      # DHCP
sudo iptables -A INPUT -p tcp -s <IP Witness> udp --dport 2567269 -j ACCEPT

      # KeepalivedTFTP
sudo iptables -A INPUT -p vrrpudp --dport 162 -j ACCEPT

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

Блок кода
languagebash
themeRDark
titleУзел Witness
     # SNMP-трапы
sudo iptables -P INPUT DROP        A INPUT -p udp --dport 514 -j ACCEPT     # Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT     # запрет всех входящих соединенийSyslog (TCP)
sudo iptables -PA FORWARDINPUT DROP-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> хост соединений
sudo iptables --dport 5432 -Pj OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 225432 -j ACCEPT      # SSH

# разрешим исходящие подключения, которые инициировали мы самиRedis
sudo iptables -A INPUT -p tcp -ms <IP Master> state --statedport ESTABLISHED,RELATED6379 -j ACCEPT
#sudo разрешитьiptables обращения-A к localhost
sudo iptables -A INPUT -i loINPUT -p tcp -s <IP Slave>  --dport 6379 -j ACCEPT

# опционально, разрешим пинговать себяSentinel
sudo iptables -A INPUT -p icmptcp -s <IP Master>  -icmp-typedport 826379 -j ACCEPT

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

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

# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master>Witness>  --dport 5671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>Master>  --dport 56714369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>Slave>  --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>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

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

Блок кода
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 -A INPUT -p tcp -s <IP Witness>  --dport 25672 -j ACCEPT

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

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

Блок кода
languagebash
themeRDark
titleУзлы Master-app и Slave-appУзел 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 -p tcp --dport 44322 -j ACCEPT      # веб-интерфейс ECCM на схеме HTTPSSSH

# разрешимразрешить исходящие подключения, которые инициировали мы сами
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 udp tcp -s <IP Master>  --dport 675432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5432 -j ACCEPT

# DHCPSentinel
sudo iptables -A INPUT -p udp tcp -s <IP Master>  --dport 6926379 -j ACCEPT    # TFTP
sudo iptables -A INPUT -p udp tcp -s <IP Slave>  --dport 16226379 -j ACCEPT   

# SNMP-трапыRabbitMQ
sudo iptables -A INPUT -p udp tcp -s <IP Master>  --dport 5145671 -j ACCEPT   # Syslog (UDP)
sudo iptables -A INPUT -p tcp -s <IP Slave>  --dport 5145671 -j ACCEPT   # Syslog (TCP)
sudo iptables -A INPUT -p tcp -s <IP Master>  --dport 22224369 -j ACCEPT  # загрузка прошивок

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

# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master-app>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
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 436922 -j ACCEPT      # SSH
sudo iptables -A INPUT -p tcp --sdport <IP443 Master-app>j ACCEPT --dport 25672 -j ACCEPT
sudo iptables# веб-Aинтерфейс INPUTECCM -pна tcp -s <IP Slave-app>  --dport 25672 -j ACCEPTсхеме HTTPS

# разрешим исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -p tcp -s <IP Witness>  --dport 25672m state --state ESTABLISHED,RELATED -j ACCEPT

# Keepalived
sudoразрешить iptablesобращения -A INPUT -p vrrp -j ACCEPT

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

Блок кода
languagebash
themeRDark
titleУзлы Master-db и Slave-db
к localhost
sudo iptables -P INPUT DROP                             # запрет всех входящих соединений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 -PA FORWARDINPUT DROP-p udp --dport 69 -j ACCEPT    # TFTP
sudo iptables -A INPUT -p udp --dport 162 -j ACCEPT   # SNMP-трапы
sudo iptables -A INPUT #-p запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT
udp --dport 514 -j ACCEPT   # Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 22514 -j ACCEPT      # SSH

# разрешим исходящие подключения, которые инициировали мы самиSyslog (TCP)
sudo iptables -A INPUT -mp statetcp --statedport ESTABLISHED,RELATED2222 -j ACCEPT
  # разрешить обращения к localhostзагрузка прошивок

# Redis
sudo iptables -A INPUT -p tcp -is lo<IP Master-japp> ACCEPT
# опционально: разрешим пинговать себя --dport 6379 -j ACCEPT
sudo iptables -A INPUT -p icmp tcp -s <IP Slave-app>  --icmp-typedport 86379 -j ACCEPT

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

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

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

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

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

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

# разрешим исходящие подключения,# которыезапрет инициироваливсех мывходящих самисоединений
sudo iptables -AP INPUTFORWARD -mDROP 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 -P OUTPUT ACCEPT

sudo iptables -A INPUT -p tcp --sdport <IP22 Slave-db>j ACCEPT    --dport 5432 -j# ACCEPTSSH

# Sentinel разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -pm tcpstate --sstate <IPESTABLISHED,RELATED Master-app>j  --dport 26379 -j ACCEPTACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 26379 -i lo -j ACCEPT

# RabbitMQ опционально: разрешить пинговать себя
sudo iptables -A INPUT -p tcpicmp -s <IP Master-app>  --dport 5671-icmp-type 8 -j ACCEPT

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

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

...



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

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

...

iptables.sh

правилами:

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

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

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

# PostgreSQL
sudo iptables -A 
#
INPUT 
веб
-
интерфейс
p 
ECCM
tcp 
на
-s 
схеме
<IP 
HTTPS
Master-db> 
не
 
используется
--dport 
для Witness # разрешим исходящие подключения, которые инициировали мы сами
5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-
m
db> 
state
 --
state
dport 
ESTABLISHED,RELATED
5432 -j ACCEPT

# 
разрешить обращения к localhost
Sentinel
sudo iptables -A INPUT -p tcp -
i
s 
lo
<IP Master-
j
app> 
ACCEPT # опционально, разрешим пинговать себя
 --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s 
icmp
<IP Slave-app>  -
icmp
-
type
dport 
8
26379 -j ACCEPT

# RabbitMQ
sudo iptables -A INPUT -p
udp
 tcp -s <IP Master-app>  --dport 
67
5671 -j ACCEPT
# DHCP

sudo iptables -A INPUT 
-p udp
-p tcp -s <IP Slave-app>  --dport 
69
5671 -j ACCEPT
# TFTP

sudo iptables -A INPUT -p
udp
 tcp -s <IP Master-app>  --dport 
162
4369 -j ACCEPT
# SNMP-трапы

sudo iptables -A INPUT -p
udp
 tcp -s <IP Slave-app>  --dport 
514
4369 -j ACCEPT
# Syslog (UDP)

sudo iptables -A INPUT -p tcp -s <IP Master-app>  --dport 
514
25672 -j ACCEPT
# Syslog (TCP)

sudo iptables -A INPUT -p tcp -s <IP Slave-app>  --dport 
2222
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.х.х), используйте следующую команду:

...

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

...