Fail2Ban en Ubuntu: protege SSH y WordPress de ataques

Fail2Ban en Ubuntu

📅 Publicado el 12 de octubre, 2026 · Por Equipo RedServicio

Llevo años administrando servidores Ubuntu y puedo decirlo sin rodeos: Fail2Ban es de esas herramientas que instalas una vez y te preguntas cómo viviste sin ella. Cada día, miles de bots escanean servidores en busca de puertos SSH abiertos o formularios de login de WordPress desprotegidos, probando millones de combinaciones de usuario y contraseña. Aquí vas a aprender a instalar y configurar Fail2Ban para que tu servidor bloquee automáticamente las IP maliciosas. Antes de que hagan daño, no después.

Qué es Fail2Ban y por qué tu servidor lo necesita

Fail2Ban es un software de prevención de intrusiones que vigila los archivos de registro del sistema buscando patrones sospechosos. Lo típico: intentos de autenticación fallidos una y otra vez. Cuando una IP supera el número de intentos permitidos, Fail2Ban ejecuta una regla de firewall y bloquea esa dirección durante el tiempo que tú decidas. Solo. Sin que tengas que mirar nada.

Sin una herramienta así, el servidor queda expuesto a riesgos muy reales:

  • Ataques de fuerza bruta sobre SSH: los bots pueden probar miles de contraseñas por minuto hasta dar con la correcta.
  • Ataques a wp-login.php: WordPress es el objetivo favorito de los atacantes, sobre todo si sigues usando usuarios como «admin».
  • Consumo de recursos: aunque el ataque falle, la carga extra en CPU y memoria está ahí.
  • Compromiso de datos: si el atacante entra, puede robar bases de datos, inyectar malware o usar tu máquina para enviar spam. Y el problema, claro, acaba siendo tuyo.

Lo mejor de Fail2Ban es que trabaja de forma autónoma: una vez configurado, olvidas los logs manuales. Además pesa poquísimo, así que es ideal incluso para un VPS con recursos justos.

Instalación de Fail2Ban en Ubuntu paso a paso

Pocos minutos. Nada más. Estos son los pasos:

  1. Actualiza los repositorios: ejecuta sudo apt update && sudo apt upgrade -y para tener los paquetes al día.
  2. Instala Fail2Ban: lanza sudo apt install fail2ban -y. El gestor de paquetes descargará las dependencias necesarias sin que tengas que hacer nada más.
  3. Verifica el servicio: comprueba que está activo con sudo systemctl status fail2ban. Deberías ver el estado active (running) en verde.
  4. Habilita el arranque automático: con sudo systemctl enable fail2ban, el servicio se iniciará tras cada reinicio del servidor.

Consejo: Fail2Ban necesita que el firewall UFW esté disponible para aplicar los bloqueos. Si no lo tienes activo, habilítalo con sudo ufw enable antes de continuar. Y cuidado: permite primero el puerto SSH con sudo ufw allow ssh, o te dejarás fuera de tu propio servidor (me ha pasado, y no es agradable).

Con esto, Fail2Ban ya está operativo con su configuración por defecto. Pero protege muy poco todavía. Falta personalizarlo.

Configurar Fail2Ban en Ubuntu para proteger SSH

Regla de oro: nunca edites el archivo jail.conf directamente. Las actualizaciones del paquete pueden sobrescribirlo, y con ello perderías todo tu trabajo. Crea tu propio archivo local.

Ejecuta sudo nano /etc/fail2ban/jail.local y añade lo siguiente:

  • [sshd] — define la sección de la jail para el servicio SSH.
  • enabled = true — activa la protección para SSH.
  • port = ssh — el puerto a monitorizar; cámbialo si usas uno personalizado (por ejemplo, port = 2222).
  • maxretry = 3 — número máximo de intentos fallidos antes del bloqueo.
  • findtime = 600 — ventana de tiempo en segundos en la que se cuentan los intentos (10 minutos).
  • bantime = 3600 — duración del bloqueo en segundos (1 hora).

Guarda el archivo y reinicia el servicio con sudo systemctl restart fail2ban. Para verificar que la jail de SSH está activa, usa sudo fail2ban-client status sshd. Verás las IP bloqueadas actualmente y el total de intentos fallidos registrados. Verlo por primera vez, por cierto, impresiona: en pocas horas ya suele haber varios baneos.

