Re: Iptable et DNS Local :(
David Dumortier a écrit :
Le Thu Apr 28 2005 à 11:29:34PM +0200, Pascal@plouf dit :
AMA il vaut mieux gérer explicitement les différents types de requêtes
ICMP et laisser la règle suivante s'occuper des ICMP qui sont des
réponses ou des messages d'erreur relatifs à des connexions existantes.
# ICMP
# Autorise tout en local
iptables -A INPUT -i $LAN -p icmp -j ACCEPT
iptables -A OUTPUT -o $LAN -p icmp -j ACCEPT
iptables -A FORWARD -i $LAN -o $EXT -p icmp -j ACCEPT
Je fais pareil, j'ai confiance en mon réseau. ;-)
#iptables -A FORWARD -i $EXT -o $LAN -p icmp --icmp-type source-quench -j ACCEPT
iptables -A FORWARD -i $EXT -o $LAN -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
Je suppose qu'il s'agit plutôt du type echo-reply, la réponse au ping. Si
la machine fait du NAT, il est peu courant que les requêtes de ping
soient redirigées vers le réseau local.
iptables -A INPUT -i $EXT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -i $EXT -p icmp --icmp-type host-unreachable -m limit --limit 1/s -j ACCEPT
Il manque l'indispensable time-exceeded que l'on attend notamment en
réponse à un traceroute. Et chaque type est à prendre en compte à la fois
dans INPUT et dans FORWARD.
Aussi, AMA une gestion saine des ICMP doit prendre en compte les états du
suivi de connexion :
- echo-request -> NEW
- echo-reply -> ESTABLISHED
- erreurs (destination-unreachable, source-quench, parameter-problem,
time-exceeded) -> RELATED
- le reste : inutile ou potentiellement néfaste (ex: redirect) -> DROP
# Rejète les ICMP "dangereux" vers l'extèrieur [1], [2]
# [3] pour les limites
iptables -A OUTPUT -o $EXT -p icmp --icmp-type echo-reply -m limit --limit 1/s -j ACCEPT
Euh, il ne vaudrait pas mieux limiter les echo-request dans INPUT plutôt
que les echo-reply dans OUTPUT ?
iptables -A OUTPUT -o $EXT -p icmp --icmp-type source-quench -m limit --limit 1/s -j ACCEPT
iptables -A OUTPUT -o $EXT -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
iptables -A OUTPUT -o $EXT -p icmp --icmp-type host-unreachable -m limit --limit 1/s -j ACCEPT
iptables -A OUTPUT -o $EXT -p icmp -j DROP
Pas très utile après la règle du début qui accepte tous les ICMP dans OUTPUT.
Si quelqu'un peut m'expliquer le source-quench je suis un peu feneant sur
les RFC ...
Une machine peut l'envoyer quand elle détruit un paquet ou risque de le
faire à cause par exemple d'un buffer de réception plein. Le but est de
demander à l'expéditeur de ralentir.
et le rejet (logs-fi est ma règle de "log and drop") :
iptables -A logs-fi -j REJECT --reject-with icmp-port-unreachable
Pour ma part j'aime bien moduler le type d'erreur en fonction du type de
paquet, par exemple :
- TCP -> tcp-reset
- UDP -> icmp-port-unreachable
- autre -> icmp-proto-unreachable
Le tout avec des limitations en cas de flood.
Reply to: