Existem muitas escolas de pensamento quando se trata de firewall em nível de sistema.
Uma abordagem conservadora que geralmente é vista é usar o rastreamento de conexão para corresponder e aceitar explicitamente o tráfego de entrada RELATED ou ESTABLISHED. Todos os outros tráfegos de entrada são descartados por padrão. Regras explícitas são adicionadas conforme necessário para que vários serviços aceitem tráfego de entrada não correspondido.
O tráfego de saída não é filtrado na maioria dos cenários.
Exemplo:
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth1 -m conntrack --ctstate INVALID -j DROP
-A INPUT -i eth1 -p tcp -m tcp --dport 22 -j ACCEPT
O trecho iptables-save acima mostra uma configuração que desativa pacotes de entrada e de encaminhamento por padrão e aceita pacotes de saída por padrão. O tráfego de entrada do host local é explicitamente aceito, assim como os pacotes RELATED e ESTABLISHED (por exemplo, respostas a uma solicitação http) e todo o tráfego para a porta 22 (SSH).