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: 114.068 ]

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


Iniciando nas regras do iptables



Vamos iniciar nosso estudo de construção de regras pensando na tabela filter, onde temos três chains que são: INPUT, OUTPUT e FORWARD, as quais não podem ser apagadas.

Quando o Iptables é instalado, inicialmente não haverá regras em quaisquer chains (INPUT, FORWARD e OUTPUT) e todas as chains terão a política ACCEPT. As operações para manipular as chains são:
  1. -N: Criar nova chain;
  2. -X: Apagar uma chain vazia;
  3. -P: Mudar a política de uma chain built-in(INPUT, FORWARD, OUTPUT);
  4. -L: Listar as regras de uma chain;
  5. -F: Apagar todas as regras de uma chain (-F);
  6. -Z: Zerar os contadores de pacotes e bytes de todas as regras de uma chain.

Grande parte das nossas atividades vai estar envolvida com a manipulação das regras dentro das chains:
  1. -A: Adicionar uma nova regra na chain;
  2. -I: Inserir uma nova regra em alguma posição da chain;
  3. -R: Substituir uma regra em alguma posição da chain;
  4. -D: Apagar uma regra em alguma posição da chain (-D).
  5. -D: Apagar a primeira regra que associa (com alguma condição) numa chain.

Na prática sempre estaremos usando os comandos para adicionar (-A) e apagar (-D) com muito mais freqüência que os outros. A estrutura das regras geralmente fica assim:

# iptables [-t tabela] [opção] [chain] [dados] -j [ação]

Para melhorar nosso entendimento vamos usar nossa interface loopback (127.0.0.1), para responder ao ping que vai enviar um ICMP. Façamos o seguinte:

# ping -c 1 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.080 ms

--- 127.0.0.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.080/0.080/0.080/0.000 ms

Verificamos que o ping que envia um único pacote é resolvido com sucesso. Agora vamos adicionar a seguinte regra:

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP

Através desta regra vamos fazer com que os pacotes enviados pelo ping sejam descartados. Veja que adicionamos (-A) à chain INPUT uma regra especificando que pacotes vindos de 127.0.0.1 (-s 127.0.0.1) com o protocolo ICMP (-p icmp) devem ser mandados para DROP (-j DROP).

Vamos apagar a regra de duas formas diferentes:

# iptables -D INPUT 1

Para apagar a regra número 1 na chain INPUT, nossa única regra.

Ou fazendo desta forma:

# iptables -D INPUT -s 127.0.0.1 -p icmp -j DROP

Verifique que a única mudança em relação a nossa primeira regra foi à mudança para "-D". Esta exclusão só vai funcionar se a regra estiver exatamente igual às passadas por -A (ou -I ou -R). Caso ocorra de haver mais de uma regra igual, a primeira da lista será apagada.

Outra opção interessante é incluir novamente a regra acima e entrar com o seguinte comando:

# iptables -A INPUT -s 127.0.0.1 -p icmp -j DROP
# iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination
DROP       icmp --  localhost            anywhere
...
#~: iptables -F

Veja que a regra entrada 2 foge à sintaxe citada acima. Ela mostra as regras em rigor. Já a regra três apaga todas as regras. No nosso caso temos apenas uma.

    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 4)

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

Dominando o iptables (parte 1)

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

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

Leitura recomendada

Estrutura do IPTables 2: a tabela nat

Endian Firewall - Solução completa para um servidor de internet

PFSense Firewall com Squid e SquidGuard

Iptables 1.3.4 com Layer 7 e Kernel 2.6.14 no Debian 3.1

Montando regras iptables

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts