Ip6tables : réglage du pare-feu Linux en ipv6
La société Winuxware dont je suis co-gérant vient de passer tous nos serveurs en IPv6 et en SSL. Nous avons rencontré d’importantes difficultés à configurer le pare-feu ip6tables présents sur nos serveurs CentOS. Je pense que ce tuto pourra vous rendre d’immenses services pour basculer vos serveurs en IPv6. Faites vite. Le grand saut est prévu le 6 juin 2012 !
Tracer les paquets
Comme je ne parvenais pas simplement à configurer le pare-feu IPv6, j’ai décidé de loguer les paquets en dissociant dans trois fichiers les paquets de type INPUT, FORWARD et OUTPUT ! Il doit sans doute y avoir beaucoup plus simple. Mais j’étais un peu pressé. Alors si vous avez plus simple, sachez que je suis preneur.
Configurer rsyslog : /etc/rsyslog.conf
Ajoutez les trois lignes suivantes dans le fichier /etc/rsyslog.conf.
#kern.* /dev/console
kern.=info /var/log/iptables-m1-input
kern.=warning /var/log/iptables-m1-output
kern.=debug /var/log/iptables-m1-forward
Configurer le fichier /etc/sysconfig/ip6tables
Vous devez loguer les paquets issus de l’activité du par-feu en remplaçant le contenu du fichier existant /etc/sysconfig/ip6tables, comme suit :
# Generated by iptables-save v1.3.5 on Sun May 8 16:45:00 2011
*filter
:FORWARD ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -j LOG –log-level info
-A OUTPUT -j LOG –log-level warning
-A FORWARD -j LOG –log-level debug
COMMIT
# Completed on Sun May 8 16:45:00 2011
Tester l’IPv6
Pour réaliser le test entre la machine m1 et la machine m2 configurées exactement de la même façon, j’ai utilisé la commande wget comme suit à partir de m1 :
-
wget http://[2a01:e0b:1:140:62eb:69ff:fe8f:1508], en http (tcp/80)
-
wget –no-check-certificate https://[2a01:e0b:1:140:62eb:69ff:fe8f:1508], en https (tcp/443)
Face à un problème incompréhensible
Les logs ne m’ont rien révélé de particulier, en dehors de la nécessité d’activer l’icmpv6 en entrée à partir d’adresses sources de type fe80::/64 et aussi en sortie à partir d’adresses destinations de type fe80::/64.
Malgré mes efforts, la configuration de mon fichier ip6tables continuait de bloquer les paquets. Il semblerait que les règles de retour explicite de paquets ne soient pas pris en compte par Netfilter au niveau IPv6 ! Autrement dit, ce sont les paramètres d’état de la connexion qui ne fonctionnent pas : -m state –state RELATED, ESTABLISHED ou -m state –state NEW.
Le contenu du fichier /etc/sysconfig/ip6tables
La configuration du pare-feu Linux en IPv6 indiquée ci-dessous correspond à celle d’un serveur Web disposant d’Apache en écoute sur les ports 80 (http) et 443 (https) et d’OpenSsh écoutant sur le 22 (ssh). Et c’est tout ! Les règles sur le Dns (udp-tcp/53) et sur le Smtp (tcp/25-465-587) ne concernent que les sorties de paquets.
J’ai limité l’icmpv6 aux adresses de liens locales.
# Generated by iptables-save v1.3.5 on Sun May 8 16:45:00 2011
*filter
:FORWARD DROP [0:0]
:INPUT DROP [0:0]
:OUTPUT DROP [0:0]
#-A INPUT –match state –state ESTABLISHED,RELATED -j ACCEPT
#-A OUTPUT –match state –state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
-A INPUT -s fe80::/64 -i eth0 -p icmpv6 -j ACCEPT
-A OUTPUT -d fe80::/64 -o eth0 -p icmpv6 -j ACCEPT
-A INPUT -p tcp -i eth0 –dport 22-j ACCEPT
-A INPUT -p tcp -i eth0 -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -i eth0 –dport 443 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –sport 22 -j ACCEPT
-A OUTPUT -p tcp -o eth0 -m tcp –sport 80 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –sport 443 -j ACCEPT
-A OUTPUT -p udp -o eth0 –dport 53 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 53 -j ACCEPT
-A INPUT -p udp -i eth0 –sport 53 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 53 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 22 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 80 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 443 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 22 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 80 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 443 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 25 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 465 -j ACCEPT
-A OUTPUT -p tcp -o eth0 –dport 587 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 25 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 465 -j ACCEPT
-A INPUT -p tcp -i eth0 –sport 587 -j ACCEPT
COMMIT
# Completed on Sun May 8 16:45:00 2011
J’attends vos observations.




Commentaires
// Begin Comments & Trackbacks ?>Pas encore de commentaire.
Laisser un commentaire