Página seguinte Página anterior Índice

11. Conselhos no Projeto de Filtros de Pacotes

É consenso na área de segurança de computadores bloquear tudo, e então abrir os buracos necessários. Isto geralmente é dito como `o que não é explicitamente permitido é proibido'. Eu ercomendo esta abordagem se segurança é sua preocupação maior.

Não rode serviços que você não precisa, mesmo que você pensa ter bloqueado o acesso aos mesmos.

Se você está criando um firewall dedicado, comece rodando nada, e bloqueando todos os pacotes, e então acrescente serviços e deixe os pacotes irem passando conforme necessário.

Eu recomendo segurança em profundidade: combine o tcp-wrappers (para conexões ao próprio filtro de pacotes), proxies (para conexões passando pelo filtro de pacotes), verificação de rota e filtro de pacotes. A verificação de rotas é onde um pacote que vem de uma interface inesperada é descartado: por exemplo, se sua rede interna tem endereços 10.1.1.0/24, e um pacote com aquele endereço de origem vem de sua interface externa, ele será descartado. isto pode ser habilitado para uma interface (ppp0) da seguinte forma:

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

Ou para todas as interfaces existentes e futuras assim:

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

O Debian faz isto por padrão onde possível. Se você tem algum roteamento assimétrico (isto é, você espera pacotes vindo de direções estranhas), você vai querer desabilitar este filtro naquelas interfaces.

Fazer o log é útil quando estiver configurando um firewall se algo não está funcionando, mas em um firewall de produção, sempre combine isto com a seleção `limit', para evitar que alguém sobrecarregue seus logs.

Eu recomendo bastante o uso de acompanhamento de conexões (connection tracking) para sistemas seguros: é acrescentado algum overhead, e todas as conexões são acompanhadas, mas é bastante útil para controlar o acesso à suas redes. Você pode precisar carregar o módulo `ip_conntrack.o' se o seu kernel não carrega módulos automaticamente, e ele não está dentro do kernel. Se você quer acompanhar com precisão protocolos complexos, você vai precisar carregar o módulo 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 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

Montar um bom firewall está além do escopo deste HOWTO, mas meu conselho é `sempre seja minimalista'. Veja o Security HOWTO para mais informações sobre como testar e experimentar seu computador.


Página seguinte Página anterior Índice 1