Bloquear a porta 5432 do Postgres em execução no contêiner do Docker com iptables

1

Estou usando a área de trabalho do Ubuntu 14.04 (o Xubuntu para ser exato), e tentando bloquear o acesso externo a uma porta 5432 do Postgres em execução local com o iptables. Este é o meu iptables -S

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

e 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

Mas de alguma forma, um aplicativo de scanner de rede no meu Android, conectado ao mesmo wifi, ainda pode vê-lo. Posso testá-lo ainda mais com um utilitário PSQL no meu Android e, de fato, posso ver todas as minhas tabelas. O que estou perdendo?

Editar: pode valer a pena mencionar que este é o Postgres em execução em um contêiner docker. Isso pode ter algo a ver com isso.

    
por garbagecollector 25.03.2017 / 03:36

1 resposta

1

Fiz mais escavações. Isso se parece com o comportamento do Docker que modifica a cadeia FORWARD do iptables.

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

Este site descreve o problema.

Para evitar que o Docker encaminhe todo o acesso ao seu contêiner, especifique 127.0.0.1 ao executar o contêiner.

docker run -p 127.0.0.1:5432:5432 postgres

    
por 25.03.2017 / 04:00