ProFTPd, Fail2ban, locales

linux

Fail2Ban, qu’on ne présente plus, est un outil bien utile.
Encore faut-il que les regex soit bien configurées, et que les services (tels que ProFTPd) sortent un log qui est interprétable par ProFTPd.

Il m’est arrivé de détecter que fail2ban ne faisait pas bien son job avec proftpd.
En effet, un log comme suit :

déc. 08 04:26:16 xxx.sn4ky.net proftpd[20043] 127.0.0.1 (174.133.xxx.xxx[174.133.xxx.xxx]): USER Administrator: no such user found from 174.133.xxx.xxx [174.133.xxx.xxx] to 217.174.xxx.xxx:21

n’est pas correctement interprété par fail2ban (fail2ban ne parvient pas à « lire » le format de la date – date dont il se sert afin de déterminer la fréquence des tentatives de connexions).

Ceci n’est pas un problème d’une regex mal configurée, comme on peut le voir en utilisant l’outil fail2ban-regex (qui permet de valider le bon fonctionnement d’un filtre dans /etc/filter.d/profptd.conf) :

fail2ban-regex /var/log/proftpd/proftpd.logbak /etc/fail2ban/filter.d/proftpd.conf
Found a match for 'd xxx.sn4ky.net proftpd[20043] 127.0.0.1 (174.133.xxx.xxx[174.133.xxx.xxx]): USER Administrator: no such user found from 174.133.xxx.xxx[174.133.xxx.xxx] to 217.174.xxx.xxx:21
' but no valid date/time found for 'éc. 08 04:26:16'. Please contact the author in order to get support for this format

Il apparaît que le démon proftpd démarre en utilisant la valeur de la variable d’environnement LANG, définie par la locale par défaut utilisée sur le système au moment du démarrage de celui-ci :

# echo $LANG
fr_FR@euro

Une solution permet de contourner ce problème, modifier les locales afin d’utiliser un environnement en Anglais, qui serai reconnu correctement par proftpd.
MAIS, je n’aime pas trop cette solution (bien qu’efficace, changer sa locale par défaut peut parfois causer des soucis).

Une autre solution, beaucoup plus « soft » m’es venue à l’esprit :
On va tout d’abord ajouter une locale à notre système :

# dpkg-reconfigure locales

(on va ajouter une locale en anglais, par exemple en_US.UTF-8 – universelle en plus)
On ne change pas la locale par défaut, par contre, on va éditer le fichier /etc/default/proftpd.conf et y rajouter la ligne suivante :

export LANG=en_US.UTF-8

Par la suite, il ne reste plus qu’à redémarrer proftpd, puis constater, dans les logs :

déc. 10 01:50:32 xxx.sn4ky.net proftpd[8594] 127.0.0.1: ProFTPD 1.3.3a standalone mode SHUTDOWN
Dec 10 01:50:34 xxx.sn4ky.net proftpd[9237] 127.0.0.1: ProFTPD 1.3.3a (maint) (built Sun Nov 13 2011 22:40:44 UTC) standalone mode STARTUP

Miracle ! le format de sortie du log a changé !
Et cette fois, il est lisible par Fail2ban (un fail2ban-regex pour s’en convaincre, après avoir fait un petit coup de sed -i.bak 's/déc\./Dec/g' /var/log/proftpd/proftpd.log pour s’en convaincre.

En espérant en avoir dépanné plus d’un.

You can leave a response, or trackback from your own site.

4 Responses to “ProFTPd, Fail2ban, locales”

  1. Patrice dit :

    Merci beaucoup d’avoir pris le temps d’écrire cette aide, ceci fut la solution à mon problème :=)

  2. Patrice Vigier dit :

    La solution plus « soft » a fonctionné parfaitement pour moi.

    Merci, merci….

  3. Pierre dit :

    Merci pour le tuyaux, çà fonctionne parfaitement !

  4. Quentin dit :

    Merci :) ça a parfaitement fonctionné pour moi aussi

Leave a Reply