Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Cover image for Configurando firewall com Docker
Filipe Câncio
Filipe Câncio

Posted on

Configurando firewall com Docker

Neste post usaremos o iptables para configurar firewalls usando containers dockers.
O iptables é uma ferramenta para configurar firewalls e Nat disponível para dispositivos linux. Dentre as variadas funcionalidades, iremos configurar aqui no projeto o acesso de um container docker com outro. Para isso, precisaremos duas imagens docker: afilipecancio/kali-iptables e afilipecancio/server-iptables. Vamos fazer o pull das duas.

docker pull filipecancio/kali-iptablesdocker pull filipecancio/server-iptables
Enter fullscreen modeExit fullscreen mode

Criaremos então um máquina com o nomeserver com o server-iptables e outraclient com o kali linux:

# Criando a maquina serverdocker run-it--rm--cap-add=NET_ADMIN--cap-add=NET_RAW-d-p 8080:8080--name server filipecancio/server-iptables# Criando a maquina clientdocker run--name client--cap-add=NET_ADMIN--cap-add=NET_RAW-i-t filipecancio/kali-iptables bash
Enter fullscreen modeExit fullscreen mode

A máquinaserver não foi executada automaticamente pelo bash pois ela é uma aplicação nodeJS rodando em uma máquina alpine, então usaremos o comando abaixo para acessá-lo (o mesmo comando pode ser usado para acessar oclient posteriormente.

dockerexec-it--user root server sh# caso queira acessar novamente o client via bashdockerexec-it client /bin/bash
Enter fullscreen modeExit fullscreen mode

Note que usaremos a flag--user root para poder fazer as alterações de root na maquina

Se você usar o navegador com endereçolocalhost:8080 poderá ver a página inicial da aplicação com informações em JSON, se você acessar alocalhost:8080/pikachu verá informações do pokemon pikachu vindas dehttps://pokeapi.co/. Mas não faremos interações com a máquina física nesse post. Por padrão o docker possui configurações de iptables que permitem criações de containers seguros. os comandos acima possuem algumas flags que modificam algumas regras internas do docker:

  • -p 8080:80 libera a porta 80 na porta 8080 da maquina física
  • --cap-add=NET_ADMIN --cap-add=NET_RAW permite que usemos o container como um servidor e configuremos suas próprias regras de firewall.Para simplificar o estudo do iptables nesse post, não iremos fazer configurações avançadas com o docker, apenas as interações simples da máquinaclient com aserver.

Bloqueio de ping

Vamos identificar os ips das máquinas, para isso, com o bash das duas máquinas ligadas vamos digitar o comandoifconfig e pegar os ips no trecho inet. De modo respectivo vamo supor que temos os seguintes ips:

  • client:172.17.0.3
  • server:172.17.0.2

Vamos testar o ping do client para o servidor:

ping 172.17.0.2
Enter fullscreen modeExit fullscreen mode

Ele irá normalmente pegar o ping deserver.

Com isso vamos adicionar nossa primeira regra emserver:

iptables-I INPUT-p ICMP-j DROP
Enter fullscreen modeExit fullscreen mode

Instantaneamente o ping para. Se excluimos a mesma regra com o comando abaixo, automaticamente o ping volta.

iptables-D INPUT-p ICMP-j DROP
Enter fullscreen modeExit fullscreen mode

Se usamos a flag REJECT ao inves de DROP o ping sera recusado.

iptables-I INPUT-p ICMP-j REJECT
Enter fullscreen modeExit fullscreen mode

Bloqueio de TCP

Usando a ferramenta curl podemos acessar a máquinaserver via http com o comando GET:

curl-X GET"172.17.0.2:8080"
Enter fullscreen modeExit fullscreen mode

Ele irá apresentar um html semelhante ao visto nolocalhost:8080. Para bloquear o acesso para client, usaremos seguinte comando emserver:

iptables-I INPUT-p TCP-s 172.17.0.3-j DROP
Enter fullscreen modeExit fullscreen mode

Ao tentarmos novamente acessar o endereço172.17.0.2:80 emclient, não temos acesso. Para remover a regra basta executar o comando abaixo:

iptables-D INPUT-p TCP-s 172.17.0.3-j DROP
Enter fullscreen modeExit fullscreen mode

Bloqueando o ip do site

Lembra que o endereçolocalhost:8080/pikachu levava à um json com informações detalhadas do pikachu via PokeApi? vamos bloquear o acesso ao ip da PokeApi agora. Digite comando abaixo:

curl-X GET"172.17.0.2:8080/pikachu"
Enter fullscreen modeExit fullscreen mode

Você verá todas as informações em json do pikachu. Considerando o ip172.64.201.27 e172.64.200.27 para o sitehttps://pokeapi.co/. Agora ao tentar novamente, ele irá rejeitar a conexão, mas o172.17.0.2:8080 funcionará normalmente.

iptables-I INPUT-p TCP-s 172.64.201.27-j REJECTiptables-I INPUT-p TCP-s 172.64.200.27-j REJECT
Enter fullscreen modeExit fullscreen mode

para desfazer as regras basta digitar os seguintes comandos:

iptables-D INPUT-p TCP-s 172.64.201.27-j REJECTiptables-D INPUT-p TCP-s 172.64.200.27-j REJECT
Enter fullscreen modeExit fullscreen mode

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

  • Location
    São Paulo - Brazil
  • Pronouns
    He/Him
  • Work
    Desenvolvedor Full-stack at cancio
  • Joined

More fromFilipe Câncio

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp