[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: