Sicherheit · 5 min read · Dec 29, 2025

Konfiguration von fail2ban mit SquirrelMail auf Debian Lenny 5.0/ISPConfig 3

Konfiguration von fail2ban mit SquirrelMail auf Debian Lenny 5.0/ISPConfig 3

In diesem Artikel zeige ich, wie man Brute-Force-Angriffe mit Fail2ban gegen Ihr SquirrelMail-Web-Login unter Verwendung des Squirrel Logger-Plugins verhindert.

1. Anforderungen

Stellen Sie sicher, dass fail2ban und SquirrelMail auf einer Debian Lenny/ISPConfig 3-Maschine installiert sind.
Um ISPConfig 3 + SquirrelMail zu installieren, folgen Sie bitte diesem Leitfaden.
Um fail2ban zu installieren, folgen Sie bitte diesem Leitfaden.

2. Squirrel Logger

Laden Sie Squirrel Logger herunter und installieren Sie es:

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.php

Konfigurieren Sie Squirrel Logger:

vi config.php

Wenn Ihr Server nicht die GMT-Ortszeit verwendet, ändern Sie bitte $sl_use_GMT = 1 in $sl_use_GMT = 0:

...  
// Logdaten in GMT?  Wenn Sie dies nicht tun, werden die Daten  
// in der Zeitzone protokolliert, in der sich jeder Benutzer befindet (oder  
// die in seinen persönlichen Einstellungen festgelegt ist)  
//  
//    1 = ja  
//    0 = nein  
//  
$sl_use_GMT = 0;  
...

Ändern Sie den Speicherort Ihrer Protokolldatei von $sl_logfile = $data_dir . ‘squirrelmail_access_log’; in $sl_logfile = ‘/var/log/squirrelmail.log’;:

...  
// Der Speicherort Ihrer Protokolldatei beim Protokollieren in eine Datei.  
// Stellen Sie sicher, dass der Benutzer, unter dem Ihr Webserver läuft, in der Lage ist,  
// in diese Datei zu schreiben.  Verwenden Sie die $data_dir-Variable, wenn Sie  
// die Protokolldatei im SquirrelMail-Datenverzeichnis ablegen möchten.  
//  
// Nur anwendbar, wenn $sl_logs "file" enthält.  
//  
// $sl_logfile = $data_dir . 'squirrelmail_access_log';  
$sl_logfile = '/var/log/squirrelmail.log';  
...

Ändern Sie das Datumsformat, um mit dem fail2ban-regex übereinzustimmen, von $sl_dateformat = ‘m/d/Y H:i:s’; in $sl_dateformat = ‘M j H:i:s’;:

...  
// Geben Sie an, welches Datumsformat Sie wünschen  
//  
// Siehe das PHP-Handbuch für die Datumsfunktion für Hilfe  
// unter http://www.php.net/manual/function.date.php  
//  
// Beispiele:  
//  
//    'm/d/y H:i:s'     ==  03/10/2001 05:16:08  
//    'F j, Y, g:i a'   ==  10. März 2001, 5:16 Uhr  
//    'D M j Y H:i:s T' ==  Sa 10. März 2001 15:16:08 CDT  
//  
// $sl_dateformat = 'm/d/Y H:i:s';  
$sl_dateformat = 'M j H:i:s';  
... 

Erstellen Sie eine neue squirrelmail.log-Datei in /var/log/:

touch /var/log/squirrelmail.log  
chown www-data:www-data /var/log/squirrelmail.log  
chmod 640 /var/log/squirrelmail.log

Bereinigen Sie die Installation:

cd ..  
rm squirrel_logger-2.3-1.2.7.tar.gz

Konfigurieren Sie SquirrelMail, um das Squirrel Logger-Plugin zu verwenden:

squirrelmail-configure
...  
7.  Nachricht des Tages (MOTD)  
8.  Plugins  
9.  Datenbank  
...

Wählen Sie “Plugins”, in meinem Fall die Nummer 8.

...  
18. spamcop  
19. squirrel_logger  
20. squirrelspell  
21. test  
...

Wählen Sie squirrel_logger, in meinem Fall die Nummer 19.

...  
Installierte Plugins  
1. delete_move_next  
2. squirrelspell  
3. newmail  
4. squirrel_logger  
...

Jetzt ist squirrel_logger Teil der installierten Plugins.
Daten speichern “S” und beenden “Q”.

3. Fail2ban-Konfiguration

Konfigurieren Sie fail2ban, um das SquirrelMail-Log zu verwenden:

cd /etc/fail2ban

Öffnen Sie die Datei jail.local und fügen Sie die folgenden Zeilen hinzu. Wenn Sie diese Datei nicht haben, verwenden Sie die Standarddatei jail.conf.

vi jail.local
[squirrelmail]  
  
enabled = true  
port = http,https  
filter = squirrelmail  
logpath = /var/log/squirrelmail.log  
bantime = 300  
maxretry = 4 

Bitte stellen Sie sicher, dass bantime (in Sekunden) und maxretry auf Ihre Anforderungen eingestellt sind.

Im Verzeichnis filter.d erstellen Sie eine squirrelmail.conf-Datei mit folgendem Inhalt:

