Fail2ban est un logiciel plus que recommandé pour les administrateurs système. Celui-ci a pour objectif de bannir des adresses IP qui ont obtenu un trop grand nombre d'échecs lors de l'authentification à partir de la lecture de fichiers de logs. Il peut lire plusieurs fichiers de log comme ceux de votre serveur apache ou de sshd pour les authentifications SSH.
C'est un très bon soft mais celui-ci n'est hélas compatible qu'en IPv4. Alors pour le passer en IPv6 et garder la compatibilité IPv4, il existe un patch créé par Thanatos qui reste expérimental. Récupérons le patch sur notre serveur et appliquons-le à notre configuration :
root@server:~# cd /root root@server:~# wget https://static.crazyws.fr/resources/blog/2012/06/fail2ban-ipv6.tar.bz2 root@server:~# mkdir fail2ban-ipv6 root@server:~# tar xvjf fail2ban-ipv6.tar.bz2 -C fail2ban-ipv6
On va mettre de côté les filtres de fail2ban de notre configuration actuelle :
root@server:~# cd /usr/share/fail2ban/server root@server:~# cp filter.py filter.py.old root@server:~# cp failregex.py failregex.py.old
Testons le patch sur notre configuration :
root@server:~# cd /usr/share/fail2ban/server/ root@server:~# patch -p0 --dry-run < /root/fail2ban-ipv6/patchfilter.patch root@server:~# patch -p0 --dry-run < /root/fail2ban-ipv6/regex.patch
Si vous n'avez eu aucun message d'erreur, on va appliquer les patchs :
root@server:~# patch -p0 < /root/fail2ban-ipv6/patchfilter.patch root@server:~# patch -p0 < /root/fail2ban-ipv6/regex.patch
Et copier les fichiers nécessaires :
root@server:~# cp /root/fail2ban-ipv6/ip64tables.sh /usr/bin/ root@server:~# chmod 755 /usr/bin/ip64tables.sh root@server:~# cp /root/fail2ban-ipv6/iptables46-multiport.conf /etc/fail2ban/action.d/ root@server:~# chmod 644 /etc/fail2ban/action.d/iptables46-multiport.conf
Maintenant que le patch est appliqué, il va falloir modifier quelques règles dans votre jail. Je vais vous mettre quelques exemples :
- SSH avec le filtre sshd
- FTP avec le filtre pureftpd
- POP3 et IMAP avec le filtre dovecot-pop3imap
La configuration globale de fail2ban se trouve dans le fichier /etc/fail2ban/jail.conf et celle locale dans /etc/fail2ban/jail.local. Ici SSH se trouve normalement dans la configuration globale si vous utilisez le filtre sshd :
root@server:~# vi /etc/fail2ban/jail.conf
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6
Maintenant cela devient :
[ssh] enabled = true filter = sshd action = iptables46-multiport[name=ssh, port=ssh, protocol=tcp] logpath = /var/log/auth.log maxretry = 6
Comme vous le voyez on a simplement déplacé le port ssh (22) de la définition port vers une définition action pour utilisé le patch qui va traduire les règles IPv4 en IPv6. Pour le cas de FTP avec le filtre pureftpd, qui se trouve dans la configuration locale, vous aviez avant :
root@server:~# vi /etc/fail2ban/jail.local
[pureftpd] enabled = true port = ftp filter = pureftpd logpath = /var/log/syslog maxretry = 3
Cela devient désormais :
[pureftpd] enabled = true filter = pureftpd action = iptables46-multiport[name=pureftpd, port=ftp, protocol=tcp] logpath = /var/log/syslog maxretry = 3
Pour ceux qui ont un filtre dovecot-pop3imap dans leur configuration locale, vous aviez avant :
root@server:~# vi /etc/fail2ban/jail.local
[dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 5
Ici ça ne changera pas beaucoup, il suffira de passer par l'action iptables46-multiport :
[dovecot-pop3imap] enabled = true filter = dovecot-pop3imap action = iptables46-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp] logpath = /var/log/mail.log maxretry = 5
En jetant un oeil dans vos ip6tables vous devriez voir ces règles :
root@server:~# ip6tables -S -N fail2ban-dovecot-pop3imap -N fail2ban-pureftpd -N fail2ban-ssh -A INPUT -p tcp -m multiport --dports 22 -j fail2ban-ssh -A INPUT -p tcp -m multiport --dports 21 -j fail2ban-pureftpd -A INPUT -p tcp -m multiport --dports 110,995,143,993 -j fail2ban-dovecot-pop3imap -A fail2ban-dovecot-pop3imap -j RETURN -A fail2ban-pureftpd -j RETURN -A fail2ban-ssh -j RETURN
![]() | www.isalo.org |
MISES A JOUR DE L'ARTICLE |
Heps, il y a mieux que mon patch initial :
https://github.com/fail2ban/fail2ban/tree/_tent/ipv6_adapter_cmd
Et on cherche des testeurs...