Sicherheit · 3 min read · Jan 02, 2026

Konfiguration von fail2ban mit SquirrelMail auf CentOS 5.3/ISPConfig 3

Konfiguration von fail2ban mit SquirrelMail auf CentOS 5.3/ISPConfig 3

Einführung

Dieses Tutorial zeigt, wie Sie unbegrenzte Anmeldeversuche und damit Brute-Force-Angriffe gegen Ihr SquirrelMail-Web-Login mit fail2ban verhindern können.

1. Anforderungen

Stellen Sie sicher, dass sowohl fail2ban als auch SquirrelMail auf einer CentOS v5.3/ISPConfig 3-Maschine installiert sind, die hier detailliert beschrieben ist.

Die Installation ist jedoch unkompliziert:

yum install fail2ban squirrelmail

Sie müssen iptables aktiv als Ihre Firewall verwenden. Fail2ban funktioniert, indem es eine temporäre Drop-Regel für die unbefugte Quell-IP-Adresse erstellt.

2. SquirrelMail-Protokollkonfiguration

SquirrelMail (imapd) protokolliert standardmäßig unter CentOS v5.3/ISPConfig 3 in /var/log/maillog, jedoch nur als IP-Adresse 127.0.0.1 (localhost). Da wir versuchen, eine bestimmte Quelladresse zu sperren, kann fail2ban diese Datei nicht verwenden. Daher installieren und verwenden wir Squirrel Logger, um die tatsächliche Quelladresse des Anmeldeversuchs zu erfassen.

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

Während dieses Plugin die neueste Version von Squirrel Logger war, laden Sie es direkt von der SquirrelMail-Plugins-Seite hier herunter, wenn es eine Überarbeitungsaktualisierung gegeben hat.

Wenn Ihre Maschine eine lokale Zeit verwendet, die nicht GMT ist, verwenden Sie vi, um zu ändern: $sl_use_GMT = 1 zu $sl_use_GMT = 0 in config.php:

Original config.php:

...
// Protokolldaten 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 hat)
//
//    1 = ja
//    0 = nein
//
$sl_use_GMT = 1;
...

Modifizierte config.php:

...
// Protokolldaten 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 hat)
//
//    1 = ja
//    0 = nein
//
$sl_use_GMT = 0;
...

Löschen Sie die heruntergeladene Squirrel Logger-Gzip-Datei:

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

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

/usr/share/squirrelmail/config/conf.pl
SquirrelMail-Konfiguration : Lesen: config.php (1.4.0)
---------------------------------------------------------
Hauptmenü --
1.  Organisationseinstellungen
2.  Servereinstellungen
3.  Ordnerstandards
4.  Allgemeine Optionen
5.  Themen
6.  Adressbücher
7.  Nachricht des Tages (MOTD)
8.  Plugins
9.  Datenbank
10. Sprachen

D.  Vordefinierte Einstellungen für bestimmte IMAP-Server festlegen

C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >>
Wählen: Plugins
SquirrelMail-Konfiguration : Lesen: config.php (1.4.0)
---------------------------------------------------------
Plugins
  Installierte Plugins
    1. delete_move_next
    2. squirrelspell
    3. newmail  

  Verfügbare Plugins:
    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   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> 
Wählen: squirrel_logger
SquirrelMail-Konfiguration : Lesen: config.php (1.4.0)
---------------------------------------------------------
Plugins
  Installierte Plugins
    1. delete_move_next
    2. squirrelspell
    3. newmail
    4. squirrel_logger  

  Verfügbare Plugins:
    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   Zurück zum Hauptmenü
C   Farbe aktivieren
S   Daten speichern
Q   Beenden

Befehl >> 
Wählen: Daten speichern, Beenden

3. Fail2ban-Konfiguration

Wechseln Sie in das Verzeichnis für die Fail2ban-Konfiguration:

cd /etc/fail2ban

Unter der Annahme, dass Sie den HTTP-Transport für SquirrelMail verwenden, verwenden Sie vi, um die folgenden Zeilen zur jail.conf-Datei hinzuzufügen:

[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

Stellen Sie sicher, dass maxretry und die E-Mail-Adressen für dest und sender auf Ihre Anforderungen eingestellt sind.

Wechseln Sie in das Verzeichnis für die Fail2ban-Filter:

cd filter.d

Erstellen Sie im Verzeichnis filter.d mit vi eine squirrelmail.conf-Datei mit folgendem Inhalt:

# Fail2Ban-Konfigurationsdatei
#
# Autor: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Option: failregex
# Hinweise.: regex zum Abgleichen der Passwortfehlernachrichten im Protokoll. Der
#         Host muss von einer Gruppe namens "host" übereinstimmen. 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 zum Ignorieren. Wenn dieses regex übereinstimmt, wird die Zeile ignoriert.
# Werte:  TEXT

ignoreregex =

Fail2ban muss das Datumsformat erkennen, das in der squirrelmail_access_log-Datei verwendet wird.

cd /usr/share/fail2ban/server

Verwenden Sie vi, um die datedetector.py-Datei zu bearbeiten und fügen Sie die folgenden Zeilen zwischen den Abschnitten Apache-Format und Exim-Format hinzu:

# SquirrelMail 09/13/2007 06:43:20
template = DateStrptime()
template.setName("Monat/Tag/Jahr Stunde:Minute:Sekunde")
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

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.