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:
sudo apt update
sudo apt install fail2ban -y En distribuciones basadas en Red Hat/CentOS:
sudo yum install epel-release -y
sudo yum install fail2ban -y Verifica que la instalación fue exitosa:
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:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local Paso 3: Configurar protección básica para SSH
Edita el archivo local:
sudo nano /etc/fail2ban/jail.local Y dentro de la sección [sshd], ajusta o agrega:
[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:
sudo systemctl restart fail2ban Verificar el estado y monitorear bloqueos
Para ver el estado general de Fail2Ban y qué jails están activas:
sudo fail2ban-client status Para ver el detalle de bloqueos específicos de la jail SSH (IPs baneadas, intentos totales, etc.):
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:
sudo nano /etc/fail2ban/jail.local [DEFAULT]
action = %(action_mwl)s
sender = [email protected]
destemail = [email protected]
mta = sendmail -
action: define qué tan detallada es la notificación (action_mwlincluye 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:
[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:
sudo nano /etc/fail2ban/filter.d/mi_servicio.conf Y define una expresión regular que identifique los intentos fallidos en el log correspondiente:
[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:
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.
Hosting con LiteSpeed, NVMe y soporte 24/7 desde $3/mes.