LA facon généralle de procéder dans la sécurité informatique est de tout bloquer pûis d'ouvrir des trous quand c'est nécessaire. C'est habituellement paraphrasé par `ce qui est pas permis est défendu'. Je recommendes cette approche si la sécurité est un primeur.
Ne fais pas tourner de service dont tu n'as pas besoin, mème si tu penses avoir bloqué l'accès a eux.
Si tu crées un firewall dédié, commences par ne rien faire tourner et tout bloquer et ajoutes les services et laisses passer les paquets quand c'est nécessaire.
Je recommendes la sécurité en profondeur: combines les tcp-wrappers (pour les connections au filtre de paquets lui-mème), la verification de route et le filtrage de paquets. La verification de route c'est quand un paquet qui vient d'une interface non attendue est laissé tomber: par exemple, si un réseau interne a des adresses 10.1.1.0/24, et qu'un paquet avec cette adresse source vient sur ton interface externe, il sera laissé tomber. Ceci peut ètre activé pour une interface (ppp0) par:
# echo 1 > /proc/sys/net/ipv4/conf/ppp0/rp_filter
#
Ou pour toutes les interfaces existantes ou futures:
# for f in /proc/sys/net/ipv4/conf/*/rp_filter; do
# echo 1 > $f
# done
#
Debian fait cela par défaut quand c'est possible. Si tu utilises du routage assymétrique (pe. tu attends des paquets qui biennent de direction étranges), tu voudras désactiver cela sur ces interfaces.
Le logging est utile quand tu réalises un firewall si quelquechose ne fonctionne pas, mais sur un firewall de production, combines le avec la concordance `limit', pour eviter que quelqu'un ne satures tes logs.
Je recommendes fortement le suivi de connection sur les sysrtèmes sécurisés: il introduit un peu plus de charge, comme toutes les connections sont suivies, mais est très utile pour controller l'accès a tes réseaux. Tu devras charger le module `ip_conntrack.o' si ton noyau ne charges pas les modules automatiquement, et qu'il n'est pas compilé dans le noyau. Si tu veux suivre convenablement des protocoles complexes, tu devra charger le module de suivi aproprié (pe. `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
Construire un bon firewall est hors du sujet de ce HOWTO, mais mon conseil est de `toujours ètre minimaliste'. Voir le Security HOWTO pour plus d'informations sur comment tester ta machine.