Pular para o conteúdo

Dominando o Iptables (parte 2)

No artigo anterior entendemos como as regras de firewall são tratadas no kernel, criando uma base mais sólida para a compreensão real do Iptables. Agora vamos começar a entender como construí-las em nossos scripts.
Ygor Thomaz ygorth
Hits: 119.772 Categoria: Linux Subcategoria: Firewall
  • Indicar
  • Impressora
  • Denunciar

Parte 2: Entendendo os parâmetros de filtragem

Como vimos anteriormente, usamos dois parâmetros para a filtragem dos pacotes, foram eles: "-p" para especificar o protocolo utilizado e "-s" para especificar o endereço de origem. No manual do Iptables temos uma longa versão desta parte, que vou reduzir para facilitar a leitura, dividindo em tópicos, fazendo uma pequena descrição e incluindo uma regra exemplo para melhorar o entendimento:

Endereços


Usamos dois parâmetros diferentes para especificar o endereço origem e o endereço destino. São eles:
  • -s, --source, --src: Origem;
  • -d, --destination, --dst: Destino.

É muito importante conhecer as características de manipulação de valores aceitos pra estes parâmetros. Veja abaixo:

# iptables -A FORWARD -s 10.38.11.10 -d 10.38.5.100 -j DROP

Os pacotes de origem em 10.38.11.10 destinados a 10.38.5.100 serão descartados.

# iptables -A FORWARD -s 10.38.11.0/24 -d 10.38.5.100 -j DROP

Os pacotes de origem em 10.38.11.0 ate 10.38.11.255 destinados a 10.38.5.100 serão descartados. Podemos usar valores também como www.microsoft.com, localhost e etc nas nossas regras, veja abaixo.

# iptables -A FORWARD -d ! www.microsoft.com.br -j ACCEPT

Nesta regra usamos o "!" para realizar uma inversão desta forma todos os endereços estão liberados apenas o site da Microsoft estará proibido.

Protocolos


