Alors que les blocs libres d'adresses IPv4 se font rares, le lancement de la version 6 du protocole IP sera officiellement réalisé en juin 2012. Et certains logiciels indispensables ne sont pas encore adaptés à cette nouvelle version du protocole. C'est le cas de Fail2ban...
Mais heureusement, un patch existe ! Voyons comment le mettre en place.

fail2ban_logo.png


Ce patch est encore au stade expérimental, en particulier, il est important de ne pas activer la résolution de noms dans les logs. Consulter le billet "Protéger un serveur avec Fail2ban pour en savoir plus sur l'utilisation et la configuration de Fail2ban.

Il faut commencer par télécharger le patch à l'adresse http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2, ou sur ftp.pastoutafait.org.

On décompresse ensuite l'archive du patch et on fait un backup des fichiers filter.py et failregex.py de l'installation de Fail2ban :

mkdir fail2ban-ipv6patch
tar xjvf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6patch
cp /usr/share/fail2ban/server/filter.py /usr/share/fail2ban/server/filter.py.sos
cp /usr/share/fail2ban/server/failregex.py /usr/share/fail2ban/server/failregex.py.sos

On se rend maintenant dans le répertoire contenant les fichiers à patcher, puis on lance un test avec la commande patch sur chaque fichier :

cd /usr/share/fail2ban/server/
root@machine:/usr/share/fail2ban/server# patch -p0 --dry-run < /root/fail2ban-ipv6patch/patchfilter.patch

patching file filter.py
Hunk #1 succeeded at 525 (offset 14 lines).
Hunk #2 succeeded at 549 (offset 14 lines).
Hunk #3 succeeded at 580 (offset 14 lines).
 
root@machine:/usr/share/fail2ban/server# patch -p0 --dry-run < /root/fail2ban-ipv6patch/regex.patch

patching file failregex.py
Hunk #1 succeeded at 47 (offset 3 lines).

Si tout va bien et qu'aucune erreur n'apparaît, on lance le patch effectif :

root@machine:/usr/share/fail2ban/server# patch -p0 < /root/fail2ban-ipv6patch/patchfilter.patch

patching file filter.py
Hunk #1 succeeded at 525 (offset 14 lines).
Hunk #2 succeeded at 549 (offset 14 lines).
Hunk #3 succeeded at 580 (offset 14 lines).

root@machine:/usr/share/fail2ban/server# patch -p0 < /root/fail2ban-ipv6patch/regex.patch

patching file failregex.py
Hunk #1 succeeded at 47 (offset 3 lines).

On copie ensuite les fichiers ip64tables.sh et iptables46-multiport.conf vers les répertoires adéquats, en donnant les bonnes permissions :

cp /root/fail2ban-ipv6patch/ip64tables.sh /usr/bin/
chmod 755 /usr/bin/ip64tables.sh
cp /root/fail2ban-ipv6patch/iptables46-multiport.conf /etc/fail2ban/action.d/
chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf

Une petite modification dans votre jail.conf (ou jail.local) :

nano /etc/fail2ban/jail.conf
...
[ssh-ip6tables]
enabled = true
filter  = sshd
logpath  = /var/log/auth.log
maxretry = 6
action   = iptables46-multiport[name=SSH, port=22, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, sender=fail2ban@mail.com]
...

Et enfin on relance fail2ban et on vérifie que tout est ok :

service fail2ban restart
Restarting authentication failure monitor: fail2ban.
ip6tables -S
...
-N fail2ban-SSH
-A INPUT -p tcp -m multiport --dports 22 -j fail2ban-SSH
-A fail2ban-SSH -j RETURN

Et voilà votre Fail2ban IPv6-ready !

Source : http://www.fail2ban.org et http://www.debian-fr.org.