...
Настройка PostgreSQL позволяет ограничить доступ нежелательных пользователей к базе данных при запуске ECCM с базой данных в отказоустойчивой системе, или когда база данных находится на отдельном сервере или в отказоустойчивой системе.
| Подсказка |
|---|
При поднятии Когда ECCM и базы база данных — на одном сервере, настройка подключений не требуется. По умолчанию контейнер с базой данных при выбранной инсталляции изолирован и недоступен из внешней сети. |
...
| Раскрыть |
|---|
| title | Настройка доступа к БД в отказоустойчивой системе |
|---|
|
Настройте доступ к БД только с localhost, подсетей docker и адреса администратора при помощи любого текстового редактора в файле postgres/data/pg_hba.cluster.conf.tpl: | language | bash |
| theme | RDark |
|---|
| title | postgres/data/pg_hba.cluster.conf.tpl |
|---|
| # TYPE DATABASE | sudo docker network inspect internal | grep "Subnet"
"Subnet": "172.21.0.0/16",
sudo docker network inspect external | grep "Subnet"
"Subnet":"172.20.0.0/16"
|
Перейдите в рабочую директорию ECCM:
| Блок кода |
|---|
|
| cdeccm/2.9/ |
| Раскрыть |
|---|
| title | Настройка доступа к БД в отказоустойчивой системе |
|---|
|
Настройте доступ к БД только с localhost, с подсетей docker-а и адреса администратора при помощи любого текстового редактора в файле postgres/data/pg_hba.cluster.conf.tpl: | Блок кода |
|---|
| theme | RDark |
|---|
| title | postgres/data/pg_hba.cluster.conf.tpl |
|---|
| # TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
# "local" is for Unix domain socket connections only
local all all
local all trust all trust
# IPv4 local connections:
# IPv4 local connections:
host all all
host all all 127127.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. |
Синхронизируйте конфигурационные файлы между узлами: | Блок кода |
|---|
| 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 после перезапуска. |
|
Настройте доступ к БД только с localhost, с подсетей docker-а и адреса администратора при помощи любого текстового редактора в файле postgres/data/pg_hba.conf.tpl:
Настройка firewall
Для обеспечения большей безопасности необходимо ограничить внешние подключения к серверу ECCM.
Создайте файл iptables.sh с правилами:
| Блок кода |
|---|
|
code | | theme | RDark |
|---|
| title | postgres/data/pg_hba.conf.tpl | iptables.sh |
|---|
|
sudo iptables -P INPUT DROP# TYPE DATABASE USER ADDRESS # запрет всех входящих METHOD
# "local" is for Unix domain socket connections only
local allсоединений
sudo iptables -P FORWARD DROP all # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # trustSSH
#sudo IPv4iptables local connections:
host all -A INPUT -p tcp --dport 443 -j ACCEPT # веб-интерфейс ECCM на схеме HTTPS all- не используется для Witness
# разрешить исходящие подключения, которые инициировали мы сами
sudo 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 trust
host replication all 127.0.0.1/32 trust
host replication alliptables -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 # загрузка прошивок |
Примените правила:
| Блок кода |
|---|
|
chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы):
| Блок кода |
|---|
|
sudo apt-get install iptables-persistent
sudo netfilter-persistent save |
| Раскрыть |
|---|
| title | Настройка firewall для ECCM с БД на отдельном сервере |
|---|
|
Создайте файл iptables.sh на сервере с ECCM со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | Сервер ECCM |
|---|
| sudo iptables -P INPUT DROP | ::1/128 # запрет всех входящих соединений
sudo iptables -P FORWARD DROP | trust
#hostallall # запрет для всех проходящих через ваш | allхост соединений
sudo iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # | md5hostall-p tcp --dport 443 -j ACCEPT # веб-интерфейс ECCM | allна схеме HTTPS
# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A | <eccm_ip>/32 md5 # IP адрес ECCM приложений
host all all 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 | <admin_ip>/32 udp --dport 69 -j ACCEPT # TFTP
sudo | md5#опционально:IPадресдляудаленногоподключенияадминистраторакБД
hostalliptables -A INPUT -p udp --dport 514 -j ACCEPT | all# Syslog (UDP)
sudo iptables -A INPUT -p tcp --dport 514 -j ACCEPT | 172.21.0.0/16 md5docker network internal
host all Syslog (TCP)
sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT # | all 172.20.0.0/16 md5 # docker network external |
...
На сервере с БД создайте файл iptables.sh со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | Сервер с БД |
|---|
| sudo | ./compose-tools.sh --stop
sudo ./compose-tools.sh --https --start <IP-адрес сервера или его доменное имя> |
Настройка firewall
Для обеспечения большей безопасности необходимо ограничить внешние подключения к серверу ECCM.
| Раскрыть |
|---|
| title | Настройка firewall для ECCM с БД на отдельном сервере |
|---|
|
Создайте файл iptables.sh на сервере с ECCM со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | iptables.sh |
|---|
| sudo iptables -P INPUT DROPiptables -P INPUT DROP # запрет всех входящих соединений
sudo iptables -P FORWARD DROP # запрет для всех проходящих через # запрет всех входящихваш хост соединений
sudo iptables -P FORWARD DROP OUTPUT ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
sudo # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT
sudo iptables iptables -A INPUT -p tcp --dports 22<IP -jсервера ACCEPT # SSH
sudo iptables -A INPUT -p tcp --dport 443ECCM> --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 udptcp --s <admin_ip>/32 --dport 675432 -j ACCEPT |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod # DHCP+x iptables.sh
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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 -s <IP-адрес сервера БД> --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 |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы): | Блок кода |
|---|
| sudo apt-get install iptables-persistent
sudo netfilter-persistent save |
|
| Раскрыть |
|---|
| title | Настройка firewall для отказоустойчивой системы по стандартной схеме |
|---|
|
Создайте файл iptables.sh на узлах Master и Slave со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | Узлы Master и Slave |
|---|
| sudo iptables -P INPUT DROP # запрет всех входящих соединений
sudo iptables -P FORWARD DROP # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT
|
|
| Раскрыть |
|---|
| title | Настройка firewall для отказоустойчивой системы по стандартной схеме |
|---|
|
Создайте файл iptables.sh на узлах Master и Slave со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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
# разрешим исходящие подключения, которые инициировали мы сами
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 567122 -j ACCEPT # SSH
sudo iptables -A INPUT -p tcp -s <IP Slave> --dport 5671443 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness> --dport 5671 -j ACCEPT # веб-интерфейс ECCM на схеме HTTPS
# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -pm tcpstate -s <IP Master> --dport 4369 -j ACCEPT-state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -pi tcplo -sj <IP Slave> --dport 4369 -j ACCEPTACCEPT
# опционально: разрешить пинговать себя
sudo iptables -A INPUT -p tcpicmp -s <IP Witness> -icmp-dporttype 43698 -j ACCEPT
# опционально: доступ администратора к БД
sudo iptables -A INPUT -p tcp -s <IP Master> <admin_ip>/32 --dport 256725432 -j ACCEPT
sudo iptables -A INPUT -p tcp udp --dport 67 -sj ACCEPT <IP Slave> --dport 25672 -j# ACCEPTDHCP
sudo iptables -A INPUT -p tcpudp -s <IP Witness> --dport 2567269 -j ACCEPT
# KeepalivedTFTP
sudo iptables -A INPUT -p vrrpudp --dport 162 -j ACCEPT |
На узле Witness создайте файл iptables.sh со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | iptables.sh |
|---|
| # SNMP-трапы
sudo iptables -PA INPUT DROP-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 -P OUTPUT ACCEPT
--dport 5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness> --dport 225432 -j ACCEPT
# Redis
sudo iptables -A INPUT -p # SSH
# разрешим исходящие подключения, которые инициировали мы самиtcp -s <IP Master> --dport 6379 -j ACCEPT
sudo iptables -A INPUT -p tcp -ms <IP Slave> state --statedport ESTABLISHED,RELATED6379 -j ACCEPT
# разрешить обращения к localhostSentinel
sudo iptables -A INPUT -ip lotcp -j ACCEPT
# опционально, разрешим пинговать себяs <IP Master> --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p icmptcp -s <IP Slave> -icmp-typedport 826379 -j ACCEPT
# PostgreSQL
sudo iptables -A INPUT -p tcp -s <IP Master>Witness> --dport 543226379 -j ACCEPT
# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Slave>Master> --dport 54325671 -j ACCEPT
# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master>Slave> --dport 263795671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>Witness> --dport 263795671 -j ACCEPT
# RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master> --dport 56714369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave> --dport 56714369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>Witness> --dport 4369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>Master> --dport 436925672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master>Slave> --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave>Witness> --dport 25672 -j ACCEPT |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
# Keepalived
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы): | Блок кода |
|---|
| sudo apt-get install iptables-persistent
sudo netfilter-persistent save |
|
| Раскрыть |
|---|
| title | Настройка firewall для отказоустойчивой системы с БД на отдельном сервере |
|---|
|
A INPUT -p vrrp -j ACCEPT |
На узле Witness создайте файл iptables.sh Создайте файл iptables.sh на узлах Master-app и Slave-app со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | iptables.shУзел 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 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 udpicmp --dporticmp-type 678 -j ACCEPT
# DHCPPostgreSQL
sudo iptables -A INPUT -p udp tcp -s <IP Master> --dport 695432 -j ACCEPT # TFTP
sudo iptables -A INPUT -p udp tcp -s <IP Slave> --dport 1625432 -j ACCEPT
# SNMP-трапыSentinel
sudo iptables -A INPUT -p udp tcp -s <IP Master> --dport 51426379 -j ACCEPT # Syslog (UDP)
sudo iptables -A INPUT -p tcp -s <IP Slave> --dport 51426379 -j ACCEPT
# Syslog (TCP)RabbitMQ
sudo iptables -A INPUT -p tcp -s <IP Master> --dport 22225671 -j ACCEPT # загрузка прошивок
# Redis
sudo iptables -A INPUT -p tcp -s <IP Master-app>Slave> --dport 63795671 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app>Master> --dport 63794369 -j ACCEPT
# Sentinel
sudo iptables -A INPUT -p tcp -s <IP Master-app>Slave> --dport 263794369 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Master> Slave-app> --dport 2637925672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Witness>Slave> --dport 2637925672 -j ACCEPT |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы): | Блок кода |
|---|
| sudo apt-get install iptables-persistent
sudo netfilter-persistent save |
|
| Раскрыть |
|---|
| title | Настройка firewall для отказоустойчивой системы с БД на отдельном сервере |
|---|
|
Создайте файл iptables.sh на узлах Master-app и Slave-app со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | Узлы Master-app и Slave-app |
|---|
| sudo iptables -P INPUT DROP # запрет всех входящих соединений
sudo iptables -P FORWARD DROP # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT 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-dport <IP22 Slave-app>j ACCEPT --dport 25672 -j# ACCEPTSSH
sudo iptables -A INPUT -p tcp -s <IP Witness> --dport 25672 -j ACCEPT
# Keepalived-dport 443 -j ACCEPT # веб-интерфейс ECCM на схеме HTTPS
# разрешим исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT -m state --pstate vrrpESTABLISHED,RELATED -j ACCEPT |
На узлах Master-db и Slave-db создайте файл iptables.sh со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | iptables.sh |
|---|
|
# разрешить обращения к localhost
sudo iptables -PA INPUT DROP-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 # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT
# SNMP-трапы
sudo iptables -A INPUT -p 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 -i lo -j ACCEPT
# опционально: разрешим пинговать себяp tcp -s <IP Master-app> --dport 6379 -j ACCEPT
sudo iptables -A INPUT -p icmptcp --icmp-type 8s <IP Slave-app> --dport 6379 -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 <admin_ip>/32 <IP Witness> --dport 54325671 -j ACCEPT |
На узле Witness создайте файл iptables.sh со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | iptables.sh |
|---|
| sudo iptables -P INPUT DROP # запрет всех входящих соединений
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 -PA FORWARDINPUT DROP-p tcp -s <IP Master-app> --dport 25672 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave-app> --dport 25672 # запрет для всех проходящих через ваш хост соединений
sudo iptables -P OUTPUT ACCEPT
-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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| title | Узлы Master-db и Slave-db |
|---|
| sudo iptables -P INPUT DROP 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 ACCEPTP FORWARD DROP # запрет для всех проходящих через ваш хост соединений
sudo iptables -AP INPUT -p tcpOUTPUT ACCEPT
sudo iptables -sA <IPINPUT Slave-db>p tcp --dport 543222 -j ACCEPT # SSH
# 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 26379i lo -j ACCEPT
# RabbitMQ опционально: разрешить пинговать себя
sudo iptables -A INPUT -p tcpicmp --s <IP Master-app> --dport 5671 -j ACCEPTicmp-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 |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы): | Блок кода |
|---|
| 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 со следующими |
...
правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 - | P OUTPUTA INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT - | p tcp --dport 22i lo -j ACCEPT
# опционально: разрешить пинговать | # SSHсебя
sudo iptables -A INPUT -p | tcpdport4438 -j ACCEPT
# PostgreSQL
sudo iptables -A INPUT | # вебинтерфейсECCMнасхемеHTTPS неиспользуется для Witness
# разрешим исходящие подключения, которые инициировали мы сами--dport 5432 -j ACCEPT
sudo iptables -A INPUT - | m statep tcp -s <IP Slave-db> -- | stateESTABLISHED,RELATEDразрешить обращения к localhostSentinel
sudo iptables -A INPUT -p tcp - | ilojACCEPT
# опционально, разрешим пинговать себя --dport 26379 -j ACCEPT
sudo iptables -A INPUT -p tcp -s | icmpicmptype826379 -j ACCEPT
# RabbitMQ
sudo iptables -A INPUT -p | udp tcp -s <IP Master-app> --dport | 675671 -j ACCEPT
sudo iptables -A INPUT | # DHCP
sudo iptablesAINPUTpudp69 # TFTP
sudo iptables -A INPUT -p | udptcp -s <IP Master-app> --dport | 162 # SNMP-трапы
sudo iptables -A INPUT -p | udp tcp -s <IP Slave-app> --dport | 514 # Syslog (UDP)
sudo iptables -A INPUT -p tcp -s <IP Master-app> --dport | 514 # Syslog (TCP)
sudo iptables -A INPUT -p tcp -s <IP Slave-app> --dport | 2222 # загрузка прошивокПримените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы): | Блок кода |
|---|
| sudo apt-get install iptables-persistent
sudo netfilter-persistent save |
|
Дополнительная защита сервера
...
IP-адреса, попавшие которые попали в бан:
| Блок кода |
|---|
|
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.х.х), используйте следующую команду:
...
Чтобы разблокировать все адреса, попавшие которые попали в бан, используйте следующую команду:
...