Página seguinte Página anterior Índice

6. Como os Pacotes Atravessam os Filtros

O kernel começa com tres listas de regras na tabela `filter'. Estas listas são chamadas de firwall chains (cadeias de firewall), ou só cadeias. As três cadeias são chamadas INPUT, OUTPUT e FORWARD (entrada, saída e repasse, respectivamente).

Para os fãs de ASCII-art, as cadeias são arranjadas assim: (Nota: este é um arranjo bastante diferente dos kernels 2.0 e 2.2!)

                           _____
Entrando                  /     \       Saindo
       -->[Decisão de]-->|FORWARD|----->
          [Roteamento]    \_____/      ^
               |                       |
               v                      ____
              ___                    /    \
             /   \                  |OUTPUT|
            |INPUT|                  \____/
             \___/                     ^
               |                       |
                ---> Processo Local ---

Os três círculos representam as três cadeias mencionadas acima. Quando um pacote atinge um círculo no diagrama, aquela cadeia é examinada para determinar o destino do pacote. Se a cadeia disser para descartar (DROP) o pacote, ele é morto ali, mas se a cadeia disser para aceitar (ACCEPT) o pacote, então ele continua no diagrama.

Uma cadeia é uma lista de regras. Cada regra diz `se o cabeçalho do pacote se parecer com isto, então é isto o que você deve fazer com o pacote'. Se a regra não combinar com o pacote, então a próxima regra na cadeia é consultada. Finalmente, se não houver mais nenhuma regra a consultar, então o kernel examina a cadeia policy (política) para deicidir o que fazer. Em um sistema seguro, esta política geralmente diz ao kernel para descartar (DROP) o pacote.

  1. Quando um pacote chega (digamos, pela placa Ethernet) o kernel primeiro examina o destino do pacote: isto é chamado de `roteamento'.
  2. Se ele está destinado a este computador, o pacote passa adiante no diagrama, para a cadeia INPUT. Se ele passar esta cadeia, qualquer processo que esteja aguardando pelo pacote o receberá.
  3. Caso contrário, se o kernel não tem o repasse habilitado, ou ele não sabe como repassar o pacote, o pacote é descartado. Se o repasse estiver habilitado, e o pacote é destinado para outra interface de rede (se você tiver outra), então o pacote vai para a cadeia FORWARD. Se ele é aceito, ele será passado adiante.
  4. Finalmente, um programa rodando no computador pode enviar pacotes de rede. Estes pacotes passam pela cadeia OUTPUT imediatamente: se ela disser para aceitar (ACCEPT), então o pacote continua para a interface de rede ele está destinado.


Página seguinte Página anterior Índice 1