Con SSH protegido, el siguiente paso lógico es extender esta protección a tu instalación de WordPress, algo que veremos en la segunda parte de la guía. Y si buscas un entorno donde aplicar estas configuraciones sin complicaciones, en RedServicio encontrarás hosting con soporte técnico 24/7 dispuesto a echarte una mano con cada paso.

Crear un jail personalizado para WordPress (wp-login y xmlrpc.php)

Fail2Ban no se queda solo en SSH. Con un filtro bien escrito puede leer los logs de accesos web y echar a quien insiste en forzar tu WordPress. ¿Qué endpoints sufren más? Básicamente dos: wp-login.php (ataques de fuerza bruta al formulario de acceso) y xmlrpc.php, que sirve de puerta a ataques de amplificación y a oleadas de prueba de credenciales.

El primer paso es el filtro que detectará los intentos fallidos en el log de Nginx o Apache. Crea /etc/fail2ban/filter.d/wordpress.conf:

  1. [Definition]
  2. failregex = ^<HOST> .* «(GET|POST) /(wp-login\.php|xmlrpc\.php).*(401|403)»
  3. ignoreregex =

Y después el jail, en /etc/fail2ban/jail.local:

  • [wordpress]
  • enabled = true
  • port = http,https
  • filter = wordpress
  • logpath = /var/log/nginx/access.log (o /var/log/apache2/access.log, según lo que corra tu servidor)
  • maxretry = 5
  • findtime = 600
  • bantime = 3600

Traducido: si una IP acumula 5 accesos fallidos a wp-login.php o xmlrpc.php en 10 minutos, queda fuera durante una hora. No olvides reiniciar el servicio (sudo systemctl restart fail2ban) o los cambios no se aplicarán.

Consejo extra: si no usas XML-RPC para nada (no publicas desde la app móvil ni dependes de Jetpack, por ejemplo), mejor bloquea xmlrpc.php directamente en Nginx o Apache. Fail2Ban actúa cuando el ataque ya ha empezado; el bloqueo a nivel de servidor lo corta antes de que exista.

Comandos útiles para monitorizar IPs bloqueadas

Con Fail2Ban en marcha conviene saber qué está haciendo realmente. Estos comandos son los que usarás a diario:

  • sudo fail2ban-client status — lista todos los jails activos y cuántos fallos ha detectado cada uno.
  • sudo fail2ban-client status sshd — IPs bloqueadas ahora mismo, fallos totales y el fichero de log que vigila el jail de SSH.
  • sudo fail2ban-client status wordpress — lo mismo, pero para tu jail de WordPress.
  • sudo fail2ban-client set sshd unbanip 203.0.113.45 — desbloquea una IP a mano. Útil, por ejemplo, si te has bloqueado tú mismo. Pasa más de lo que parece.
  • sudo fail2ban-client set sshd banip 203.0.113.45 — bloquea una IP al instante.
  • sudo tail -f /var/log/fail2ban.log — sigue en directo cada bloqueo y desbloqueo.

Tip de seguridad: antes de desactivar el acceso por contraseña en SSH, abre una segunda sesión y déjala abierta. Si acabas bloqueado sin salida, siempre te quedará esa vía de escape.

Conclusión: un servidor blindado con Fail2Ban

Proteger un servidor no requiere soluciones complejas ni caras. En pocos minutos has montado sobre Ubuntu una defensa automática que frena la fuerza bruta contra SSH y contra tu WordPress, y la superficie de ataque se reduce de forma notable sin que tengas que tocar nada.

Lo esencial cabe en tres cosas (aquí la cuenta sale sola, lo prometo): jails bien afinados, con maxretry y bantime razonables; filtros personalizados para las aplicaciones que exponen formularios al público; y una revisión periódica de los logs para cazar patrones nuevos. Sobre esa base puedes ir sumando autenticación por claves SSH, actualizaciones automáticas y copias de seguridad frecuentes.

Y ojo: la infraestructura pesa tanto como el software. Sobre un hosting de RedServicio tendrás además soporte técnico 24/7 que puede echarte una mano con la configuración y la monitorización del servidor, para que dediques tu tiempo a lo que de verdad importa: tu proyecto web.

📝

Equipo RedServicio

Artículos escritos y revisados por nuestro equipo técnico especializado en hosting e infraestructura web en España.

¿Listo para un hosting de verdad?

Servidores en España · Soporte 24/7 en español · Migración gratuita

Ver Planes desde 3,95€/mes →

Te puede interesar:

Página Gratis — Crea tu web gratis

Clisec — Seguridad informática

Scroll al inicio