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.763 Categoria: Linux Subcategoria: Firewall
  • Indicar
  • Impressora
  • Denunciar

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.

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

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

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

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

Manipulando erros com try catch finally

Firewall profissional

Firewall com Iptables: direto ao assunto (RHEL5 e Fedora)

Um pouco sobre IPtables

Entendendo TCP/IP (Parte 6) - Firewall

Como construir um firewall de baixo custo para sua empresa (parte 3)

#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.