Por que o UFW não bloqueia as portas que foram expostas usando o docker?

8

Eu configurei algumas regras no meu ufw, mas acho que não está bloqueando nada. Este é seu status atual:

~# ufw status verbose

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22                         ALLOW IN    Anywhere
80                         ALLOW IN    Anywhere
27015:27115/udp            ALLOW IN    Anywhere
27015:27115/tcp            ALLOW IN    Anywhere
22 (v6)                    ALLOW IN    Anywhere (v6)
80 (v6)                    ALLOW IN    Anywhere (v6)
27015:27115/udp (v6)       ALLOW IN    Anywhere (v6)
27015:27115/tcp (v6)       ALLOW IN    Anywhere (v6)

Como você pode ver, está negando conexões de entrada por padrão e permitindo apenas determinadas portas. Mas ainda assim, acabei de configurar um novo serviço na porta 8083 e posso acessá-lo de fora. Por que é tão?

Usei um contêiner de docker para executar esse novo serviço, caso isso importe.

Ivan
fonte
Você pode recarregar o UFW? Você já tentou reiniciar o servidor? Existem regras no iptables? Por favor, adicioneiptables -L
Christopher Perrin
Obrigado, olhando a saída do iptables -L, descobri que o docker edita diretamente o iptables. I pode substituir isso alterando a configuração janela de encaixe
Ivan

Respostas:

6

Parece

O Docker adultera diretamente o IPTables

. É possível substituir esse comportamento adicionando --iptables = false ao daemon do Docker.

Edite / etc / default / docker e remova o comentário da linha DOCKER_OPTS:

DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --iptables=false"

O autor concluiu o seguinte:

  • O UFW não informa o estado verdadeiro do iptables (não é chocante, mas ainda assim).
  • Nunca use a opção -p (ou -P) no Docker para algo que você não deseja que seja público.
  • Ligue apenas na interface de loopback ou em um IP interno.
Ivan
fonte