Pour ajouter pure-ftpd à la liste des filtres de fail2ban il faut ajouter le contenu suivant au fichier /etc/fail2ban/jail.conf en utilisant votre éditeur de texte préféré.
[pure-ftpd]
enabled = true
port = ftp,ftp-data,ftps,ftps-data
filter = pure-ftpd
logpath = /var/log/messages
maxretry = 3
Traduction : On active le filtre pure-ftpd qui va bannir sur les ports ftp,ftp-data,ftps,ftps-data les adresses IP ayant effectuer plus de trois tentatives infructueuses de login grâce au log /var/log/messages.
On vérifie que le ficher /etc/fail2ban/filter.d/pure-ftpd.conf existe, si ce n'est pas le cas le crée et ajouter le contenu suivant (un grand merci à Cyril Jaquier et Yaroslav Halchenko pour leurs contributions).
# Fail2Ban configuration file
#
# Author: Cyril Jaquier
# Modified: Yaroslav Halchenko for pure-ftpd
#
# $Revision: 3$
#
[Definition]
# Error message specified in multiple languages
__errmsg = (?:Authentication failed for user|Erreur d'authentification pour l'utilisateur)
#
# Option: failregex
# Notes.: regex to match the password failures messages in the logfile. The
# host must be matched by a group named "host". The tag "<HOST>" can
# be used for standard IP/hostname matching and is only an alias for
# (?:::f{4,6}:)?(?P<host>\S+)
# Values: TEXT
#
failregex = pure-ftpd(?:\[\d+\])?: (.+?@<HOST>) \[WARNING\] %(__errmsg)s \[.+\]$
# Option: ignoreregex
# Notes.: regex to ignore. If this regex matches, the line is ignored.
# Values: TEXT
#
ignoreregex =
Et enfin on redémarre fail2ban :
/etc/init.d/fail2ban restart
Il ne reste plus qu'à tester que cela fonctionne bien depuis une autre machine avec un login inexistant.
petitchevalroux@home:~# tail -f /var/log/fail2ban.log
2008-10-02 19:45:59,816 fail2ban.jail : INFO Jail 'pure-ftpd' started
2008-10-02 19:46:00,836 fail2ban.actions: WARNING [pure-ftpd] Ban 192.168.X.Y
2008-10-02 19:56:00,852 fail2ban.actions: WARNING [pure-ftpd] Unban 192.168.X.Y
On voit bien dans ce log que la machine 192.168.X.Y est bannie puis libérée.
Image : Marksweb