Seguridad · 5 min read · Dec 29, 2025
Configurando fail2ban con SquirrelMail en Debian Lenny 5.0/ISPConfig 3
Configurando fail2ban con SquirrelMail en Debian Lenny 5.0/ISPConfig 3
En este artículo, mostraré cómo prevenir ataques de fuerza bruta con Fail2ban contra tu inicio de sesión web de SquirrelMail utilizando el plugin Squirrel Logger.
1. Requisitos
Asegúrate de que fail2ban y SquirrelMail estén instalados en una máquina Debian Lenny/ISPConfig 3.
Para instalar ISPConfig 3 + SquirrelMail, por favor sigue esta guía.
Para instalar fail2ban, por favor sigue esta guía.
2. Squirrel Logger
Descarga e instala 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.phpSi tu servidor no utiliza la hora local GMT, por favor cambia $sl_use_GMT = 1 a $sl_use_GMT = 0:
...
// ¿Registrar fechas en GMT? Si no haces esto, las fechas se
// registrarán en la zona horaria en la que se encuentre cada usuario
// (o que haya establecido en sus preferencias personales)
//
// 1 = sí
// 0 = no
//
$sl_use_GMT = 0;
...Cambia la ubicación de tu archivo de registro de $sl_logfile = $data_dir . ‘squirrelmail_access_log’; a $sl_logfile = ‘/var/log/squirrelmail.log’;:
...
// La ubicación de tu archivo de registro al registrar en un archivo.
// Asegúrate de que el usuario con el que se ejecuta tu servidor web pueda escribir
// en este archivo. Usa la variable $data_dir si deseas
// colocar el archivo de registro en el directorio de datos de SquirrelMail.
//
// Solo aplicable cuando $sl_logs incluye "file".
//
// $sl_logfile = $data_dir . 'squirrelmail_access_log';
$sl_logfile = '/var/log/squirrelmail.log';
...Cambia el formato de fecha para que coincida con la expresión regular de fail2ban de $sl_dateformat = ‘m/d/Y H:i:s’; a $sl_dateformat = ‘M j H:i:s’;:
...
// Especifica qué formato de fecha deseas
//
// Consulta el manual de PHP para la función de fecha para obtener ayuda
// en http://www.php.net/manual/function.date.php
//
// ejemplos:
//
// 'm/d/y H:i:s' == 03/10/2001 05:16:08
// 'F j, Y, g:i a' == March 10, 2001, 5:16 am
// 'D M j Y H:i:s T' == Sat Mar 10 2001 15:16:08 CDT
//
// $sl_dateformat = 'm/d/Y H:i:s';
$sl_dateformat = 'M j H:i:s';
... Crea un nuevo archivo squirrelmail.log en /var/log/:
touch /var/log/squirrelmail.log
chown www-data:www-data /var/log/squirrelmail.log
chmod 640 /var/log/squirrelmail.logLimpia la instalación:
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzConfigura SquirrelMail para usar el plugin Squirrel Logger:
squirrelmail-configure...
7. Mensaje del Día (MOTD)
8. Plugins
9. Base de datos
... Selecciona “Plugins”, en mi caso, el número 8.
...
18. spamcop
19. squirrel_logger
20. squirrelspell
21. prueba
... Selecciona squirrel_logger, en mi caso, el número 19.
...
Plugins instalados
1. delete_move_next
2. squirrelspell
3. newmail
4. squirrel_logger
... Ahora squirrel_logger es parte de los Plugins Instalados.
Guarda los datos “S” y Sal “Q”.
3. Configuración de Fail2ban
Configura fail2ban para usar el registro de SquirrelMail:
cd /etc/fail2banAbre y agrega las siguientes líneas al archivo jail.local. Si no tienes este archivo, usa el jail.conf por defecto.
vi jail.local[squirrelmail]
enabled = true
port = http,https
filter = squirrelmail
logpath = /var/log/squirrelmail.log
bantime = 300
maxretry = 4 Por favor, asegúrate de que bantime (en segundos) y maxretry estén configurados según tus requisitos.
En el directorio filter.d, crea un archivo squirrelmail.conf con el siguiente contenido:
cd filter.d
vi squirrelmail.conf# Archivo de configuración de Fail2Ban
#
# Autor: Bill Landry ((email_protected))
#
# $Revision: 510 $
[Definition]
# Opción: failregex
# Notas.: regex para coincidir con los mensajes de fallos de contraseña en el archivo de registro. El
# host debe ser coincido por un grupo llamado "host". La etiqueta "" puede
# ser utilizada para coincidencias estándar de IP/nombre de host y es solo un alias para
# (?:::f{4,6}:)?(?P\S+)
# Valores: TEXTO
failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto
# Opción: ignoreregex
# Notas.: regex para ignorar. Si esta regex coincide, la línea es ignorada.
# Valores: TEXTO
ignoreregex = IMPORTANTE: si estás utilizando otro idioma que no sea inglés, por favor cambia la línea “failregex” con el texto que squirrelmail.log te muestra en el punto 5.
Ejemplo: con el idioma español, obtengo esto en el archivo de registro.
Aug 20 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto. Así que, hago este cambio:
failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto …y reinicio fail2ban.
/etc/init.d/fail2ban restart5. Probando la instalación
cd /var/log
tail -f squirrelmail.logInicia sesión “3” veces en la interfaz web de SquirrelMail utilizando “contraseñas incorrectas”.
Este procedimiento te mostrará los intentos de inicio de sesión fallidos en las ventanas del terminal:
Aug 19 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto.
Aug 19 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto.
Aug 19 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto.Cierra el archivo squirrelmail.log:
Ctrl-cVerifica que fail2ban-regex pueda atrapar estos errores:
fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.confEjecutando pruebas
=============
Usar archivo regex : /etc/fail2ban/filter.d/squirrelmail.conf
Usar archivo de registro : /var/log/squirrelmail.log
Resultados
=======
Failregex
|- Expresiones regulares:
| [1] \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto
|
`- Número de coincidencias:
[1] 3 coincidencia(s)
Ignoreregex
|- Expresiones regulares:
|
`- Número de coincidencias:
Resumen
=======
Direcciones encontradas:
[1]
200.113.105.235 (Wed Aug 19 13:57:20 2009)
200.113.105.235 (Wed Aug 19 13:57:34 2009)
200.113.105.235 (Wed Aug 19 13:57:46 2009)
Plantillas de fecha hits:
3 hit(s): Month Day Hour:Minute:Second
0 hit(s): Weekday Month Day Hour:Minute:Second Year
0 hit(s): Weekday Month Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
Éxito, el número total de coincidencias es 3
Sin embargo, mira la sección anterior 'Ejecutando pruebas' que podría contener información importante. Si ves esta línea, todo está bien: Éxito, el número total de coincidencias es 3
6. Probemos nuestro Fail2ban
Inicia sesión “4” veces (o más, dependiendo de tu configuración de maxretry) en la interfaz web de SquirrelMail utilizando “contraseñas incorrectas”.
Cuando te bloqueen, eso significa que no puedes ver la página de inicio de sesión, por favor ejecuta:
iptables -LAhora puedes ver tu IP bloqueada xxx-xxx-xxx-xxx en la salida de iptables.
Chain fail2ban-squirrelmail (1 referencias)
target prot opt source destination
DROP all -- xxx-xxx-xxx-xxx.your.isp.info anywhere
RETURN all -- anywhere anywhere Buena suerte ;)
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.