Informática Numaboa - Linux
Filtragem de pacotes no Linux 2.4
Qui 26 Abr 2007 17:47 |
- Detalhes
- Categoria: Como fazer configurações
- Atualização: Quinta, 01 Janeiro 2009 03:06
- Autor: vovó Vicki
- Acessos: 10244
Sugestões para o planejamento de filtros de pacotes
No campo de batalha da segurança de computadores, o princípio mais sábio é bloquear tudo - depois pode-se abrir as passagens necessárias. Para isto existe uma frase:
Esta abordagem é altamente recomendada se a sua preocupação maior for com a segurança.
Não ponha no ar serviços que não são usados, mesmo quando você achar que o acesso a eles tenha sido bloqueado - serviço morto não dá bandeira, não recebe e não fornece informações
Se você está criando um firewall dedicado, comece com tudo fora do ar e com todos os pacotes bloqueados. Depois, adicione os serviços desejados e deixe passar os pacotes necessários.
Recomendo segurança máxima: combine tcp-wrappers (para conexões com o próprio filtro de pacotes), proxies (para conexões que passam pelo filtro de pacotes), verificação de rotas e filtragem de pacotes. É na verificação de rota que um pacote vindo de uma interface inesperada é descartado. Por exemplo, se o endereço da sua rede interna é 10.1.1.0/24 e um pacote com este endereço de origem aparecer na sua interface externa, ele será descartado. Isto pode ser configurado para uma interface (ppp0) da seguinte maneira:
# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter #
Ou, para todas as interfaces existentes e futuras, deste modo:
# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do # echo 1 > $f # done #
O Debian, onde é possível, faz isto por default. Se você tem roteamento assimétrico (isto é, espera que os pacotes entrem vindos de direções estranhas), pode querer desabilitar esta filtragem nestas interfaces.
Fazer arquivos de log durante a preparação de um firewall é muito útil para esclarecer alguns pontos quando a coisa não está funcionando como se quer. Num firewall em plena atividade (firewall de produção), combine sempre o log com o 'limit' para prevenir que alguém inunde seus logs.
O rastreamento de conexões (connection tracking) é altamente recomendado para sistemas seguros: ele acarreta alguma sobrecarga, porque todas as conexões são rastreadas, mas é muito útil para controlar os acessos feitos nas suas redes. Será preciso carregar o módulo 'ip_conntrack.o' se seu kernel não carrega módulos automaticamente e o módulo não estiver no kernel. Se você quiser rastrear com precisão protocolos complexos, também será preciso carregar o módulo de ajuda apropriado (por exemplo, o '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
Criar um bom firewall foge do escopo deste tutorial, mas recomendo ser 'sempre minimalista'.
Referências
Texto de Rusty Russel sob licença GNU GPL com tradução livre da vovó
- Linux 2.4 Packet Filtering HOWTO de Rusty Russel, Revisão 1.26 de 24.01.2002
- RFC 791
- << Anterior
- Próximo