Fail2Ban es un demonio de seguridad que monitorea los archivos de registro de tu servidor y bloquea automáticamente las IPs que muestran comportamiento malicioso, como múltiples intentos fallidos de contraseña. Instalarlo en tu VPS es una de las medidas de mantenimiento más efectivas y con menor costo de mantenimiento que puedes aplicar.
¿Por qué necesitas Fail2Ban en tu VPS?
Cualquier servidor Linux con un puerto SSH expuesto a Internet recibe cientos —a veces miles— de intentos de inicio de sesión al día. Los bots escanean rangos de IP completos buscando contraseñas débiles o cuentas por defecto.
Sin protección activa, estas pruebas consumen recursos del servidor y, en el peor caso, comprometen la máquina. Fail2Ban actúa como un guardia automatizado: lee tus logs, identifica patrones sospechosos y añade reglas de firewall para cortar el acceso a los atacantes antes de que logren entrar.
Las principales amenazas que mitiga:
- Ataques de diccionario y fuerza bruta en SSH — el caso de uso más común.
- Intentos de login en paneles web (cPanel, Plesk, WordPress).
- Escaneos de puertos repetidos desde la misma IP.
- Abuso de APIs o formularios con múltiples peticiones fallidas.
Instalación de Fail2Ban en Linux
La instalación varía ligeramente según tu distribución. En Debian/Ubuntu:
sudo apt update && sudo apt install fail2ban -y
En CentOS/AlmaLinux/Rocky Linux:
sudo dnf install epel-release -y
sudo dnf install fail2ban -y
Activa e inicia el servicio:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Verifica que esté corriendo:
sudo systemctl status fail2ban
Configuración básica: el archivo jail.local
Fail2Ban separa la configuración en dos capas: jail.conf (valores por defecto, no tocar) y jail.local (tus personalizaciones). Siempre trabaja con el segundo.
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Los parámetros globales más importantes en la sección [DEFAULT]:
| Parámetro | Qué hace | Valor recomendado |
|---|---|---|
bantime |
Duración del bloqueo | 1h (o -1 para permanente) |
findtime |
Ventana de tiempo analizada | 10m |
maxretry |
Intentos fallidos antes del ban | 5 |
ignoreip |
IPs que nunca se bloquean | Tu IP de oficina / red LAN |
Importante: agrega siempre tu propia IP en ignoreip para no quedarte fuera del servidor por error.
ignoreip = 127.0.0.1/8 ::1 203.0.113.50
Activar y afinar el jail de SSH
El jail [sshd] es el más crítico. Busca (o añade) esta sección en jail.local:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
maxretry = 3
bantime = 24h
Si cambiaste el puerto SSH por defecto (22) a otro —buena práctica—, especifícalo:
port = 2222
Recarga Fail2Ban después de cualquier cambio:
sudo fail2ban-client reload
Comandos de operación diaria
Una vez activo, estos son los comandos que usarás con más frecuencia:
Ver el estado general y los jails activos
sudo fail2ban-client status
sudo fail2ban-client status sshd
Desbloquear una IP específica
sudo fail2ban-client set sshd unbanip 198.51.100.42
Bloquear una IP manualmente
sudo fail2ban-client set sshd banip 198.51.100.99
Ver el log de Fail2Ban en tiempo real
sudo tail -f /var/log/fail2ban.log
Para un mantenimiento mensual completo de tu servidor, consulta también nuestra guía sobre el checklist de mantenimiento VPS.
Proteger otros servicios además de SSH
Fail2Ban incluye filtros predefinidos para docenas de aplicaciones. Algunos jails útiles:
- Apache / Nginx — bloquea escaneos de vulnerabilidades y peticiones malformadas (
[apache-auth],[nginx-http-auth]). - Postfix / Dovecot — protege tu servidor de correo contra spam bots (
[postfix],[dovecot]). - WordPress xmlrpc — filtra ataques al endpoint de XML-RPC con un filtro personalizado.
Para cada uno, añade la sección correspondiente en jail.local con enabled = true y ajusta maxretry y bantime según el nivel de riesgo.
Si tu VPS está detrás de Cloudflare o de un proxy inverso, asegúrate de que el log registre la IP real del cliente (cabecera X-Forwarded-For o módulo mod_remoteip en Apache), no la IP del proxy, o Fail2Ban bloqueará el proxy en lugar del atacante.
Para un servidor bien configurado desde los cimientos, contacta a los especialistas de elenlace.com — ofrecemos configuración y administración de VPS gestionados.
Conclusiones clave
- Fail2Ban lee logs y aplica reglas de firewall automáticamente para bloquear IPs sospechosas.
- Siempre edita
jail.local, nuncajail.conf. - Añade tu propia IP a
ignoreipantes de activar cualquier jail. - El jail
[sshd]es el punto de partida; amplía la protección a Apache, Nginx o tu servidor de correo según tu stack. - Si tu servidor está detrás de un proxy, verifica que los logs registren la IP del cliente real.
Fail2Ban es una capa de defensa sencilla pero muy efectiva. Configúralo hoy mismo y deja que trabaje en segundo plano mientras tú te concentras en tu negocio. ¿Necesitas ayuda para blindar tu infraestructura completa? El equipo de elenlace.com puede hacer la configuración por ti con un plan de VPS administrado.
Preguntas frecuentes
¿Fail2Ban reemplaza al firewall?
No. Fail2Ban complementa al firewall: añade y elimina reglas dinámicamente, pero no sustituye a UFW, iptables o firewalld. Deberías tener ambos activos al mismo tiempo.
¿Qué pasa si me bloqueo yo mismo?
Si tienes acceso a la consola VPS (KVM/IPMI) desde tu proveedor, entra por ahí y ejecuta sudo fail2ban-client set sshd unbanip TU_IP. Para evitarlo, siempre pon tu IP en ignoreip antes de activar Fail2Ban.
¿Cuánto consume Fail2Ban en recursos?
Muy poco. El proceso usa apenas unos pocos MB de RAM y su impacto en CPU es mínimo, incluso en un VPS de 1 GB. Es uno de los demonios de seguridad más ligeros disponibles.
¿Funciona con IPv6?
Sí. Fail2Ban soporta IPv6 de forma nativa. Asegúrate de que allowipv6 = auto (o yes) esté en la sección [DEFAULT] de tu jail.local para que los bans se apliquen también a direcciones IPv6.
Recursos útiles
Otros proveedores y guías que vale la pena comparar: