Se nosso sistema
GNU/Linux está conectado a uma rede ou mesmo à Internet, é necessário que haja algum tipo de filtragem de pacotes. Por "filtragem de pacotes", entende-se o bloqueio ou liberação da passagem de pacotes de dados de forma seletiva, conforme eles atravessam determinada interface de rede.
Os critérios usado pelos filtros de pacotes são baseados na verificação dos cabeçalhos da
Camada de Internet e da
Camada de Transporte da pilha TCP/IP. Os critérios mais usados são endereço de origem e destino, porta de origem e destino e protocolo.
Filtragem por endereços de origem e destino
Qualquer pacote TCP/IP possui um endereço IP de origem e outro de destino associados. Ao longo do caminho percorrido pelos pacotes na rede, tais endereços permanecem intactos. A filtragem por endereços pode ser feita tanto pela origem quanto pelo destino (ou ambos), tendo como base o endereço de um host específico ou mesmo o endereço de uma rede inteira. A seguir, alguns exemplos de utilização desse tipo de filtragem:
- Controlar o acesso para algumas máquinas (endereços de origem e destino);
- Bloquear ou liberar determinados serviços somente para algumas máquinas ou redes (endereço de destino);
- Bloquear ou liberar o tráfego de pacotes provindos de determinada origem (endereço de origem);
- Evitar tentativas de "IP spoofing" (endereço de origem);
- Dificultar tentativas de ataque do tipo "Denial of Service", filtrando endereços inválidos (endereço de origem).
Filtragem por portas de origem e destino
Cada serviço de rede de um sistema possui uma porta associada a ele, pela qual é provido o acesso ao serviço. Uma listagem completa das correlações entre números de portas e serviços pode ser vista em:
Dentre todos os serviços de rede existentes, alguns são famosos por apresentarem brechas que podem ser utilizadas por atacantes. Serviços como o ftp, tftp, finger, pop e outros, muitas vezes precisam estar presentes nas regras de filtragem de pacotes.
Filtragem por protocolo
É possível também definir regras de filtragem para bloquear ou permitir tráfego de pacotes de determinado protocolo: UDP, TCP, ICMP ou RPC. Na maioria das vezes, as regras de filtragem são definidas combinando-se os conceitos de filtragem por endereço, por porta e por protocolo, de modo que seja possível definir as regras mais específicas possíveis para se atender a determinada necessidade.
Implementações de filtros de pacotes
A filtragem de pacotes pode ser implementada de maneiras diferentes. É possível definir regras de filtragem dentro de um roteador, por exemplo. Tais regras em um roteador são chamadas de "access-list" (listas de acesso).
Uma segunda abordagem para filtragem de pacotes, é fazê-la utilizando um dispositivo que chamamos de "firewall". O termo em inglês faz alusão à sua função de evitar o alastramento de dados nocivos dentro de uma rede, da mesma maneira que uma parede corta-fogo (firewall) evita o alastramento de incêndios em uma casa.
Firewalls podem ser implementados por software, por hardware ou por uma combinação de ambos. A implementação depende do tamanho da rede, da complexidade das regras permitidas e do grau de segurança desejado. Para redes de maior tráfego de dados, recomenda-se a utilização de hardware dedicado para firewall. Uma implementação por software bastante conhecida no mundo do software livre é o "iptables".