Cómo instalar y configurar Fail2Ban en Linux
9 min de lectura - 14 de mayo de 2026

Guía paso a paso para instalar, configurar y probar Fail2Ban en servidores Linux basados en Ubuntu, Debian y RHEL.
Cómo instalar y configurar Fail2Ban en Linux
Fail2Ban supervisa los registros de tu servidor en busca de actividades sospechosas y bloquea automáticamente las direcciones IP infractoras actualizando las reglas de tu cortafuegos. Detiene los ataques de fuerza bruta, reduce el ruido de los registros y, una vez configurado, funciona silenciosamente en segundo plano. Esta guía abarca la instalación en Ubuntu/Debian, la configuración básica, la configuración de la «jail» y algunas opciones avanzadas que vale la pena conocer.
Requisitos previos
Fail2Ban funciona en la mayoría de distribuciones de Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux y Fedora. Necesitarás:
- Python 3 instalado en el sistema
- Acceso de root o sudo para la instalación de paquetes y los cambios en el cortafuegos
- Un cortafuegos activo (iptables, nftables, ufw o firewalld)
- Archivos de registro que capturen los intentos fallidos de inicio de sesión (
/var/log/auth.logen sistemas basados en Debian,/var/log/secureen sistemas basados en RHEL)
En sistemas basados en RHEL, habilita primero el repositorio EPEL. Antes de instalar Fail2Ban, comprueba que tu cortafuegos está en funcionamiento con ufw status o systemctl status firewalld.
Instalación de Fail2Ban en Ubuntu/Debian
Actualiza tus paquetes e instala Fail2Ban:
sudo apt update && sudo apt upgrade -y
sudo apt install fail2banHabilite el servicio para que se inicie al arrancar el sistema y, a continuación, inícielo:
sudo systemctl enable fail2ban
sudo systemctl start fail2banCopia la configuración predeterminada a un archivo de configuración local. Edita siempre jail.local, no jail.conf, para que las actualizaciones de paquetes no sobrescriban tu configuración:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localComprueba que todo funciona:
sudo systemctl status fail2ban
sudo fail2ban-client statusEl primer comando debería mostrar «Active: active (running)». El segundo muestra una lista de tus jails activas. Confirma que Fail2Ban está habilitado al arrancar con sudo systemctl is-enabled fail2ban.
Configuración de Jails
Configuración predeterminada
Abrir /etc/fail2ban/jail.local y ajuste la [DEFAULT] . Estos ajustes se aplican a todas las jails a menos que se anulen:
| Parámetro | Valor recomendado | Qué hace |
|---|---|---|
bantime | 3600 | Bloquea una IP durante 1 hora |
findtime | 600 | Cuenta los fallos en un intervalo de 10 minutos |
maxretry | 3 hasta 5 | fallos antes de que se active el bloqueo |
ignoreip | 127.0.0.1/8 ::1 | IP que nunca se bloquean |
Añade tu propia IP de administración a ignoreip para que no te quedes fuera. Ejemplo: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.
Protección SSH
Habilita la jaula SSH en jail.local:
[sshd]
enabled = trueComprueba que logpath apunte al archivo de registro correcto para tu distribución. Si has cambiado el puerto de SSH a uno no estándar (por ejemplo, 2222), actualiza el port parámetro para que coincida.
Protección del servidor web
Habilite la jaula que corresponda a su servidor web:
- Nginx:
[nginx-http-auth]para fallos de autenticación,[nginx-botsearch]para bots maliciosos - Apache:
[apache-auth]para la autenticación,[apache-badbots]para bots
Recidive Jail
La [recidive] jail detecta las IP que siguen siendo bloqueadas en otros jails y les aplica una penalización más larga, normalmente de una semana (604 800 segundos). Es útil para atacantes persistentes que van cambiando de estrategia.
Después de realizar los cambios, actualiza la página:
sudo systemctl restart fail2ban
sudo fail2ban-client statusPruebas y supervisión
Pruebas de bloqueos
Antes de confiar en Fail2Ban en producción, pruébalo. Desde una máquina remota (no tu IP de administrador), intenta iniciar sesión por SSH hasta que superes maxretry. Deberías quedar bloqueado. Confírmalo con:
sudo fail2ban-client status sshdObserva cómo se producen los bloqueos en tiempo real:
tail -f /var/log/fail2ban.logSi bloqueas accidentalmente una IP legítima, desbloquéala:
sudo fail2ban-client set sshd unbanip 203.0.113.50Supervisión diaria
Revisa el historial de bloqueos buscando en el registro:
grep "Ban\|Unban" /var/log/fail2ban.logComandos de gestión útiles:
| Comando | Propósito |
|---|---|
fail2ban-client status | Mostrar todas las jaulas activas |
fail2ban-client banned | Mostrar todas las IP bloqueadas actualmente |
fail2ban-client set <jail> unbanip <IP> | Desbloquear una IP específica |
fail2ban-client unban --all | Borrar todas las prohibiciones |
fail2ban-client set <jail> banip <IP> | Bloquear manualmente una IP |
Los bloqueos persisten tras los reinicios. Fail2Ban los almacena en una base de datos SQLite en /var/lib/fail2ban/fail2ban.sqlite3.
Configuración avanzada
Cambio a nftables
nftables es el sustituto moderno de iptables. Gestiona IPv4 e IPv6 en un único marco, se adapta mejor a listas de bloqueo extensas y cuenta con limitación de velocidad integrada. Si utilizas Ubuntu 22.04 o superior, Debian 11 o superior, o cualquier distribución reciente, es la mejor opción.
Configúralo en jail.local:
[DEFAULT]
banaction = nftables-multiportReinicia Fail2Ban y, a continuación, comprueba con sudo nft list ruleset. Deberías ver f2b-table y f2b-chain en la salida. Sigue utilizando solo iptables si tienes un sistema antiguo o requisitos de compatibilidad.
Notificaciones por correo electrónico
Por defecto, Fail2Ban bloquea de forma silenciosa. Para recibir alertas por correo electrónico, añade lo siguiente a la [DEFAULT] sección de jail.local:
[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)sLa action_mwl acción envía un correo electrónico con los detalles del bloqueo, los datos de WHOIS y las líneas del registro que lo activaron. Utiliza action_mw si solo quieres los datos de WHOIS. Necesitarás tener instalado un agente de transferencia de correo como sendmail, o un relé SMTP configurado a través de algo como msmtp.
Para alertas en Slack o Discord, crea un script que envíe un webhook y configúralo a través de un archivo de acción personalizada en /etc/fail2ban/action.d/.
Si buscas un servidor con acceso root completo y ancho de banda ilimitado para ejecutar Fail2Ban, echa un vistazo a los servidores dedicados de FDC.

¿Cansado de despliegues lentos o límites de ancho de banda? FDC Servers ofrece potencia dedicada instantánea, alcance global y planes flexibles diseñados para cualquier escala. ¿Listo para actualizar?
Libere el rendimiento ahoraPor qué es importante tener un VPS potente y sin contador
Un VPS sin contador proporciona un ancho de banda fijo a una velocidad de puerto fija. En qué se diferencia de los planes con contador, cuándo compensa y qué hay que comprobar antes de comprarlo.
7 min de lectura - 9 de mayo de 2025
Gestión de memoria en Linux: Swap, OOM Killer y Cgroups
12 min de lectura - 31 de mayo de 2026