NAP Latino

PUBLICADO EL 19 DE OCTUBRE DE 2026

Cómo bloquear ataques de fuerza bruta en tu VPS con Fail2ban: instalación y configuración paso a paso

Después de exponer el puerto SSH en un VPS, los robots intentando adivinar contraseñas empiezan en minutos — el log de auth puede mostrar numerosos intentos por hora desde IPs distintas. Fail2ban monitorea esos logs y bloquea automáticamente cualquier IP que falle el login más de N veces en un período corto, sin intervención manual. Esta guía muestra cómo instalarlo en Ubuntu o Debian, crear la jail para SSH, ajustar los tiempos de baneo y activar la jail de reincidentes para bloqueos de larga duración.

Si abriste el puerto 22 (SSH) en tu VPS, en menos de una hora hay robots intentando adivinar tu contraseña. Puedes verlo en los logs:


grep "Failed password" /var/log/auth.log | tail -20

Lo habitual es ver numerosos intentos en poco tiempo, desde IPs distintas. Fail2ban resuelve eso de raíz: monitorea los logs y bloquea automáticamente las IPs que fallan más de N veces en un período corto. Esta guía muestra cómo instalarlo, configurar la jail para SSH y activar protección extra para reincidentes.

Qué vas a necesitar

  • Un VPS o servidor dedicado con Ubuntu 20.04, 22.04 o Debian 11/12
  • Acceso root o usuario con sudo
  • Puerto SSH activo y expuesto (el escenario más común)

Por qué Fail2ban y no solo cambiar el puerto SSH

Cambiar el puerto de 22 a otro número reduce el ruido en los logs, pero no es seguridad real: los scanners modernos hacen port discovery y te encuentran igual. Fail2ban actúa en la capa de autenticación — no importa en qué puerto esté SSH, si alguien falla 5 veces en 10 minutos, se bloquea por 1 hora (o lo que configures). Es la diferencia entre tapar el vidrio roto y ponerle rejas a la ventana.

Paso 1: Actualizar e instalar

Antes de instalar cualquier herramienta de seguridad, actualizar los paquetes del sistema es obligatorio — una vulnerabilidad sin parchar puede anular todo lo que configures después.


sudo apt update && sudo apt upgrade -y

sudo apt install fail2ban -y

Verificar que el servicio arrancó:


sudo systemctl status fail2ban

La salida debe mostrar active (running).

Paso 2: Crear tu archivo de configuración local

Fail2ban tiene dos archivos de configuración: jail.conf (se pisa en cada actualización del paquete) y jail.local (el tuyo, sobrevive actualizaciones). Siempre trabajar en el .local:


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

Abrir el archivo:


sudo nano /etc/fail2ban/jail.local

Paso 3: Configurar la jail de SSH

Buscar la sección [sshd] y verificar o ajustar los valores. Si no existe, agregarla al final del archivo:


[sshd]

enabled  = true

port     = ssh

logpath  = /var/log/auth.log

maxretry = 5

findtime = 600

bantime  = 3600

Qué significa cada parámetro:

  • maxretry = 5 — después de 5 intentos fallidos, bloquear esa IP
  • findtime = 600 — los 5 intentos se cuentan dentro de 10 minutos (600 segundos)
  • bantime = 3600 — bloqueo por 1 hora (3600 segundos); con -1 el bloqueo es permanente

Si cambiaste el puerto SSH del sistema operativo, reemplazar port = ssh por el número real: port = 2222.

Paso 4: Reiniciar y verificar


sudo systemctl restart fail2ban

sudo fail2ban-client status

Ver el estado de la jail de SSH:


sudo fail2ban-client status sshd

La salida muestra cuántas IPs están baneadas en este momento y cuántos intentos detectó desde que se inició el servicio. En un VPS con IP pública, no es raro acumular varias IPs baneadas ya durante el primer día de actividad.

Paso 5: Desbanear una IP si es necesario

Si bloqueaste por error tu propia IP o la de un cliente legítimo, desbanear es inmediato:


sudo fail2ban-client set sshd unbanip 203.0.113.42

Para revisar el log completo de acciones de Fail2ban:


sudo tail -f /var/log/fail2ban.log

Paso 6: Activar la jail de reincidentes (opcional pero recomendado)

La configuración base bloquea por 1 hora. Para castigar más a quien reincide, Fail2ban tiene la recidive jail: detecta IPs que fueron baneadas varias veces y les aplica un bloqueo de varios días.

Agregar al final de jail.local:


[recidive]

enabled  = true

logpath  = /var/log/fail2ban.log

banaction = iptables-allports

bantime  = 604800

findtime = 86400

maxretry = 5

Esto bloquea por 7 días (604800 segundos) cualquier IP que haya sido baneada 5 veces en el último día. A diferencia de la jail de SSH que solo bloquea ese puerto, iptables-allports bloquea todos los puertos para esa IP.

Reiniciar para aplicar:


sudo systemctl restart fail2ban

Lo que Fail2ban no hace

Fail2ban no es un firewall completo ni reemplaza UFW. No filtra tráfico sin intentos de autenticación, no bloquea escaneos de puertos, y no protege servicios que no generen logs. Para una configuración de seguridad completa en un VPS nuevo, la combinación recomendada es: UFW para limitar los puertos expuestos + acceso SSH exclusivamente por llave (sin contraseñas) + Fail2ban para detectar y bloquear comportamiento anómalo en los servicios que sí quedaron expuestos.


Si estás evaluando mover tu proyecto a un servidor con control real, los planes VPS de NAP Latino incluyen Debian y Ubuntu preinstalados, IP dedicada y acceso root desde el primer minuto.

Carolina www.naplatino.com · soporte@naplatino.com