Как настроить FirewallD для фильтрации трафика на незащищенный порт докера
Я установил контейнер док-станции и открыл порты DNS и порт 80 на CentOS7. Однако порты теперь доступны для всех источников, что не очень удобно, так как работает на VPS.
Поэтому я пытаюсь, чтобы firewallD фильтровал трафик, идущий на мой докер-контейнер.
Итак, мой докер-контейнер работает следующим образом:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
18881454da0c pihole/pihole:latest "/s6-init" 24 hours ago Up About an hour (healthy) 0.0.0.0:53->53/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:53->53/udp pihole
на firewallD я настроил следующий acl(трафик, идущий в CentOS, фильтруется этим):
sudo firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: docker0
sources:
services:
ports:
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
rule family="ipv4" source address="<home ip>/32" accept
И я установил интерфейс docker0 для зоны public:
sudo firewall-cmd --permanent --zone=public --change-interface=docker0
sudo firewall-cmd --get-active-zones
public
interfaces: docker0
Но когда я делаю сканирование портов из интернета, я все еще вижу все порты, открытые докером.
Я могу решить это с помощью команд iptables:
sudo iptables -N CUSTOM_PIHOLE
sudo iptables -A CUSTOM_PIHOLE --source <home ip> --destination 172.17.0.2 -j ACCEPT
sudo iptables -R DOCKER 1 --source 0.0.0.0/0 --destination 172.17.0.2 -j CUSTOM_PIHOLE
sudo iptables -D DOCKER 3
sudo iptables -D DOCKER 2
Но затем, когда firewallD перезагружается, эта конфигурация теряется.
Есть ли способ отфильтровать трафик в Docker-контейнер с помощью firewallD?
1 ответ
Нашел ответ. см. следующие ссылки: