...
Настройка PostgreSQL позволяет ограничить доступ нежелательных пользователей к базе данных при запуске ECCM с базой данных в отказоустойчивой системе, или когда база данных находится на отдельном сервере или в отказоустойчивой системе.
| Подсказка |
|---|
При поднятии Когда ECCM и базы база данных — на одном сервере, настройка подключений не требуется. По умолчанию контейнер с базой данных при выбранной инсталляции изолирован и недоступен из внешней сети. |
| Раскрыть |
|---|
| 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 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. |
Синхронизируйте конфигурационные файлы между узлами: | Блок кода |
|---|
| 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
...
с
...
правилами:
| Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 - не используется для 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 со следующими правилами |
Примените правила:
| Блок кода |
|---|
|
|
| title | Сервер с БД |
sudochmod +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 # запрет всех входящих соединений
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 |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту 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 # 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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту 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
# загрузка прошивок
# 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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 |
Примените правила на каждом сервере: | Блок кода |
|---|
| chmod +x iptables.sh
sudo ./iptables.sh |
Для того чтобы правила сохранились после перезагрузки, можно использовать утилиту iptables-persistent (или любые другие доступные методы): | Блок кода |
|---|
| 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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 |
Примените правила на каждом сервере: | Блок кода |
|---|
| 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
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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 со следующими правилами: | Блок кода |
|---|
| language | bash |
|---|
| theme | RDark |
|---|
| 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 |
Примените правила на каждом сервере: | Блок кода |
|---|
| 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
iptables -P OUTPUT ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
# разрешить исходящие подключения, которые инициировали мы сами
sudo iptables -A INPUT - | ptcpdport22ESTABLISHED,RELATED -j ACCEPT
# разрешить обращения к localhost
sudo iptables -A INPUT -i lo -j ACCEPT
# | SSH опционально: разрешить пинговать себя
sudo iptables -A INPUT -p | tcpdport4438 -j ACCEPT
# PostgreSQL
sudo iptables -A | #вебинтерфейсECCMнасхемеHTTPS неиспользуетсядля Witness
# разрешим исходящие подключения, которые инициировали мы сами5432 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <IP Slave- | mstatestateESTABLISHED,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 | 67 # DHCP-p udp-p tcp -s <IP Slave-app> --dport | 69 # TFTP
sudo iptables -A INPUT -p | udp tcp -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.х.х), используйте следующую команду:
...
Чтобы разблокировать все адреса, попавшие которые попали в бан, используйте следующую команду:
...