Заблокировать порт Postgres 5432, работающий в контейнере Docker с помощью iptables

Я использую рабочий стол Ubuntu 14.04 (точнее, Xubuntu) и пытаюсь заблокировать внешний доступ к локально запущенному Postgres порт 5432 с iptables. Это мои iptables -S

-A INPUT -i lo -p tcp -m tcp --dport 5432 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 5432 -j DROP

и iptables -L :

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             anywhere             tcp dpt:postgresql
DROP       tcp  --  anywhere             anywhere             tcp dpt:postgresql

Но каким-то образом приложение сетевого сканера на моем Android, подключенное к тому же Wi-Fi, все еще может его видеть. Я могу дополнительно протестировать его с помощью утилиты PSQL на моем Android, и действительно, я могу видеть все свои таблицы. Что мне не хватает?

Изменить: возможно, стоит упомянуть, что это Postgres, работающий в контейнере докеров. Возможно, это как-то связано с этим.

1
задан 25 March 2017 в 05:03
1 ответ

Покопался еще раз.Это похоже на поведение Docker, которое изменяет цепочку iptables FORWARD.

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DOCKER-OVERLAY  all  --  anywhere             anywhere            
DOCKER-ISOLATION  all  --  anywhere             anywhere            
DOCKER     all  --  anywhere             anywhere

Chain DOCKER (2 references)
target     prot opt source               destination         
ACCEPT     tcp  --  anywhere             172.17.0.2           tcp dpt:postgresql

Этот веб-сайт описывает проблему.

Чтобы Docker не перенаправлял весь доступ к вашему контейнеру, укажите 127.0.0.1 при запуске контейнер.

docker run -p 127.0.0.1:5432:5432 postgres

1
ответ дан 3 December 2019 в 23:32

Теги

Похожие вопросы