Sécurité · 4 min read · Jan 02, 2026

Configurer fail2ban avec SquirrelMail sur CentOS 5.3/ISPConfig 3

Configurer fail2ban avec SquirrelMail sur CentOS 5.3/ISPConfig 3

Introduction

Ce tutoriel montre comment vous pouvez empêcher des tentatives de connexion illimitées et donc des attaques par force brute contre votre connexion Web SquirrelMail en utilisant fail2ban.

1. Exigences

Assurez-vous que fail2ban et SquirrelMail sont installés sur une machine CentOS v5.3/ISPConfig 3 détaillée ici.

Cependant, leur installation est simple :

yum install fail2ban squirrelmail

Vous devez utiliser activement iptables comme votre pare-feu. Fail2ban fonctionne en créant une règle de rejet temporaire pour l’adresse IP source non autorisée.

2. Configuration des journaux SquirrelMail

SquirrelMail (imapd) sous CentOS v5.3/ISPConfig 3 enregistre par défaut dans /var/log/maillog mais uniquement comme adresse IP 127.0.0.1 (localhost). Puisque nous essayons d’interdire une adresse source spécifique, fail2ban ne peut pas utiliser ce fichier. Par conséquent, nous installons et utilisons Squirrel Logger pour capturer la véritable adresse source de la tentative de connexion.

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-2.3-1.2.7  
cp config_example.php config.php

Bien que ce plugin soit la dernière version de Squirrel Logger, s’il y a eu une mise à jour de révision, téléchargez-le directement depuis le site des plugins SquirrelMail ici.

Si votre machine utilise un fuseau horaire local qui n’est pas GMT, utilisez vi pour changer : $sl_use_GMT = 1 à $sl_use_GMT = 0 dans config.php :

Original config.php :

...
// 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 leurs préférences personnelles)
//
//    1 = oui
//    0 = non
//
$sl_use_GMT = 1;
...

Modified config.php :

...
// 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 leurs préférences personnelles)
//
//    1 = oui
//    0 = non
//
$sl_use_GMT = 0;
...

Supprimez le fichier gzip Squirrel Logger téléchargé :

cd /usr/share/squirrelmail/plugins  
rm squirrel_logger-2.3-1.2.7.tar.gz

Configurez SquirrelMail pour utiliser le plugin Squirrel Logger :

/usr/share/squirrelmail/config/conf.pl
Configuration de SquirrelMail : Lire : config.php (1.4.0)
---------------------------------------------------------
Menu Principal --
1.  Préférences d'organisation
2.  Paramètres du serveur
3.  Paramètres par défaut des dossiers
4.  Options générales
5.  Thèmes
6.  Carnets d'adresses
7.  Message du jour (MOTD)
8.  Plugins
9.  Base de données
10. Langues

D.  Définir des paramètres prédéfinis pour des serveurs IMAP spécifiques

C   Activer la couleur
S   Enregistrer les données
Q   Quitter

Commande >>
Sélectionnez : Plugins
Configuration de SquirrelMail : Lire : config.php (1.4.0)
---------------------------------------------------------
Plugins
  Plugins installés
    1. delete_move_next
    2. squirrelspell
    3. newmail  

  Plugins disponibles :
    4. listcommands
    5. fortune
    6. filters
    7. translate
    8. abook_take
    9. spamcop
    10. squirrel_logger
    11. mail_fetch
    12. calendar
    13. sent_subfolders
    14. message_details
    15. administrator
    16. info
    17. bug_report

R   Retour au menu principal
C   Activer la couleur
S   Enregistrer les données
Q   Quitter

Commande >> 
Sélectionnez : squirrel_logger
Configuration de SquirrelMail : Lire : config.php (1.4.0)
---------------------------------------------------------
Plugins
  Plugins installés
    1. delete_move_next
    2. squirrelspell
    3. newmail
    4. squirrel_logger  

  Plugins disponibles :
    5. listcommands
    6. fortune
    7. filters
    8. translate
    9. abook_take
    10. spamcop
    11. mail_fetch
    12. calendar
    13. sent_subfolders
    14. message_details
    15. administrator
    16. info
    17. bug_report

R   Retour au menu principal
C   Activer la couleur
S   Enregistrer les données
Q   Quitter

Commande >> 
Sélectionnez : Enregistrer les données, Quitter

3. Configuration de Fail2ban

Changez de répertoire vers le répertoire de configuration de fail2ban :

cd /etc/fail2ban

En supposant que vous utilisez le transport http pour SquirrelMail, utilisez vi pour ajouter les lignes suivantes au fichier jail.conf :

[squirrelmail-iptables]
enabled  = true
filter   = squirrelmail
action   = iptables[name=SquirrelMail, port=http, protocol=tcp]
           sendmail-whois[name=SquirrelMail, dest=you@your_domain.com, sender=fail2ban@your_domain.com]
logpath  = /var/lib/squirrelmail/prefs/squirrelmail_access_log
maxretry = 4

Assurez-vous que maxretry et les adresses e-mail pour dest et sender sont définies selon vos besoins.

Changez de répertoire vers le répertoire des filtres de fail2ban :

cd filter.d

Dans le répertoire filter.d, utilisez vi pour créer un fichier squirrelmail.conf avec le contenu suivant :

# 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. L
#         hôte doit être correspondre par un groupe nommé "host". Le tag "" peut
#         être utilisé pour la correspondance standard IP/nom d'hôte et est seulement 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 =

Fail2ban doit reconnaître le format de date utilisé dans le fichier squirrelmail_access_log.

cd /usr/share/fail2ban/server

Utilisez vi pour éditer le fichier datedetector.py et ajoutez les lignes suivantes entre les sections de format Apache et Exim :

# SquirrelMail 09/13/2007 06:43:20
template = DateStrptime()
template.setName("Month/Day/Year Hour:Minute:Second")
template.setRegex("\d{2}/\d{2}/\d{4} \d{2}:\d{2}:\d{2}")
template.setPattern("%m/%d/%Y %H:%M:%S")
self.__templates.append(template)
Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.