Usamos o parâmetro '-p' (ou `--protocol') para especificar o protocolo envolvido. Como exemplo temos: `TCP', `UDP' ou `ICMP', neste caso não faz diferença digitar 'UDP' ou 'udp'. Os protocolos podem ser especificados também pelo seu número, que você encontra em /etc/protocols. Vejamos:

# iptables -A FORWARD -p tcp --dport 80 -j DROP

Nesta regra temos que os pacotes relacionados com o protocolo 'tcp' e destinados à porta 80 devem ser descartados. Não se preocupe com o parâmetro '--dport'. No futuro iremos tratar dele com mais detalhes. Esta regra é muito útil quando usamos um Squid, por exemplo, para impedir que usuário acesse websites sem a configuração de proxy, obrigando ele ir pela porta 3128 (padrão) do Squid para ter acesso a websites. Veja minha dica em relação a isso com mais detalhes neste link:

Interfaces


Usamos dois parâmetros para manipular o fluxo dos dados pelas interfaces (eth0, eth1, etc) são eles:
  • -i, --in-interface: interface por onde os pacotes vieram;
  • -o, --out-interface: interface por onde os pacotes estão saindo.

O -i não pode ser utilizado com a chain OUTPUT, assim como -o não pode ser utilizado com a chain INPUT. Apenas pacotes passando pela chain FORWARD têm interfaces de entrada e saída. Vejamos:

# iptables -A FORWARD -i ! eth0 -j DROP

Nesta regra temos que os pacotes que entram pela interface eth0 serão aceitos, o mesmo não vai acontecer com todas as outras interfaces. Fiquem atentos à inversão "!". Quando queremos criar regras do Iptables para interfaces que ainda não existem, como a ppp0, fazemos da mesma forma como para as existentes, sendo que as regras só começarão a funcionar quando a interface existir. Podemos também usar a opção eth+ para aplicar as regras em todas as interfaces com uma única linha de código:

# iptables -A FORWARD -i eth+ -j DROP

Nesta regra todos os pacotes que entram pelas interfaces, eth0, eth1, eth2 e etc serão negados.

Inversão



Muitas flags podem ter seus argumentos precedidos de "!" para associar-se com partes diferentes aos passados na opção. É interessante compreender bem o uso do "!" pois, na prática, ele é bastante usado. Para evitar dúvidas na compreensão de scripts firewall grandes, sempre comente seu código, pois detalhes assim podem confundir outro administrador de redes mais desatento.

   1. Iniciando nas regras do iptables
   2. Entendendo os parâmetros de filtragem
   3. Terminando e referências

Programação orientada a objetos e o Java (parte 7)

Programação orientada a objetos e o Java (parte 3)

Programação orientada a objetos e o Java (parte 4)

Manipulando erros com try catch finally

Programação orientada a objetos e o Java (parte 5)

Integrando Layer7 + IPP2P ao Iptables

Configurando firewall Shorewall no CentOS

Análise da distribuição Mandrake Security

L7-filter (funcionando) no Slackware 10.2

Balanceamento de link + redundância

#2 Comentário enviado por removido em 07/10/2005 - 08:12h
Mas vale ressaltar se você bloquear o ping tanto na resposta como no envio e estiver usando Oracle ou outras BDs você perde conexão.. pq ?

Pois de tempo em tempo os banco se comunicam por um HELLO entre as maquinas no que resulta ICMP's ou mesmo um PING.
#3 Comentário enviado por ygorth em 07/10/2005 - 09:50h
Se essa informacao realmente for real e voce conseguir mais detalhes daria uma boa dica, os DBAs e Adm. de Rede agradecem :p
#4 Comentário enviado por fchevitarese em 07/10/2005 - 11:52h
kra.. legal... manda o link da primeira parte pq eu perdi o fio da miada!!! abraços
#5 Comentário enviado por removido em 08/10/2005 - 09:39h
Não sei se você esta tirando sarro de mim ou não... mas é sim cara se você bloquear o PING em uma maquina de DB.. é certo que seu banco para de responder as requisições.

Abraços
#6 Comentário enviado por ygorth em 08/10/2005 - 12:28h
Void,

desculpe se me entendeu mal. Estava falando
serio, mas estava na duvida.
#7 Comentário enviado por removido em 10/10/2005 - 02:49h
Mais um artigo escrito ou melhor rescrito, no que já existe..

Nada melhor do que o man iptables
#8 Comentário enviado por guri em 10/10/2005 - 16:21h
kra tanto o primeiro quanto esse segundo artigo foram bastantes interessantes. De uma forma resumida vc mostrou como funciona muita coisa no iptables.
#9 Comentário enviado por removido em 24/11/2005 - 15:55h
Agora sim eu entendi como o iptables funciona!
Muito obrigado.
#10 Comentário enviado por removido em 20/02/2006 - 15:03h
Bom artigo, parabéns
#11 Comentário enviado por guesser em 18/08/2006 - 22:32h

Quero parabenizar o Ygor pelo excelente artigo, nota 10 muito bom!!!

#12 Comentário enviado por math em 25/08/2006 - 12:32h
Parabéns pelo artigo.
bem q vc poderia fazer uma 3º parte.
#13 Comentário enviado por aps167 em 11/02/2008 - 19:53h
excelente ..excelente ...excelente é só o qu tenho a dizer.

Queremos a 3º parte !!!
Queremos a 3º parte !!!
Queremos a 3º parte !!!
Queremos a 3º parte !!!


Breve ..breve ..breve !!!!
#14 Comentário enviado por rjdiniz em 06/11/2010 - 19:43h
Ygor; Como já havia comentado na 1a. parte, gostei muito, você usa uma linguagem clara e fácil, agora esta devendo um ".conf" de um FireWall, seu em uso e funcional, abordando inclusive a Conectividade da Caixa Econômica Federal, e FTP passivo!

Contribuir com comentário

Entre na sua conta para comentar.