Cómo instalar y configurar Fail2Ban en Linux

9 min de lectura - 14 de mayo de 2026

hero section cover
Tabla de contenidos
  • Cómo instalar y configurar Fail2Ban en Linux
  • Requisitos previos
  • Instalación de Fail2Ban en Ubuntu/Debian
  • Configuración de Jails
  • Pruebas y supervisión
  • Configuración avanzada
Compartir

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.log en sistemas basados en Debian, /var/log/secure en 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 fail2ban

Habilite el servicio para que se inicie al arrancar el sistema y, a continuación, inícielo:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Copia 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.local

Comprueba que todo funciona:

sudo systemctl status fail2ban
sudo fail2ban-client status

El 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ámetroValor recomendadoQué hace
bantime3600Bloquea una IP durante 1 hora
findtime600Cuenta los fallos en un intervalo de 10 minutos
maxretry3 hasta 5fallos antes de que se active el bloqueo
ignoreip127.0.0.1/8 ::1IP 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 = true

Comprueba 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 status

Pruebas 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 sshd

Observa cómo se producen los bloqueos en tiempo real:

tail -f /var/log/fail2ban.log

Si bloqueas accidentalmente una IP legítima, desbloquéala:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Supervisión diaria

Revisa el historial de bloqueos buscando en el registro:

grep "Ban\|Unban" /var/log/fail2ban.log

Comandos de gestión útiles:

ComandoPropósito
fail2ban-client statusMostrar todas las jaulas activas
fail2ban-client bannedMostrar todas las IP bloqueadas actualmente
fail2ban-client set <jail> unbanip <IP>Desbloquear una IP específica
fail2ban-client unban --allBorrar 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-multiport

Reinicia 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)s

La 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.

background image
¿Su servidor está frenando su crecimiento?

¿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 ahora

Blog

Destacados de la semana

Más artículos
Por qué es importante tener un VPS potente y sin contador

Por 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

Más artículos