Закрываем порты docker контейнеров в iptables.
Обновление правил при перезагрузке сервера.
Файл
/usr/local/etc/iptables-docker-refresh.sh
#!/bin/bash
iptables -N DOCKER-USER
iptables -I FORWARD -j DOCKER-USER
iptables -A DOCKER-USER -j RETURN
# очистим таблицу
iptables -F DOCKER-USER
# разрешим исходящие от докера и ответы на них снаружи
iptables -A DOCKER-USER -i docker0 -j RETURN
iptables -A DOCKER-USER -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
# разрешаем dns-запросы
# ДНС запрос от клиента к серверу уходит на 53 порт, ответ от сервера к клиенту с 53 порта,
# но возвращается к клиенту на один из портов в диапазоне 1024:65535
iptables -A DOCKER-USER -p udp --dport 53 -j ACCEPT
iptables -A DOCKER-USER -p udp --sport 53 --dport 1024:65535 -j ACCEPT
# откроем доступ к селеноиду только из внутренней сети
iptables -A DOCKER-USER -o docker0 -s 172.16.82.0/24 -p tcp --dport 4444 -j RETURN
iptables -A DOCKER-USER -o docker0 -s 172.16.82.0/24 -p tcp --dport 8080 -j RETURN
#откроем порт 9699 только для одного IP 1.2.3.4
iptables -A DOCKER-USER -s 1.2.3.4 -p tcp --dport 9699 -j RETURN
iptables -A DOCKER-USER -d 1.2.3.4 -p tcp --sport 9699 -j RETURN
# запретим все
iptables -A DOCKER-USER -j REJECT
Подключаем автозагрузку скрипта
Файл
/etc/systemd/system/iptables-docker-refresh.service
[Unit]
Description=Service script of adding custom rules for filtering of network traffic
Requires=network.target docker.service
After=docker.service
[Service]
ExecStart=/usr/local/etc/iptables-docker-refresh.sh
ExecReload=/usr/local/etc/iptables-docker-refresh.sh
Restart=/usr/local/etc/iptables-docker-refresh.sh
Type=oneshot
RemainAfterExit=yes
User=root
[Install]
WantedBy=multi-user.target
Проверяем сервис и включаем автозапуск
systemctl daemon-reload
systemctl start iptables-docker-refresh
systemctl status iptables-docker-refresh
systemctl enable iptables-docker-refresh.service
- 19.11.2022
- 506 просмотров
Добавить комментарий
Может быть интересно