Sicurezza · 3 min read · Jan 02, 2026

Configurare fail2ban con SquirrelMail su CentOS 5.3/ISPConfig 3

Configurare fail2ban con SquirrelMail su CentOS 5.3/ISPConfig 3

Introduzione

Questo tutorial mostra come puoi prevenire tentativi di accesso illimitati e quindi attacchi di forza bruta contro il tuo accesso Web SquirrelMail utilizzando fail2ban.

1. Requisiti

Assicurati che sia fail2ban che SquirrelMail siano installati su una macchina CentOS v5.3/ISPConfig 3 come dettagliato qui.

Tuttavia, la loro installazione è semplice:

yum install fail2ban squirrelmail

Devi utilizzare attivamente iptables come firewall. Fail2ban funziona creando una regola di drop temporanea per l’indirizzo IP sorgente non autorizzato.

2. Configurazione del logging di SquirrelMail

SquirrelMail (imapd) sotto CentOS v5.3/ISPConfig 3 per impostazione predefinita registra in /var/log/maillog ma solo come indirizzo IP 127.0.0.1 (localhost). Poiché stiamo cercando di bannare un indirizzo sorgente specifico, fail2ban non può utilizzare questo file. Pertanto, installiamo e utilizziamo Squirrel Logger per catturare il vero indirizzo sorgente del tentativo di accesso.

Scarica e installa 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

Sebbene questo plugin fosse l’ultima versione di Squirrel Logger, se c’è stata un’aggiornamento della revisione, scaricalo direttamente dal sito dei Plugin di SquirrelMail qui.

Se la tua macchina utilizza un’ora locale che non è GMT, usa vi per cambiare: $sl_use_GMT = 1 a $sl_use_GMT = 0 in config.php:

Originale config.php:

...
// Registrare le date in GMT?  Se non lo fai, le date saranno
// registrate in qualsiasi fuso orario in cui si trova ogni utente (o
// ha impostato nelle proprie preferenze personali)
//
//    1 = sì
//    0 = no
//
$sl_use_GMT = 1;
...

config.php modificato:

...
// Registrare le date in GMT?  Se non lo fai, le date saranno
// registrate in qualsiasi fuso orario in cui si trova ogni utente (o
// ha impostato nelle proprie preferenze personali)
//
//    1 = sì
//    0 = no
//
$sl_use_GMT = 0;
...

Elimina il file gzip di Squirrel Logger scaricato:

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

Configura SquirrelMail per utilizzare il plugin Squirrel Logger:

/usr/share/squirrelmail/config/conf.pl
Configurazione di SquirrelMail : Leggi: config.php (1.4.0)
---------------------------------------------------------
Menu Principale --
1.  Preferenze Organizzazione
2.  Impostazioni Server
3.  Impostazioni Cartella
4.  Opzioni Generali
5.  Temi
6.  Rubriche
7.  Messaggio del Giorno (MOTD)
8.  Plugin
9.  Database
10. Lingue

D.  Imposta impostazioni predefinite per server IMAP specifici

C   Attiva il colore
S   Salva dati
Q   Esci

Comando >>
Seleziona: Plugin
Configurazione di SquirrelMail : Leggi: config.php (1.4.0)
---------------------------------------------------------
Plugin
  Plugin Installati
    1. delete_move_next
    2. squirrelspell
    3. newmail  

  Plugin Disponibili:
    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   Torna al Menu Principale
C   Attiva il colore
S   Salva dati
Q   Esci

Comando >> 
Seleziona: squirrel_logger
Configurazione di SquirrelMail : Leggi: config.php (1.4.0)
---------------------------------------------------------
Plugin
  Plugin Installati
    1. delete_move_next
    2. squirrelspell
    3. newmail
    4. squirrel_logger  

  Plugin Disponibili:
    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   Torna al Menu Principale
C   Attiva il colore
S   Salva dati
Q   Esci

Comando >> 
Seleziona: Salva dati, Esci

3. Configurazione di Fail2ban

Cambia nella directory di configurazione di fail2ban:

cd /etc/fail2ban

Assumendo che stai utilizzando il trasporto http per SquirrelMail, usa vi per aggiungere le seguenti righe al file 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

Assicurati che maxretry e gli indirizzi email per dest e sender siano impostati secondo le tue esigenze.

Cambia nella directory dei filtri di fail2ban:

cd filter.d

Nella directory filter.d, usa vi per creare un file squirrelmail.conf con il seguente contenuto:

# File di configurazione di Fail2Ban
#
# Autore: Bill Landry ((email_protected))
#
# $Revision: 510 $

[Definition]

# Opzione: failregex
# Note.: regex per abbinare i messaggi di errore di password nel logfile. Il
#         host deve essere abbinato da un gruppo chiamato "host". L'etichetta "" può
#         essere utilizzata per l'abbinamento standard IP/nome host ed è solo un alias per
#         (?:::f{4,6}:)?(?P\S+)
# Valori: TESTO

failregex = \[LOGIN_ERROR\].*from : Utente sconosciuto o password errata

# Opzione:  ignoreregex
# Note.:  regex da ignorare. Se questa regex corrisponde, la riga viene ignorata.
# Valori:  TESTO

ignoreregex =

Fail2ban deve riconoscere il formato della data utilizzato nel file squirrelmail_access_log.

cd /usr/share/fail2ban/server

Usa vi per modificare il file datedetector.py e aggiungere le seguenti righe tra le sezioni del formato Apache e del formato 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

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.