Les boulets qui tentent de se connecter à un de vos services, ca peut vite devenir…. pénible.
Avec les fuites de mot de passe qu’on retrouve un peu partout, n’importe qui ou presque peut maintenant faire le Jean-Kevin (mes excuses si un de mes lecteurs s’appelle Jean-Kevin, faudra que je parle à ses parents ceci dit..)
Bref, trêve de plaisanteries, et attaquons nous à ces petits malandrins qui n’ont rien d’autres à faire que de remplir nos fichiers de logs….
Comme on vient de terminer l’installation du serveur de messagerie, on va justement filtrer un peu les tentatives de login infructueuses sur l’IMAP et sur le SMTP.
I – Présentation et installation
Au niveau de son fonctionnement, Fail2ban est simple à comprendre.
Tout d’abord, on a des jails, c’est à dire une configuration que l’on créé et qui va s’occuper de surveiller un service en regardant ses logs. Ce sera dans le répertoire /etc/fail2ban/jail.d/.
Pour se faire, il faut savoir quoi chercher de suspect, c’est le rôle des filtres…. La, dans /etc/fail2ban/filter.d/, on en trouve déjà beaucoup de proposés. Bien sur, on pourra faire les siens.
Et ensuite, il faut dire ce qu’on fait avec les lourds que l’on trouve dans les logs après filtrage : ce sont les actions. La aussi, dans /etc/fail2ban/action.d/ on en trouve, et la aussi on pourra faire les nôtres.
Pour l’installation, rien de compliqué :
# apt-get install fail2ban
II – Configuration
Maintenant, il s’agit de créer les jails. On va en faire une pour Postfix, puis une pour Dovecot
A – Postfix
Dans un fichier /etc/fail2ban/jail.d/postfix.conf, mettez ceci :
[postfix-sasl] enabled = true filter = postfix-sasl action = iptables-allports mail[name=Postfix SASL] bantime = 3600 maxretry = 2 logpath = /var/log/mail.log
Au niveau du filtre, on se sert de celui qui existe déjà, et au niveau action, on utilise celle qui bloque tout au niveau du FW plus un p’tit mail d’info.
On active le ban au bout de deux tentatives et ce pour une heure.
B – Dovecot
Dans un fichier /etc/fail2ban/jail.d/dovecot.conf, mettez ceci :
[dovecot] enabled = true filter = dovecot action = iptables-allports mail[name=Dovecot] bantime = 3600 maxretry = 2 logpath = /var/log/mail.log
La, on utilise le filtre dovecot déjà existant et le reste, comme Postfix…
IV – Test
Ne reste plus qu’à recharger :
# service fail2ban reload
Puis, on peut déjà regarder le log voir si tout est OK :
# tail /var/log/fail2ban.log -f
On peut aussi en savoir plus sur les jails en cours :
# fail2ban-client status
Puis le détail :
# fail2ban-client status postfix-sasl
Pour bannir de force par exemple :
# fail2ban-client set postfix-sasl banip XXX.XXX.XXX.XXX
etc….
Après, il n’y a plus qu’à attendre pour voir si cela marche bien, et généralement, ça ne prend pas trop de temps.
V – Conclusion
Et voila, vous voyez, c’est très simple et ça marche… mais ceci dit, je n’aime pas car chaque serveur aura alors ses propres règles de blocages.
Et perso, si un lourd est lourd sur un service, je ne vois pas pourquoi il ne le serait pas sur un autre, ce serait donc mieux de le bloquer en amont, avec le firewall du routeur.
Et bien, cela tombe bien, c’est ce qu’on va voir dans l’article suivant avec la mise en place d’un système client-serveur en python.