La façon généralle de procéder dans la sécurité informatique est
de tout bloquer puis d'ouvrir des trous quand c'est nécessaire.
C'est habituellement paraphrasé par `tout ce qui n'est pas
spécifiquement autorisé 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 vers ceux-ci.
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:
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 (p.e. tu attends des paquets qui viennent
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 connections sur les
systè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 à 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.