Protege tu servidor: instala y configura Fail2ban
Aprende a instalar y configurar Fail2ban para proteger tu servidor Linux contra ataques de fuerza bruta y accesos no autorizados.
Si gestionas un servidor Linux, sabes que los intentos de acceso no autorizado son constantes. Fail2ban es una herramienta esencial que analiza logs del sistema y bloquea direcciones IP tras detectar comportamientos sospechosos, como múltiples intentos fallidos de SSH o WordPress. En esta guía práctica te mostraré cómo instalarlo y configurarlo para reforzar la seguridad de tu servidor.
Instalación de Fail2ban
En la mayoría de distribuciones basadas en Debian/Ubuntu, la instalación es directa desde los repositorios oficiales:
sudo apt update
sudo apt install fail2ban -y
Para sistemas CentOS/RHEL/Fedora:
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
Una vez instalado, habilitamos el servicio para que arranque con el sistema:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Verifica que está activo con sudo systemctl status fail2ban.
Configuración básica: proteger SSH
Fail2ban trabaja con archivos de configuración en /etc/fail2ban/. La configuración principal está en jail.conf, pero nunca edites ese archivo directamente, ya que se sobrescribe con cada actualización. En su lugar, crea un archivo jail.local que sobrescribe las opciones:
sudo nano /etc/fail2ban/jail.local
Añade esta configuración básica para proteger SSH:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 5
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
Explicación:
bantime: tiempo de bloqueo en segundos (3600 = 1 hora).findtime: ventana de tiempo en segundos donde se cuentan los intentos.maxretry: número de fallos permitidos antes del bloqueo.
Guarda el archivo y reinicia Fail2ban:
sudo systemctl restart fail2ban
Proteger WordPress de ataques de fuerza bruta
Si tienes WordPress, los ataques al wp-login.php son pan de cada día. Fail2ban puede bloquearlos fácilmente. Primero, crea un filtro personalizado:
sudo nano /etc/fail2ban/filter.d/wordpress.conf
Pega esto:
[Definition]
failregex = ^<HOST> .* "POST /wp-login.php HTTP/.*" 200
ignoreregex =
Ahora añade la jail en jail.local:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/apache2/access.log
maxretry = 5
bantime = 3600
Si usas Nginx, cambia logpath por /var/log/nginx/access.log. Reinicia Fail2ban y la protección estará activa.
Monitoreo y gestión de baneos
Para ver el estado de las jails activas:
sudo fail2ban-client status
Para ver detalles de una jail específica (por ejemplo, SSH):
sudo fail2ban-client status sshd
Si necesitas desbloquear manualmente una IP:
sudo fail2ban-client set sshd unbanip 192.168.1.100
Y para comprobar si una IP está baneada:
sudo fail2ban-client status sshd | grep "Banned IP list"
Conclusión
Fail2ban es una herramienta ligera pero potentísima que, con una configuración mínima, puede ahorrarte muchos dolores de cabeza. Te recomiendo empezar protegiendo SSH y WordPress, y luego explorar jails adicionales para servicios como vsftpd, Postfix o Nginx. Recuerda siempre probar los cambios en un entorno de pruebas antes de aplicarlos en producción. La seguridad de tu servidor te lo agradecerá.