Como utilizar o UFW bloqueando as portas publicadas da janela de encaixe

2

Pode parecer uma pergunta boba, mas estou tentando fazer com que o seguinte funcione:

  • Eu tenho um UFW configurado corretamente para permitir apenas o acesso de determinados IPs de origem ao meu serviço local
  • depois de migrar este serviço para um contêiner docker com uma porta publicada, a porta é publicamente publicada

Assim, cada host pode acessar a porta publicada de qualquer lugar.

Como posso restringir o acesso via UFW a essa porta docker publicada?

A porta específica que este serviço está usando é 3333 .

Eu tentei fazê-lo funcionar usando -p 127.0.0.1:3333:3333 para vincular a porta ao localhost. Mas eu precisaria de um proxy para ir da porta pública restrita ao UFW para localhost:3333 . Eu também tentei usar o iptables -j REDIRECT , mas não consegui fazê-lo funcionar.

Portanto, não é um problema do contêiner restringir o acesso ao exterior, pois ele está fora do contêiner.

Gostaria de manter minha configuração atual do UFW com listas de permissões explícitas para o serviço Dockerized.

    
por Gekkie 04.11.2014 / 12:48

2 respostas

2

Eu descobri uma solução melhor e mais consistente antes da nova solução iptables do docker vir em 1.5 +.

Por não usar a cadeia FORWARD , mas outra que as regras são manipuladas antes que a janela de encaixe altere as cadeias de iptables e, portanto, sobreviverá às reinicializações do contêiner do Docker. Se alguém precisar: isso resolveu meu problema de ter regras de iptable personalizadas e docker em um host:

iptables -I PREROUTING 1 -t mangle ! -s [SOURCEIP_TO_ALLOW] -p tcp --dport [PORT] -j ACCEPT
iptables -I PREROUTING 2 -t mangle -p tcp --dport [PORT] -j DROP

O truque é o PREROUTING e o passo mangle. Desta forma eu posso permitir de SOURCEIP_TO_ALLOW em PORT no host e não permitir que outros entrem ...!

    
por 23.12.2014 / 14:19
0

Você tem três opções para publicar / expor portas do docker:

  • Nem especificar EXPOSE nem -p significa que o serviço no contêiner estará acessível apenas dentro do próprio contêiner.
  • Especifique EXPOSE e -p o serviço no contêiner é acessível de qualquer lugar.
  • Especifique apenas EXPOSE. O serviço não está acessível fora da janela de encaixe, mas apenas entre contêineres de encaixe para comunicação interna do contêiner.

Caso você tenha um firewall no host que bloqueia todas as conexões de entrada para a porta 3333, mas gostaria de ter acesso mundial, você pode usar o UFW para abrir a porta ou abrir a porta para hosts de origem especificados como este:

  • ufw allow 3333 - isso abrirá a porta 3333 para conexões TCP e UDP de qualquer origem.
  • ufw permite a partir de 1.2.3.4 para qualquer porta 3333 - isso permitirá o acesso apenas do IP de origem 1.2.3.4 para qualquer IP em seu host para a porta 3333.

Note que você também pode especificar o protocolo a ser usado com o proto, caso contrário o ufw abrirá para o tcp e o udp.

    
por 13.11.2014 / 13:48

Tags