Sécurité · 5 min read · Dec 29, 2025
Configurer fail2ban avec SquirrelMail sur Debian Lenny 5.0/ISPConfig 3
Configurer fail2ban avec SquirrelMail sur Debian Lenny 5.0/ISPConfig 3
Dans cet article, je vais montrer comment prévenir les attaques par force brute avec Fail2ban contre votre connexion Web SquirrelMail en utilisant le plugin Squirrel Logger.
1. Exigences
Assurez-vous que fail2ban et SquirrelMail sont installés sur une machine Debian Lenny/ISPConfig 3.
Pour installer ISPConfig 3 + SquirrelMail, veuillez suivre ce guide.
Pour installer fail2ban, veuillez suivre ce guide.
2. Squirrel Logger
Téléchargez et installez Squirrel Logger :
cd /usr/share/squirrelmail/plugins
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsquirrel_logger-2.3-1.2.7.tar.gz
tar zxvf squirrel_logger-2.3-1.2.7.tar.gz
cd squirrel_logger
cp config_example.php config.phpConfigurez Squirrel Logger :
vi config.phpSi votre serveur n’utilise pas l’heure locale GMT, veuillez changer $sl_use_GMT = 1 en $sl_use_GMT = 0 :
...
// Enregistrer les dates en GMT ? Si vous ne le faites pas, les dates seront
// enregistrées dans le fuseau horaire de chaque utilisateur (ou
// défini dans ses préférences personnelles)
//
// 1 = oui
// 0 = non
//
$sl_use_GMT = 0;
...Changez l’emplacement de votre fichier journal de $sl_logfile = $data_dir . ‘squirrelmail_access_log’; en $sl_logfile = ‘/var/log/squirrelmail.log’; :
...
// L'emplacement de votre fichier journal lors de l'enregistrement dans un fichier.
// Assurez-vous que l'utilisateur sous lequel votre serveur web fonctionne peut écrire
// dans ce fichier. Utilisez la variable $data_dir si vous
// souhaitez placer le fichier journal dans le répertoire de données SquirrelMail.
//
// Applicable uniquement lorsque $sl_logs inclut "file".
//
// $sl_logfile = $data_dir . 'squirrelmail_access_log';
$sl_logfile = '/var/log/squirrelmail.log';
...Changez le format de date pour correspondre à l’expression régulière fail2ban de $sl_dateformat = ‘m/d/Y H:i:s’; en $sl_dateformat = ‘M j H:i:s’; :
...
// Spécifiez quel format de date vous souhaitez
//
// Consultez le manuel PHP pour la fonction date pour obtenir de l'aide
// à http://www.php.net/manual/function.date.php
//
// exemples :
//
// 'm/d/y H:i:s' == 03/10/2001 05:16:08
// 'F j, Y, g:i a' == 10 mars 2001, 5:16 am
// 'D M j Y H:i:s T' == Sam Mar 10 2001 15:16:08 CDT
//
// $sl_dateformat = 'm/d/Y H:i:s';
$sl_dateformat = 'M j H:i:s';
... Créez un nouveau fichier squirrelmail.log dans /var/log/ :
touch /var/log/squirrelmail.log
chown www-data:www-data /var/log/squirrelmail.log
chmod 640 /var/log/squirrelmail.logNettoyez l’installation :
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzConfigurez SquirrelMail pour utiliser le plugin Squirrel Logger :
squirrelmail-configure...
7. Message du jour (MOTD)
8. Plugins
9. Base de données
... Sélectionnez “Plugins”, dans mon cas, le numéro 8.
...
18. spamcop
19. squirrel_logger
20. squirrelspell
21. test
... Sélectionnez squirrel_logger, dans mon cas, le numéro 19.
...
Plugins installés
1. delete_move_next
2. squirrelspell
3. newmail
4. squirrel_logger
... Maintenant, squirrel_logger fait partie des plugins installés.
Enregistrez les données “S” et quittez “Q”.
3. Configuration de Fail2ban
Configurez fail2ban pour utiliser le journal SquirrelMail :
cd /etc/fail2banOuvrez et ajoutez les lignes suivantes au fichier jail.local. Si vous n’avez pas ce fichier, utilisez le fichier jail.conf par défaut.
vi jail.local[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/log/squirrelmail.log
bantime = 300
maxretry = 4 Veuillez vous assurer que bantime (en secondes) et maxretry sont définis selon vos besoins.
Dans le répertoire filter.d, créez un fichier squirrelmail.conf avec le contenu suivant :
cd filter.d
vi squirrelmail.conf# Fichier de configuration Fail2Ban
#
# Auteur : Bill Landry ((email_protected))
#
# $Revision: 510 $
[Definition]
# Option : failregex
# Notes : regex pour correspondre aux messages d'échec de mot de passe dans le fichier journal. Le
# hôte doit être correspondre par un groupe nommé "host". Le tag "" peut
# être utilisé pour la correspondance IP/nom d'hôte standard et est uniquement un alias pour
# (?:::f{4,6}:)?(?P\S+)
# Valeurs : TEXTE
failregex = \[LOGIN_ERROR\].*from : Utilisateur inconnu ou mot de passe incorrect
# Option : ignoreregex
# Notes : regex à ignorer. Si cette regex correspond, la ligne est ignorée.
# Valeurs : TEXTE
ignoreregex = IMPORTANT : si vous utilisez une autre langue que l’anglais, veuillez changer la ligne “failregex” avec le texte que squirrelmail.log vous montre au point 5.
Exemple : avec la langue espagnole, j’obtiens ceci dans le fichier journal.
20 août 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto. Donc, je fais ce changement :
failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto …et redémarrez fail2ban.
/etc/init.d/fail2ban restart5. Tester l’installation
cd /var/log
tail -f squirrelmail.logConnectez-vous “3” fois à l’interface Web SquirrelMail en utilisant “des mots de passe incorrects”.
Cette procédure vous montre les tentatives de connexion échouées dans les fenêtres de terminal :
19 août 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Utilisateur inconnu ou mot de passe incorrect.
19 août 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Utilisateur inconnu ou mot de passe incorrect.
19 août 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Utilisateur inconnu ou mot de passe incorrect.Fermez le fichier squirrelmail.log :
Ctrl-cVérifiez que fail2ban-regex peut capturer ces erreurs :
fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.confExécution des tests
=============
Utiliser le fichier regex : /etc/fail2ban/filter.d/squirrelmail.conf
Utiliser le fichier journal : /var/log/squirrelmail.log
Résultats
=======
Failregex
|- Expressions régulières :
| [1] \[LOGIN_ERROR\].*from : Utilisateur inconnu ou mot de passe incorrect
|
`- Nombre de correspondances :
[1] 3 correspondance(s)
Ignoreregex
|- Expressions régulières :
|
`- Nombre de correspondances :
Résumé
=======
Adresses trouvées :
[1]
200.113.105.235 (Mer 19 août 13:57:20 2009)
200.113.105.235 (Mer 19 août 13:57:34 2009)
200.113.105.235 (Mer 19 août 13:57:46 2009)
Hits de modèle de date :
3 hit(s) : Mois Jour Heure:Minute:Seconde
0 hit(s) : Jour de la semaine Mois Jour Heure:Minute:Seconde Année
0 hit(s) : Jour de la semaine Mois Jour Heure:Minute:Seconde
0 hit(s) : Année/Mois/Jour Heure:Minute:Seconde
0 hit(s) : Jour/Mois/Année Heure:Minute:Seconde
0 hit(s) : Jour/Mois/Année:Heure:Minute:Seconde
0 hit(s) : Année-Mois-Jour Heure:Minute:Seconde
0 hit(s) : Jour-Mois-Année Heure:Minute:Seconde[.Milliseconde]
0 hit(s) : TAI64N
0 hit(s) : Époque
0 hit(s) : ISO 8601
Succès, le nombre total de correspondances est 3
Cependant, regardez la section ci-dessus 'Exécution des tests' qui pourrait contenir des informations importantes. Si vous voyez cette ligne, tout va bien : Succès, le nombre total de correspondances est 3
6. Testons notre Fail2ban
Connectez-vous “4” fois (ou plus, selon votre configuration maxretry) à l’interface Web SquirrelMail en utilisant “des mots de passe incorrects”.
Lorsque vous êtes bloqué, cela signifie que vous ne pouvez pas voir la page de connexion, veuillez exécuter :
iptables -LMaintenant, vous pouvez voir votre IP bloquée xxx-xxx-xxx-xxx dans la sortie iptables.
Chaîne fail2ban-squirrelmail (1 référence)
target prot opt source destination
DROP all -- xxx-xxx-xxx-xxx.your.isp.info anywhere
RETURN all -- anywhere anywhere Bonne chance ;)
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.