Sicurezza · 5 min read · Dec 29, 2025
Configurare fail2ban con SquirrelMail su Debian Lenny 5.0/ISPConfig 3
Configurare fail2ban con SquirrelMail su Debian Lenny 5.0/ISPConfig 3
In questo articolo mostrerò come prevenire attacchi di forza bruta con Fail2ban contro il tuo accesso Web SquirrelMail utilizzando il plugin Squirrel Logger.
1. Requisiti
Assicurati che fail2ban e SquirrelMail siano installati su una macchina Debian Lenny/ISPConfig 3.
Per installare ISPConfig 3 + SquirrelMail, segui questa guida.
Per installare fail2ban, segui questa guida.
2. Squirrel Logger
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
cp config_example.php config.phpConfigura Squirrel Logger:
vi config.phpSe il tuo server non utilizza l’ora locale GMT, cambia $sl_use_GMT = 1 in $sl_use_GMT = 0:
...
// 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;
...Cambia la posizione del tuo file di log da $sl_logfile = $data_dir . ‘squirrelmail_access_log’; a $sl_logfile = ‘/var/log/squirrelmail.log’;:
...
// La posizione del tuo file di log quando registri su file.
// Assicurati che l'utente con cui gira il tuo server web possa scrivere
// su questo file. Usa la variabile $data_dir se vuoi
// posizionare il file di log nella directory dati di SquirrelMail.
//
// Applicabile solo quando $sl_logs include "file".
//
// $sl_logfile = $data_dir . 'squirrelmail_access_log';
$sl_logfile = '/var/log/squirrelmail.log';
...Cambia il formato della data per corrispondere all’espressione regolare di fail2ban da $sl_dateformat = ‘m/d/Y H:i:s’; a $sl_dateformat = ‘M j H:i:s’;:
...
// Specifica quale formato di data desideri
//
// Vedi il manuale PHP per la funzione data per aiuto
// su http://www.php.net/manual/function.date.php
//
// esempi:
//
// 'm/d/y H:i:s' == 03/10/2001 05:16:08
// 'F j, Y, g:i a' == 10 marzo 2001, 5:16 am
// 'D M j Y H:i:s T' == Sab Mar 10 2001 15:16:08 CDT
//
// $sl_dateformat = 'm/d/Y H:i:s';
$sl_dateformat = 'M j H:i:s';
... Crea un nuovo file squirrelmail.log in /var/log/:
touch /var/log/squirrelmail.log
chown www-data:www-data /var/log/squirrelmail.log
chmod 640 /var/log/squirrelmail.logPulisci l’installazione:
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzConfigura SquirrelMail per utilizzare il plugin Squirrel Logger:
squirrelmail-configure...
7. Messaggio del giorno (MOTD)
8. Plugin
9. Database
... Seleziona “Plugin”, nel mio caso, numero 8.
...
18. spamcop
19. squirrel_logger
20. squirrelspell
21. test
... Seleziona squirrel_logger, nel mio caso, numero 19.
...
Plugin installati
1. delete_move_next
2. squirrelspell
3. newmail
4. squirrel_logger
... Ora squirrel_logger è parte dei Plugin installati.
Salva i dati “S” e Esci “Q”.
3. Configurazione di Fail2ban
Configura fail2ban per utilizzare il log di SquirrelMail:
cd /etc/fail2banApri e aggiungi le seguenti righe al file jail.local. Se non hai questo file, usa il file di default jail.conf.
vi jail.local[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/log/squirrelmail.log
bantime = 300
maxretry = 4 Assicurati che bantime (in secondi) e maxretry siano impostati secondo le tue esigenze.
Nella directory filter.d, crea un file squirrelmail.conf con il seguente contenuto:
cd filter.d
vi squirrelmail.conf# File di configurazione 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". Il tag "" può
# essere utilizzato 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 = IMPORTANTE: se stai utilizzando un’altra lingua oltre all’inglese, cambia la riga “failregex” con il testo che squirrelmail.log ti mostra nel punto 5.
Esempio: con la lingua spagnola, ottengo questo nel file di log.
20 agosto 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) da XXX.XXX.XX.XX: Utente o password errata. Quindi, faccio questa modifica:
failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto …e riavvio fail2ban.
/etc/init.d/fail2ban restart5. Testare l’installazione
cd /var/log
tail -f squirrelmail.logAccedi “3” volte all’interfaccia Web di SquirrelMail utilizzando “password errate”.
Questa procedura ti mostrerà i tentativi di accesso falliti nelle finestre del terminale:
19 agosto 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) da XXX.XXX.XX.XX: Utente sconosciuto o password errata.
19 agosto 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) da XXX.XXX.XX.XX: Utente sconosciuto o password errata.
19 agosto 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) da XXX.XXX.XX.XX: Utente sconosciuto o password errata.Chiudi il file squirrelmail.log:
Ctrl-cVerifica che fail2ban-regex possa catturare questi errori:
fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.confEsecuzione dei test
=============
Usa il file regex : /etc/fail2ban/filter.d/squirrelmail.conf
Usa il file di log : /var/log/squirrelmail.log
Risultati
=======
Failregex
|- Espressioni regolari:
| [1] \[LOGIN_ERROR\].*from : Utente sconosciuto o password errata
|
`- Numero di corrispondenze:
[1] 3 corrispondenza(e)
Ignoreregex
|- Espressioni regolari:
|
`- Numero di corrispondenze:
Riepilogo
=======
Indirizzi trovati:
[1]
200.113.105.235 (Mer 19 agosto 13:57:20 2009)
200.113.105.235 (Mer 19 agosto 13:57:34 2009)
200.113.105.235 (Mer 19 agosto 13:57:46 2009)
Colpi del modello di data:
3 colpo(i): Mese Giorno Ora:Minuto:Secondo
0 colpo(i): Giorno della settimana Mese Giorno Ora:Minuto:Secondo Anno
0 colpo(i): Giorno della settimana Mese Giorno Ora:Minuto:Secondo
0 colpo(i): Anno/Mese/Giorno Ora:Minuto:Secondo
0 colpo(i): Giorno/Mese/Anno Ora:Minuto:Secondo
0 colpo(i): Giorno/Mese/Anno:Ora:Minuto:Secondo
0 colpo(i): Anno-Mese-Giorno Ora:Minuto:Secondo
0 colpo(i): Giorno-Mese-Anno Ora:Minuto:Secondo[.Millisecondo]
0 colpo(i): TAI64N
0 colpo(i): Epoch
0 colpo(i): ISO 8601
Successo, il numero totale di corrispondenze è 3
Tuttavia, guarda la sezione sopra 'Esecuzione dei test' che potrebbe contenere informazioni importanti. Se vedi questa riga, tutto va bene: Successo, il numero totale di corrispondenze è 3
6. Testiamo il nostro Fail2ban
Accedi “4” volte (o più, a seconda della tua configurazione maxretry) all’interfaccia Web di SquirrelMail utilizzando “password errate”.
Quando vieni bloccato, significa che non puoi vedere la pagina di accesso, esegui:
iptables -LOra puoi vedere il tuo IP bloccato xxx-xxx-xxx-xxx nell’output di iptables.
Chain fail2ban-squirrelmail (1 riferimenti)
target prot opt source destination
DROP all -- xxx-xxx-xxx-xxx.your.isp.info anywhere
RETURN all -- anywhere anywhere Buona fortuna ;)
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.