Fail2ban et authentification Sasl avec dovecot
Pour utiliser mon serveur smtp depuis n’importe quelle connexion, j’utilise le mécanisme d’authentification sasl de concert avec mon serveur imap Dovecot.
Dans mes logs, en dehors des classiques attaques par brute-force sur le serveur ssh (qui sont vouées à l’échec car je n’autorise que l’authentification par clé) je rencontre depuis peu des brute-force sasl :
Nov 17 20:50:51 mail postfix/smtpd[30600]: warning: 114-44-134-199.dynamic.hinet.net[114.44.134.199]: SASL CRAM-MD5 authentication failed: PDkxNDI5Njg5MzA1ODE4ODcuMTIyNjYwNTg0OUBtYWlsPg==
Bizarrement, le fail2ban installé ne détecte pas ces attaques.
En cherchant un peu, la regexp définie pour chercher les erreurs sasl, dans /etc/fail2ban/filter.d/sasl.conf :
failregex = : warning: [-._\w]+\[\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed$
Ne “match” pas les lignes d’erreurs générées en cas de brute-force, car il manque à la fin de la ligne le challenge en base64 envoyé au client.
L’expression rationnelle, une fois corrigée, donne ceci :
: warning: [-._\w]+\[(?:::f{4,6}:)?(?P\S+)\]: SASL (?:LOGIN|PLAIN|(?:CRAM|DIGEST)-MD5) authentication failed(: [A-Za-z0-9+/]*={0,2})?$
Elle fonctionne aussi bien pour la méthode CRAM-MD5 et DIGEST-MD5 (qui semble envoyer des challenges plus long).
J’ai rapporté le bug sur le site du projet, en espérant que cela soit pris en compte pour la prochaine version
Maj 28/01/2009: le patch est pris en compte et sera inclu dans la version 0.8.4