cd filter.d  
vi squirrelmail.conf
# Fail2Ban-Konfigurationsdatei  
#  
# Autor: Bill Landry ((email_protected))  
#  
# $Revision: 510 $  
  
[Definition]  
  
# Option: failregex  
# Hinweise.: regex, um die Passwortfehlernachrichten im Protokoll zu erfassen. Der  
#         Host muss von einer Gruppe namens "host" erfasst werden. Das Tag "" kann  
#         für das Standard-IP-/Hostname-Matching verwendet werden und ist nur ein Alias für  
#         (?:::f{4,6}:)?(?P\S+)  
# Werte: TEXT  
  
failregex = \[LOGIN_ERROR\].*from : Unbekannter Benutzer oder Passwort falsch  
  
# Option: ignoreregex  
# Hinweise.: regex, um zu ignorieren. Wenn dieses regex übereinstimmt, wird die Zeile ignoriert.  
# Werte: TEXT  
  
ignoreregex = 

WICHTIG: Wenn Sie eine andere Sprache als Englisch verwenden, ändern Sie bitte die Zeile “failregex” mit dem Text, den squirrelmail.log Ihnen in Punkt 5 zeigt.

Beispiel: Mit der spanischen Sprache erhalte ich dies in der Protokolldatei.

Aug 20 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) von XXX.XXX.XX.XX: Usuario o contraseña incorrecto. 

Also mache ich diese Änderung:

failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto

…und starte fail2ban neu.

/etc/init.d/fail2ban restart

5. Testen der Installation

cd /var/log  
tail -f squirrelmail.log

Melden Sie sich “3” Mal bei der SquirrelMail-Weboberfläche mit “falschen Passwörtern” an.
Dieses Verfahren zeigt Ihnen die fehlgeschlagenen Anmeldeversuche in den Terminalfenstern:

Aug 19 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) von XXX.XXX.XX.XX: Unbekannter Benutzer oder Passwort falsch.  
Aug 19 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) von XXX.XXX.XX.XX: Unbekannter Benutzer oder Passwort falsch.  
Aug 19 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) von XXX.XXX.XX.XX: Unbekannter Benutzer oder Passwort falsch.

Schließen Sie die squirrelmail.log-Datei:

Ctrl-c

Überprüfen Sie, ob fail2ban-regex diese Fehler erfassen kann:

fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.conf
Tests werden ausgeführt  
=============  
  
Verwenden Sie die regex-Datei : /etc/fail2ban/filter.d/squirrelmail.conf  
Verwenden Sie die Protokolldatei   : /var/log/squirrelmail.log  
  
  
Ergebnisse  
=======  
  
Failregex  
|- Reguläre Ausdrücke:  
|  [1] \[LOGIN_ERROR\].*from : Unbekannter Benutzer oder Passwort falsch  
|  
`- Anzahl der Übereinstimmungen:  
   [1] 3 Übereinstimmung(en)  
  
Ignoreregex  
|- Reguläre Ausdrücke:  
|  
`- Anzahl der Übereinstimmungen:  
  
Zusammenfassung  
=======  
  
Gefundene Adressen:  
[1]  
    200.113.105.235 (Mi 19. Aug 13:57:20 2009)  
    200.113.105.235 (Mi 19. Aug 13:57:34 2009)  
    200.113.105.235 (Mi 19. Aug 13:57:46 2009)  
  
Datumsformat-Hits:  
3 Treffer: Monat Tag Stunde:Minute:Sekunde  
0 Treffer: Wochentag Monat Tag Stunde:Minute:Sekunde Jahr  
0 Treffer: Wochentag Monat Tag Stunde:Minute:Sekunde  
0 Treffer: Jahr/Monat/Tag Stunde:Minute:Sekunde  
0 Treffer: Tag/Monat/Jahr Stunde:Minute:Sekunde  
0 Treffer: Tag/Monat/Jahr:Stunde:Minute:Sekunde  
0 Treffer: Jahr-Monat-Tag Stunde:Minute:Sekunde  
0 Treffer: Tag-Monat-Jahr Stunde:Minute:Sekunde[.Millisekunde]  
0 Treffer: TAI64N  
0 Treffer: Epoch  
0 Treffer: ISO 8601  
  
Erfolg, die Gesamtzahl der Übereinstimmungen beträgt 3  
  
Schauen Sie sich jedoch den obigen Abschnitt 'Tests ausführen' an, der wichtige  
Informationen enthalten könnte.

Wenn Sie diese Zeile sehen, ist alles in Ordnung: Erfolg, die Gesamtzahl der Übereinstimmungen beträgt 3

6. Lassen Sie uns unser Fail2ban testen

Melden Sie sich “4” Mal (oder mehr, je nach Ihrer maxretry-Einstellung) bei der SquirrelMail-Weboberfläche mit “falschen Passwörtern” an.

Wenn Sie blockiert werden, bedeutet das, dass Sie die Anmeldeseite nicht sehen können. Bitte führen Sie aus:

iptables -L

Jetzt können Sie Ihre blockierte IP xxx-xxx-xxx-xxx in der iptables-Ausgabe sehen.

Chain fail2ban-squirrelmail (1 Referenzen)  
target     prot opt source               destination  
DROP       all  --  xxx-xxx-xxx-xxx.your.isp.info  überall  
RETURN     all  --  überall             überall  

Viel Glück ;)

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.