Página seguinte Página anterior Índice

11. Conselhos sobre o projeto de filtros de pacotes

Um desejo comum na área de segurança de computadores é bloquear tudo, e então abrir os buracos necessários. Isso pode ser chamado de "o que não está explicitamente permitido, é proíbido". Eu recomendo essa visão para uma maior segurança.

Não rode nenhum serviço desnecessário, mesmo que você ache que bloqueou o acesso aos mesmos

Se você está criando um firewall dedicado, comece sem rodar qualquer serviço, e bloqueando todos os pacotes, e então adicione serviços e vá deixando os pacotes passarem conforme necessário.

Recomendo segurança profunda: combine tcp-wrappers (para conexões na própria máquina do filtro de pacotes), proxies (para conexões que apenas passam pelo filtro de pacotes), verificação de rotas e filtragem de pacotes. Verificação de rotas é quando um pacote vem de uma interface inexperada ele é descartado: por exemplo, se a sua LAN possui endereços 10.1.1.0/24, e um pacote com essa origem vem pela sua interface externa, ele será descartado. Isso pode ser habilitado para uma interface (ppp0) conforme descrito abaixo:

# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#

Ou para todas as interfaces existentos e futuras conforme abaixo:

# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
#     echo 1 > $f
# done
# 

Debian faz isso por padrão sempre que possível. Se você tem roteamento assimétrico (exemplo, você espera pacotes vindos de locais estranhos) você vai querer desabilitar esse tipo de filtragem nessas interfaces.

Registrar (logging) é muito útil em um firewall para saber se algo não está funcionando corretamente, mas em um firewall de produção é sempre interessante utilizar o controle de limite (limit match), a fim de prevenir que alguém faça flood em seus logs.

É altamente recomendado o acompanhamento de conexões para sistemas seguros: isso provoca um pouco de overhead, uma vez que todas as conexões são acompanhadas, mas é muito útil para controlar os acessos à sua rede. Você terá de carregar o módulo `ip_conntrack.o' se seu kernel não carrega módulos automaticamente, ou ele não está compilado diretamente no kernel. Se você quer acompanhar conexões de protocolos complexos, você terá de carregar um módulo auxiliar apropriado (por exemplo, `ip_conntrack_ftp.o').

# iptables -N no-conns-from-ppp0
# iptables -A no-conns-from-ppp0 -m state --state ESTABLISHED,RELATED -j ACCEPT
# iptables -A no-conns-from-ppp0 -m state --state NEW -i ! ppp0 -j ACCEPT
# iptables -A no-conns-from-ppp0 -i ppp0 -m limit -j LOG --log-prefix "Bad packet from ppp0:"
# iptables -A no-conns-from-ppp0 -i ! ppp0 -m limit -j LOG --log-prefix "Bad packet not from ppp0:"
# iptables -A no-conns-from-ppp0 -j DROP

# iptables -A INPUT -j no-conns-from-ppp0
# iptables -A FORWARD -j no-conns-from-ppp0

Construir um bom firewall está além do escopo deste HOWTO, mas meu conselho é "sempre seja detalhista". Veja o HOWTO Segurança (Security HOWTO) para mais informações sobre como testar sua máquina.

Tradução para o Português do Brasil: Guilherme Ude Braz (guilherme@linuxplace.com.br).


Página seguinte Página anterior Índice