Aujourd’hui, Jac m’envoie un message pour m’informer que sa redirection email ne fonctionne plus.
Je lance donc un terminal et vérifie les logs de Postfix, qui chargent des dizaines de lignes d’erreurs de ce type:
Dec 15 16:30:33 mail postfix/smtpd[5912]: connect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5912]: lost connection after AUTH from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5912]: disconnect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: connect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: lost connection after AUTH from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]
Dec 15 16:30:34 mail postfix/smtpd[5908]: disconnect from static-68-236-203-102.nwrk.east.verizon.net[68.236.203.102]Vous voulez sécuriser votre site avant qu'il soit trop tard ?
Plugins obsolètes, xmlrpc ouvert, uploads non protégés — la plupart des intrusions WordPress exploitent des failles connues et évitables. Un durcissement sérieux prend une demi-journée.
Faites auditer votre sécurité →
Comme vous pourvez le constater, ça débite et ça impacte forcément les ressources du système. Voyons donc comment nous pouvons y mettre un terme.
Pré-requis : fail2ban
Nous allons utiliser fail2ban, un compagnon très utile pour surveiller les logs et analyser les comportements néfastes à l’aide d’expressions régulières.
Je vous invite à relire le guide d’installation de fail2ban.
Nouvelle définition dans fail2ban : postfix-auth
Nous ajoutons donc une nouvelle définition, [postfix-auth], dans notre fichier jail.local:
nano /etc/fail2ban/jail.local
On l’ajoute à la fin des déclarations pour les serveurs mails :
[postfix-auth]
enabled = true
filter = postfix.auth
action = iptables-multiport[name=postfix, port="http,https,smtp,submission,pop3,pop3s,imap,imaps,sieve", protocol=tcp]
# sendmail[name=Postfix, dest=you@mail.com]
logpath = /var/log/mail.logCode language: PHP (php)
Je désactive volontairement l’envoi des notifications, ce serait un comble.
Nouveau filtre : postfix.auth.conf
Maintenant que nous avons déclaré notre filtre dans fail2ban, passons à l’expression régulière qui va gérer le bannissement.
nano /etc/fail2ban/filter.d/postfix.auth.conf
On y ajoute:
[Definition]
failregex = lost connection after (AUTH|UNKNOWN|EHLO) from (.*)\[\]
ignoreregex =Code language: JavaScript (javascript)
Cela nous permet de gérer les erreurs AUTH mais aussi UNKNOWN et EHLO, afin de couvrir un large spectre.
Redémarrage de fai2ban et Postfix
Il ne nous reste plus qu’à relancer les services fail2ban et Postfix:
service fail2ban restart
service postfix restart
A noter que cela prend une bonne minute pour que toutes instances de connexions soient tuées par le filtre.
Après deux minutes, nous avons retrouvé le fichier log épuré de tout message d’erreur dont nous avions l’habitude.
Vous voulez sécuriser votre site avant qu'il soit trop tard ?
Plugins obsolètes, xmlrpc ouvert, uploads non protégés — la plupart des intrusions WordPress exploitent des failles connues et évitables. Un durcissement sérieux prend une demi-journée.
Faites auditer votre sécurité →
Bonjour, bravo et merci pour tous vos tutoriels, j’ai voulu rajouter cette jail mais lorsque je relance fail2ban j’ai le message suivant:
NOK: (“No failure-id group in ‘lost connection after (AUTH|UNKNOWN|EHLO|unknown) from (.*)\\[\\]'”,)
J’avoue que je ne maitrise pas, je suis preneur d’une idée.
Merci.
Bonjour Aunisien,
Merci, c’est gentil.
Je viens de vérifier les fichiers de fail2ban et tout ceci n’est plus nécessaire car c’est désormais inclus dans la jail `postfix.conf`
Bonne journée,
Matt
Merci pour la réponse.
J’ai activé la prison postfix.conf mais je désespère, j’ai toujours des connexions unknown qui ne sont pas bannies… ainsi que des “warning: hostname zg-0915b-23.stretchoid.com does not resolve to address 192.241.235.153: Name or service not known”…
Mais je trouverai un jour !
Hello,
Il me semble que ceci fonctionne
failregex = lost connection after (AUTH|UNKNOWN|EHLO) from (.*)\[\]
Sinon, avez-vous une meilleure solution?
Merci
Pardon, je voulais plutôt dire:
failregex = lost connection after (AUTH|UNKNOWN|EHLO) from (.*)\[\]
Dans mon cas, sans le , j’ai un message d’erreur dans le log de fail2ban.