Ip6tables : réglage du pare-feu Linux en ipv6
Début février 2012, je passais en IPv6 et en SSL tous les serveurs Web que j’administre sur Internet . J’ai rencontré d’importantes difficultés à configurer le pare-feu ip6tables présents sur les serveurs CentOS. Je pense que ce tuto pourra vous rendre d’immenses services pour basculer vos serveurs en IPv6. Faites vite. Le grand saut, souvenez-vous, c’était 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 :
*filter
:FORWARD ACCEPT [0:0]
#Blocage paquets entrants
:INPUT DROP [0:0]
:OUTPUT ACCEPT [0:0]
#Retour
-A INPUT –match state –state ESTABLISHED,RELATED -j ACCEPT
#Loopback
-A INPUT -i lo -j ACCEPT
#Multicast
-A INPUT -s ff00::/8 -i eth0 -j ACCEPT
#Lien local
-A INPUT -s fe80::/10 -i eth0 -j ACCEPT
#Icmpv6
-A INPUT -i eth0 -p icmpv6 -j ACCEPT
#-A INPUT -i eth0 -p ipv6-icmp -j ACCEPT
-A INPUT -p icmpv6 –icmpv6-type echo-request -j ACCEPT -m limit –limit 1/minute
#Ipsec
#-A INPUT -i eth0 -p 50 -j ACCEPT
#-A INPUT -i eth0 -p 51 -j ACCEPT
#Ssh
-A INPUT -p tcp -i eth0 –dport 22 -j ACCEPT
#Http, Https
-A INPUT -p tcp -i eth0 -m tcp –dport 80 -j ACCEPT
-A INPUT -p tcp -i eth0 –dport 443 -j ACCEPT
-A INPUT -j REJECT –reject-with icmp6-adm-prohibited
COMMIT
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)
Ce billet a été initialement publié le 9 février 2012 et il comprenait de nombreuses erreurs !