Archive

Articles taggués ‘pop’

Bloquer les scans ssh, pop3 et imap : fail2ban

27/12/2008

Fail2ban est un démon qui lit les fichiers de logs au fur et à mesure de leur écriture afin de bloquer les ip indésirables pendant un temps donné. Le but est simplement d’éviter de surcharger votre serveur avec des dizaines de requêtes par seconde dont le seul but est d’essayer de trouver un couple utilisateur/mot de passe valide afin de tenter de hacker votre machine ou de s’en servir comme relais pour l’envoi de courrier électronique indésirable.

Fail2ban intègre par défaut le contrôle des scans SSH, en lisant votre fichier /var/log/auth.log. Il n’y a donc pas de configuration particulière à faire pour ssh.

Il est possible de le configurer pour qu’il lise aussi votre /var/log/mail.log afin de bloquer les adresses ip qui floodent votre serveur de courrier avec des couples login/mots de passe invalides. L’espoir des hackeurs est de tomber sur un serveur qui pratique le pop-before-smtp, c’est à dire la technique qui consiste à d’abord lire son courrier puis d’utiliser le serveur smtp. Le fait de s’authentifier avec succès sur le serveur pop implique que votre adresse ip est autorisée à envoyer du courrier pendant un certain temps, vers toutes les destinations. Les hackeurs peuvent alors se servir de votre serveur pour envoyer leur spam à la terre entière.

La première étape est de demander à dovecot de transcrire dans les logs les tentatives de connexion échouées. Cela se fait en éditant son fichier de configuration /etc/dovecot/dovecot.conf et en positionnant la directive auth_verbose à true.

Ensuite, il faut éditer le fichier /etc/fail2ban/jail.local et y rajouter

[dovecot-auth]
enabled  = true
port     = imap,imaps,pop3,pop3
sfilter   = dovecot-auth
logpath  = /var/log/mail.log

Vous pouvez rajouter d’autres directives: maxretry (nombre de tentatives après blacklistage), ignoreip (liste d’ip qui ne seront pas blacklistées séparées par des espaces) et bantime (temps de blacklistage en secondes). Attention, ne pas oublier de mettre 127.0.0.1 dans la liste des ip à ignorer, sans quoi des tentatives infructueuses via un webmail conduiraient à un auto-blacklistage, ce qui aurait un impact sur toutes les applications (postfix ne saurait plus se connecter à MySQL, par exemple). En haut du fichier, ces 3 directives sont présentes de manière globale, le fait de les repréciser dans une règle leur fait prendre le dessus pour la règle en cours.

Ensuite, créer un fichier /etc/fail2ban/filter.d/dovecot-auth.conf et y mettre

[Definition]
failregex = auth-worker(.*): sql(.*,<HOST>): unknown user

Il est évident qu’il peut être nécessaire d’adapter la regexp à votre situtation, l’ip à blacklister étant représentée par <HOST>. Dans ce cas-ci, on ne bloquera que les utilisateurs inexistants, la regexp peut par exemple être adaptée pour prendre en compte les vrais utilisateurs qui se trompent de mot de passe.

Redémarrer fail2ban et dovecot pour les faire prendre en compte leur nouvelle configuration.

Fail2ban consigne ses actions dans le fichier /var/log/fail2ban.log.

Système , , , , , ,