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.

[ Hits: 118.119 ]

Por: Ygor Thomaz em 06/10/2005 | Blog: http://www.ygorthomaz.net/


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.

Página anterior     Próxima página

Páginas do artigo
   1. Iniciando nas regras do iptables
   2. Entendendo os parâmetros de filtragem
   3. Terminando e referências
Outros artigos deste autor

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

Manipulando erros com try catch finally

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

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

Programação orientada a objetos e o Java (Parte 6)

Leitura recomendada

Montando regras iptables

Script de Firewall com redirecionamento de portas em Linux Debian

Controle de banda com Slackware 10 + CBQ + Iptables + DHCP

Firewall/Proxy (solução completa)

Fusion Firewall - Uma alternativa para Firewall-Proxy gerenciado via web

  
Comentários
[1] Comentário enviado por ygorth em 07/10/2005 - 07:15h

Visitem nossa comunidade:

http://www.vivaolinux.com.br/comunidades/verComunidade.php?codigo=40

:P

[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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts