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.phpKonfigurieren Sie Squirrel Logger:
vi config.phpWenn 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.logBereinigen Sie die Installation:
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzKonfigurieren 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 restart5. Testen der Installation
cd /var/log
tail -f squirrelmail.logMelden 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.confTests 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 -LJetzt 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 ;)
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.