Saltar al contenido
Security 2024-12-28 9 min de lectura

Instalación y Configuración de Fail2Ban para Evitar Ataques de Fuerza Bruta

Cualquier servidor conectado a internet recibe, tarde o temprano, intentos automatizados de acceso por fuerza bruta: bots que prueban miles de combinaciones de usuario y contraseña contra SSH, paneles web o servicios FTP. **Fail2Ban** es una herramienta de código abierto que monitorea los registros del sistema en tiempo real y bloquea automáticamente las IPs que muestran ese patrón de comportamiento, sin que tengas que revisar logs manualmente. En esta guía instalamos y configuramos Fail2Ban desde cero, incluyendo notificaciones por correo y filtros personalizados.

Instalación y Configuración de Fail2Ban para Evitar Ataques de Fuerza Bruta
#Security#Linux#Fail2Ban#SSH
T
Equipo Terranode
Editorial

Qué necesitas antes de empezar

  • Un servidor Linux funcional (Ubuntu, Debian, CentOS u otra distribución compatible).
  • Acceso SSH con permisos de sudo.
  • Conocimientos básicos de edición de archivos por terminal.

Ventajas de usar Fail2Ban

  • Automatización de bloqueos: no necesitas revisar manualmente los logs en busca de comportamiento sospechoso.
  • Configuración flexible: puedes definir reglas distintas para cada servicio según su nivel de exposición.
  • Protección multiservicio: funciona con SSH, servidores web (Apache/Nginx), FTP y muchos otros de forma nativa.
  • Mejora del rendimiento: al bloquear IPs maliciosas rápidamente, reduces la carga que generan sus intentos repetidos sobre el servidor.

Paso 1: Instalar Fail2Ban

En distribuciones basadas en Debian/Ubuntu:

bash
sudo apt update
sudo apt install fail2ban -y

En distribuciones basadas en Red Hat/CentOS:

bash
sudo yum install epel-release -y
sudo yum install fail2ban -y

Verifica que la instalación fue exitosa:

bash
fail2ban-client --version

Paso 2: Crear el archivo de configuración local

Fail2Ban recomienda nunca editar directamente jail.conf, ya que se sobrescribe con futuras actualizaciones. En su lugar, copia su contenido a un archivo local que sí persiste:

bash
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Paso 3: Configurar protección básica para SSH

Edita el archivo local:

bash
sudo nano /etc/fail2ban/jail.local

Y dentro de la sección [sshd], ajusta o agrega:

ini
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 5
bantime = 600
findtime = 600

Cada parámetro cumple una función específica:

  • maxretry: número de intentos fallidos permitidos antes de bloquear la IP.
  • bantime: tiempo en segundos que una IP permanece bloqueada (600 = 10 minutos en este ejemplo).
  • findtime: ventana de tiempo en la que se cuentan los intentos fallidos (también 10 minutos aquí).

Reinicia el servicio para aplicar los cambios:

bash
sudo systemctl restart fail2ban

Verificar el estado y monitorear bloqueos

Para ver el estado general de Fail2Ban y qué jails están activas:

bash
sudo fail2ban-client status

Para ver el detalle de bloqueos específicos de la jail SSH (IPs baneadas, intentos totales, etc.):

bash
sudo fail2ban-client status sshd

Habilitar notificaciones por correo

Para recibir un aviso cada vez que Fail2Ban bloquee una IP, edita nuevamente el archivo local:

bash
sudo nano /etc/fail2ban/jail.local
ini
[DEFAULT]
action = %(action_mwl)s
sender = [email protected]
destemail = [email protected]
mta = sendmail
  • action: define qué tan detallada es la notificación (action_mwl incluye además un extracto del log relevante).
  • destemail: la dirección de correo donde quieres recibir las alertas.

Recuerda que necesitas un agente de correo (como sendmail o postfix) correctamente configurado en el servidor para que estas notificaciones lleguen.

Proteger otros servicios además de SSH

Fail2Ban incluye filtros predefinidos para muchos servicios comunes. Por ejemplo, para proteger la autenticación de Apache contra fuerza bruta:

ini
[apache-auth]
enabled = true
port = http,https
filter = apache-auth
logpath = /var/log/apache2/error.log
maxretry = 3

El mismo patrón aplica para Nginx, vsftpd, Postfix y decenas de servicios más, cada uno con su propia sección en jail.local.

Crear filtros personalizados

Si necesitas proteger un servicio que no tiene un filtro predefinido, puedes crear el tuyo. Primero, crea el archivo de filtro:

bash
sudo nano /etc/fail2ban/filter.d/mi_servicio.conf

Y define una expresión regular que identifique los intentos fallidos en el log correspondiente:

ini
[Definition]
failregex = <HOST> - - .* 401

Finalmente, configura la jail correspondiente en jail.local apuntando a este nuevo filtro y al archivo de log de tu servicio.

Desbloquear una IP manualmente

Si una IP legítima queda bloqueada por error (por ejemplo, tu propia IP tras varios intentos fallidos de tipeo), puedes desbloquearla al instante:

bash
sudo fail2ban-client unban IP_DE_BLOQUEO

Fail2Ban es una de esas herramientas que, una vez configuradas, siguen protegiendo tu servidor de forma silenciosa e ininterrumpida. Con una configuración básica para SSH ya reduces drásticamente el ruido de ataques automatizados; añadiendo protección para tus otros servicios expuestos y notificaciones por correo, tienes una defensa activa y con visibilidad real de lo que ocurre en tu infraestructura. Si tienes dudas durante la implementación, nuestro equipo de soporte técnico está disponible 24/7 para ayudarte.

¿Listo para llevar tu sitio al siguiente nivel?

Hosting con LiteSpeed, NVMe y soporte 24/7 desde $3/mes.

Ver planes de hosting

Preguntas frecuentes