Operar Fail2Ban de manera efectiva: Guía de optimización de seguridad basada en casos prácticos
1. Introducción
Al administrar un servidor Linux, a menudo experimentarás múltiples intentos de inicio de sesión simplemente por tener el puerto SSH abierto. Una herramienta que muchos utilizan para prevenir esto es Fail2Ban. Sin embargo, simplemente instalarlo y configurarlo no es suficiente. Con el tiempo, la lista de bloqueados puede acumularse en cientos o miles, impactando el rendimiento del servidor.
Este artículo comparte cómo operar Fail2Ban de manera más efectiva y eficiente basado en experiencias reales de administración de servidores.
Si te preguntas sobre los métodos de instalación y configuración básica de Fail2Ban, consulta nuestro artículo anterior: El guardián de los servidores Linux, Fail2Ban
2. Experiencia práctica: 1,113 IP bloqueadas en 3 semanas
Tras aproximadamente 3 semanas de haber configurado fail2ban
en mi servidor Linux de prueba, un día ejecuté el siguiente comando:
sudo fail2ban-client status sshd
Los resultados fueron los siguientes:
Actualmente fallidos: 1
Total fallidos: 5330
Actualmente bloqueados: 1110
Total bloqueados: 1113
En 3 semanas, se bloquearon 1,113 IPs, de las cuales 1,110 todavía estaban bloqueadas. Esto se debió a que configuré bantime = -1
para un bloqueo permanente.
Al principio, configuré con la mentalidad de “¡no perdonaré a quienes intenten una sola vez!”, pero después de ver miles de IPs bloqueadas acumulándose en
iptables
, comencé a preocuparme por el consumo de recursos del sistema y la eficiencia de la gestión.
Finalmente, comencé a reflexionar sobre un modo de operación sostenible y estratégico para Fail2Ban.
3. Estrategia de mejora en la configuración de Fail2Ban
✅ Ajustemos bantime de forma flexible
- El bloqueo temporal es más realista que el bloqueo permanente.
- Ejemplo:
-
bantime = 86400 # Bloqueo de 1 día findtime = 600 # En 10 minutos maxretry = 3 # 3 fallos
✅ Utilizar la cárcel de reincidencia
🔎 ¿Qué es la cárcel de reincidencia?
Es una función avanzada que
fail2ban
emplea para monitorear el archivofail2ban.log
. Cuando una IP es bloqueada repetidamente en múltiples cárceles, esta IP es bloqueada a largo plazo. En otras palabras, es un 'sistema de control de reincidencia' que castiga más severamente a los reincidentes.Generalmente, las cárceles individuales como
sshd
,nginx
,ftp
bloquean solo por un corto periodo de tiempo, pero la cárcel derecidive
selecciona solo las IPs con 'historial delictivo acumulativo' y las bloquea por más tiempo.
- Aplicar bloqueo a largo plazo solo a las IPs que son bloqueadas repetidamente
- Los atacantes comunes desaparecen en un día, pero los reincidentes pueden ser filtrados
- Ejemplo de configuración:
-
[recidive] enabled = true logpath = /var/log/fail2ban.log bantime = 604800 # 1 semana findtime = 86400 maxretry = 5
✅ Automatización de la gestión de registros
- Configurar logrotate para limpiar automáticamente antes de que
/var/log/fail2ban.log
se vuelva grande - Usar cron o systemd timer para resumir y enviar por correo los resultados de
fail2ban-client status
4. Ejemplo de script de referencia
#!/bin/bash
fail2ban-client status sshd > /tmp/sshd-status.log
echo "Cuenta de bloqueos actuales: $(grep 'Actualmente bloqueados' /tmp/sshd-status.log)" | mail -s "Estado de Fail2Ban SSHD" your@email.com
5. Conclusión: Fail2Ban es una herramienta, no un arma
Fail2Ban es una herramienta muy útil para detener ataques aleatorios, pero una gestión excesiva puede convertirse en una causa de sobrecarga del servidor en lugar de un simple bloqueo.
Al implementar políticas de bloqueo realistas junto con herramientas de gestión automatizadas, Fail2Ban se transforma de una carga a un sólido socio de seguridad.
Próximo artículo
Exploraremos la configuración de logrotate para prevenir que el archivo de log
/var/log/fail2ban.log
se vuelva excesivamente grande. Aquellos interesados, ¡suscríbanse!
No hay comentarios.