Página seguinte Página anterior Índice

6. Como os pacotes passam pelos filtros

O kernel começa com três listas de regras na tabela `filter'; tais listas são denominadas firewall chains ou apenas chains. As três chains chamam-se INPUT, OUTPUT e FORWARD.

Para os fãs de ASCII-art, as chains estão organizadas da seguinte forma: (Nota: é uma organização bem distinta dos kernels 2.0 e 2.2!)

                          _____
Entrada                  /     \         Saída
      -->[Decisão de]-->|FORWARD|------->
         [Roteamento]    \_____/        ^
               |                        |
               v                       ____
              ___                     /    \
             /   \                  |OUTPUT|
            |INPUT|                  \____/
             \___/                      ^
               |                        |
               --> Processamento Local --

Os três "círculos" representam as chains mencionadas acima. Quando o pacote atinge um círculo no diagrama, a chain é examinada a fim de decidir o destino do pacote. Se a chain diz para rejeitar (DROP) o pacote, ele é descartado, mas se a chain diz para aceitar o pacote (ACCEPT), ele continua a viajar no diagrama.

Uma chain é uma lista de regras. Cada regra diz `se o cabeçalho do pacote se parece com isso, então aqui está o que deve ser feito com o pacote'. Se a regra não associa-se com o pacote, então a próxima regra na chain é consultada. Se não há mais regras a consultar, o kernel analiza a política da chain para decidir o que fazer. Em um sistema preocupado com segurança, a política diz ao kernel para rejeitar (DROP) o pacote.

  1. Quando o pacote chega (pela placa Ethernet, por exemplo) o kernel analiza o destino do pacote: isso é chamado roteamento (routing).
  2. Se ele é destinado a própria máquina, o pacote desce no diagrama, indo para a chain INPUT. Se ele passar pela chain INPUT, então a máquina recebe o pacote.
  3. Depois, se o kernel não tem suporte a forwarding, ou não sabe como repassar (forward) o pacote, este é descartado. Se há suporte a forwarding e o pacote é destinado a outra interface de rede (se você possui outra), o pacote vai para a chain FORWARD. Se ele for aceito (ACCEPT), ele será enviado.
  4. Finalmente, um programa rodando na máquina firewall pode enviar pacotes. Esses pacotes passam pela chain OUTPUT imediatamente: se ela aceitar o pacote, ele continua seu caminho, caso contrários ele é descartado.


Página seguinte Página anterior Índice