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 las jaulas
  • 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 su servidor en busca de actividad sospechosa y prohíbe automáticamente las IP infractoras mediante la actualización de las reglas de su cortafuegos. Detiene los ataques de fuerza bruta, reduce el ruido de los registros y se ejecuta silenciosamente en segundo plano una vez configurado. Esta guía cubre la instalación en Ubuntu/Debian, la configuración del núcleo, la configuración de la jaula y algunas opciones avanzadas que vale la pena conocer.

Requisitos previos

Fail2Ban funciona en la mayoría de las distribuciones de Linux: Ubuntu, Debian, AlmaLinux, CentOS, RHEL, Rocky Linux y Fedora. Necesitarás

  • Python 3 instalado en el sistema
  • Acceso root o sudo para la instalación de paquetes y 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 los sistemas basados en RHEL, active primero el repositorio EPEL. Antes de instalar Fail2Ban, confirme que su cortafuegos está funcionando con ufw status o systemctl status firewalld.

Instalación de Fail2Ban en Ubuntu/Debian

Actualice sus paquetes e instale Fail2Ban:

sudo apt update && sudo apt upgrade -y
sudo apt install fail2ban

Habilite el servicio para que se inicie en el arranque, a continuación, iniciarlo:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

Copia la configuración por defecto a un archivo 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 las jaulas activas. Confirme que Fail2Ban está habilitado en el arranque con sudo systemctl is-enabled fail2ban.

Configuración de las jaulas

Configuración por defecto

Abra /etc/fail2ban/jail.local y ajuste la sección [DEFAULT]. Estos ajustes se aplican a todas las jaulas a menos que se anulen:

ParámetroValor recomendadoQué hace
bantime3600Bloquea una IP durante 1 hora
findtime600Cuenta los fallos dentro de una ventana de 10 minutos
maxretryde3 a 5Fallos antes de que se active un bloqueo
ignoreip127.0.0.1/8 ::1IPs que nunca son baneadas

Añade tu propia IP de gestión a ignoreip para no bloquearte a ti mismo. Ejemplo: ignoreip = 127.0.0.1/8 ::1 203.0.113.50.

Protección SSH

Habilite la jaula SSH en jail.local:

[sshd]
enabled = true

Compruebe que logpath apunta al archivo de registro correcto para su distro. Si has movido SSH a un puerto no estándar (por ejemplo, 2222), actualiza el parámetro de puerto para que coincida.

Protección del servidor web

Habilita la jaula que corresponda a tu servidor web:

  • Nginx: [nginx-http-auth] para fallos de autenticación, [nginx-botsearch] para bots maliciosos
  • Apache: [apache-auth] para autenticación, [apache-badbots] para bots

Cárcel de recirculación

La jaula [recidive ] atrapa IPs que siguen siendo baneadas a través de otras jaulas y aplica una penalización más larga, normalmente una semana (604.800 segundos). Es útil para atacantes persistentes que rotan su enfoque.

Después de hacer cambios, recarga:

sudo systemctl restart fail2ban
sudo fail2ban-client status

Pruebas y supervisión

Probar las prohibiciones

Antes de confiar en Fail2Ban en producción, pruébelo. Desde una máquina remota (no su IP de administrador), intente iniciar sesión SSH hasta superar el número máximo de intentos. Usted debe ser bloqueado. Confirme con:

sudo fail2ban-client status sshd

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

tail -f /var/log/fail2ban.log

Si baneas accidentalmente una IP legítima, desbanéala:

sudo fail2ban-client set sshd unbanip 203.0.113.50

Control diario

Revisa el historial de baneos consultando el registro:

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

Comandos de gestión útiles:

ComandoPropósito
fail2ban-client statusLista todas las jaulas activas
fail2ban-client prohibidoMostrar todas las IPs actualmente baneadas
fail2ban-client set <cárcel> unbanip <IP>Desbanear una IP específica
fail2ban-client unban --allBorrar todos los bans
fail2ban-client set <jail> banip <IP>Banea manualmente una IP

Los bans persisten a través de reinicios. Fail2Ban los almacena en una base de datos SQLite en /var/lib/fail2ban/fail2ban.sqlite3.

Configuración avanzada

Cambiar a nftables

nftables es el sustituto moderno de iptables. Maneja IPv4 e IPv6 en una sola estructura, escala mejor con grandes listas de prohibición, y tiene limitación de velocidad incorporada. Si estás en Ubuntu 22.04+, Debian 11+, o cualquier distribución reciente, es la mejor opción.

Configúralo en jail.local:

[DEFAULT]
banaction = nftables-multiport

Reinicie Fail2Ban, luego verifique con sudo nft list ruleset. Debería ver f2b-table y f2b-chain en la salida. Utiliza iptables sólo si estás en un sistema antiguo o tienes requisitos de compatibilidad.

Notificaciones por correo electrónico

Por defecto, Fail2Ban banea silenciosamente. Para recibir alertas por correo electrónico, añada lo siguiente a la sección [DEFAULT] de jail.local:

[DEFAULT]
destemail = [email protected]
sender = [email protected]
mta = sendmail
action = %(action_mwl)s

La acción action_mwl envía un correo electrónico con los detalles del ban, datos WHOIS, y las líneas de registro que activaron el ban. Usa action_mw si sólo quieres los datos de WHOIS. Necesitarás un agente de transferencia de correo como sendmail instalado, o una retransmisión SMTP configurada a través de algo como msmtp.

Para alertas de Slack o Discord, crea un script que envíe un webhook y conéctalo a través de un archivo de acción personalizado en /etc/fail2ban/action.d/.

Si usted está buscando un servidor con acceso root completo y ancho de banda no medido 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
Lista de comprobación para el refuerzo de servidores Linux

Lista de comprobación para el refuerzo de servidores Linux

Lista de comprobación paso a paso para reforzar un servidor Linux. Cubre SSH, cortafuegos, parches, permisos de archivos, SELinux/AppArmor y registro de auditorías

15 min de lectura - 8 de mayo de 2026

tutorial de iperf3: Prueba de velocidad de red en Linux y Windows

10 min de lectura - 7 de mayo de 2026

Más artículos