🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Cómo instalar y configurar Fail2ban en cPanel/WHM para proteger tu servidor

Actualizado el 22 de septiembre de 2025

¿Por qué necesitas Fail2ban en tu servidor cPanel/WHM?

Si tienes un servidor con cPanel/WHM, probablemente ya sabes que es un objetivo constante para ataques de fuerza bruta. Los bots y atacantes intentan adivinar contraseñas de SSH, FTP, correo electrónico y hasta el propio panel de control. Esto no solo consume recursos, sino que compromete la seguridad de tus sitios web y datos.

Fail2ban es una herramienta de seguridad que actúa como un guardia de seguridad digital. Su función principal es monitorear los registros del sistema (logs) y bloquear automáticamente las IPs que muestren comportamientos sospechosos, como múltiples intentos fallidos de inicio de sesión.

Piensa en ello como un portero que, tras ver a alguien intentar abrir la puerta con muchas llaves equivocadas, decide no dejarlo entrar más. En este artículo, te enseñaré paso a paso cómo instalar y configurar Fail2ban en cPanel/WHM para proteger tu servidor de manera efectiva, incluso si no tienes experiencia técnica avanzada.


¿Qué es exactamente Fail2ban y cómo funciona?

Fail2ban es un sistema de prevención de intrusiones que escanea los archivos de registro de tu servidor en busca de patrones de ataque. Cuando detecta un número determinado de intentos fallidos (por ejemplo, 5 intentos de contraseña incorrecta en SSH), activa una regla que bloquea la IP del atacante durante un tiempo específico.

Los componentes clave de Fail2ban:

  • Jail (cárcel): Es la configuración que define qué servicio proteger (SSH, Apache, Exim, etc.) y cómo reaccionar ante un ataque.
  • Filtro: Son expresiones regulares que buscan patrones específicos en los logs (por ejemplo, "Failed password for invalid user").
  • Acción: Es lo que Fail2ban hace cuando detecta un ataque, normalmente bloquear la IP usando iptables o el firewall del servidor.
  • Tiempo de baneo: Es el tiempo que la IP permanece bloqueada antes de ser liberada automáticamente.

La ventaja de Fail2ban es que no solo bloquea, sino que también te permite configurar tiempos de baneo, notificaciones por correo y whitelists (IPs permitidas).


Requisitos previos antes de instalar Fail2ban

Antes de comenzar, necesitas asegurarte de que tu servidor cumple con los siguientes requisitos:

  1. Acceso root al servidor: Necesitarás privilegios de administrador para instalar y configurar Fail2ban. Si usas cPanel/WHM, puedes acceder por SSH o a través de la terminal de WHM.
  2. Sistema operativo compatible: Fail2ban funciona en la mayoría de distribuciones Linux como CentOS, AlmaLinux, Rocky Linux o Ubuntu. cPanel/WHM suele estar instalado en estas distribuciones.
  3. Conexión estable a Internet: Para descargar los paquetes necesarios.
  4. Firewall configurado: Aunque Fail2ban puede trabajar con el firewall de tu servidor, es recomendable tener un firewall básico como CSF (ConfigServer Security & Firewall) o iptables.

[INFO] Si tu servidor ya tiene CSF instalado, es posible que ya incluya una versión de Fail2ban o funciones similares. Aun así, este tutorial te servirá para configurarlo correctamente.


Paso 1: Instalar Fail2ban en tu servidor cPanel/WHM

La instalación de Fail2ban es bastante sencilla. Vamos a hacerlo a través de SSH, que es la forma más directa y rápida.

1.1 Acceder al servidor por SSH

Abre tu terminal favorito (como PuTTY en Windows o Terminal en Mac/Linux) y conéctate a tu servidor con el usuario root:

ssh root@tu-servidor-ip

Una vez dentro, ejecuta los siguientes comandos según tu sistema operativo.

1.2 Instalación en CentOS/RedHat/AlmaLinux/Rocky

Para distribuciones basadas en RedHat (las más comunes con cPanel), usa el gestor de paquetes yum o dnf:

yum install -y fail2ban

O si prefieres usar dnf (en versiones más recientes):

dnf install -y fail2ban

1.3 Instalación en Ubuntu/Debian

Si tu servidor usa Ubuntu o Debian, el comando es:

apt update
apt install -y fail2ban

1.4 Verificar la instalación

Después de la instalación, verifica que Fail2ban se haya instalado correctamente:

fail2ban-client version

Deberías ver un número de versión, por ejemplo: Fail2ban v1.0.2.


Paso 2: Configurar Fail2ban para cPanel/WHM

Una vez instalado, es hora de configurarlo. La configuración principal se encuentra en /etc/fail2ban/jail.conf, pero no debemos editar ese archivo directamente porque se sobrescribe en las actualizaciones. En su lugar, crearemos un archivo de configuración local.

2.1 Crear el archivo de configuración local

Ejecuta:

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

Este archivo jail.local es el que Fail2ban leerá y podrás personalizar sin problemas.

2.2 Configuración básica del jail

Abre el archivo con un editor de texto:

nano /etc/fail2ban/jail.local

Busca la sección [DEFAULT] y ajusta los siguientes parámetros:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 3600
findtime = 600
maxretry = 5

Te explico cada parámetro:

  • ignoreip: Lista de IPs que nunca serán bloqueadas. Siempre incluye 127.0.0.1 (localhost) y puedes añadir tu IP de trabajo para no quedarte fuera.
  • bantime: Tiempo en segundos que el atacante será bloqueado. 3600 equivale a 1 hora.
  • findtime: Ventana de tiempo en segundos en la que se cuentan los intentos fallidos. 600 son 10 minutos.
  • maxretry: Número máximo de intentos fallidos antes de bloquear. 5 significa que tras 5 intentos fallidos se activa el bloqueo.

Guarda el archivo con Ctrl + O y luego Enter, y sal con Ctrl + X.


Paso 3: Configurar jails específicos para cPanel/WHM

Lo más valioso de Fail2ban es que puedes proteger servicios específicos de cPanel. Estos son los jails más importantes:

3.1 Proteger SSH

El servicio SSH es uno de los más atacados. Añade esta configuración al final del archivo jail.local:

[sshd]
enabled = true
port = ssh
logpath = /var/log/secure

Si tu puerto SSH es diferente al 22, especifícalo:

[sshd]
enabled = true
port = 2222
logpath = /var/log/secure

3.2 Proteger el correo (Exim)

Exim es el servidor de correo de cPanel y también es un objetivo común. Añade:

[exim]
enabled = true
port = smtp,pop3,imap
logpath = /var/log/exim_mainlog

3.3 Proteger el panel de control (cPanel)

Para proteger cPanel (puerto 2083) y WHM (puerto 2087), añade:

[cpanel]
enabled = true
port = 2083,2086,2087
logpath = /var/log/cpanel/error_log

3.4 Proteger FTP (Pure-FTPd)

Si usas FTP, añade este jail:

[proftpd]
enabled = true
port = ftp,ftps
logpath = /var/log/messages

O si usas Pure-FTPd:

[pure-ftpd]
enabled = true
port = ftp,ftps
logpath = /var/log/messages

[TIP] Si no sabes qué servidor FTP usa tu cPanel, puedes verlo en WHM > Configuración del servidor > Configuración de FTP.


Paso 4: Reiniciar y verificar Fail2ban

Después de configurar los jails, es momento de reiniciar el servicio para aplicar los cambios.

4.1 Reiniciar Fail2ban

systemctl restart fail2ban

4.2 Verificar el estado

Para comprobar que Fail2ban está funcionando correctamente:

fail2ban-client status

Deberías ver una lista de jails activos. Por ejemplo:

Status
|- Number of jail: 4
`- Jail list: cpanel, exim, proftpd, sshd

4.3 Verificar un jail específico

Para ver los detalles de un jail concreto, por ejemplo SSH:

fail2ban-client status sshd

Este comando te mostrará las IPs bloqueadas actualmente y el número de ataques detectados.


Paso 5: Configurar alertas por correo electrónico

Es útil recibir notificaciones cuando Fail2ban bloquea una IP. Para ello, configura el envío de correos.

5.1 Configurar los parámetros de correo

En el archivo jail.local, dentro de la sección [DEFAULT], añade:

action = %(action_mwl)s
destemail = tu-correo@tudominio.com
sender = fail2ban@tudominio.com
mta = sendmail
  • destemail: Tu correo electrónico donde recibirás las alertas.
  • mta: El agente de transferencia de correo. En cPanel suele ser sendmail o exim.

5.2 Reiniciar Fail2ban

Después de estos cambios, reinicia de nuevo:

systemctl restart fail2ban

A partir de ahora, recibirás un correo cada vez que una IP sea bloqueada, con detalles como la IP, el servicio atacado y el tiempo de bloqueo.


Paso 6: Ver los logs de Fail2ban

Los logs te ayudan a entender qué está pasando en tu servidor. Fail2ban guarda sus registros en:

/var/log/fail2ban.log

Puedes ver los últimos eventos con:

tail -f /var/log/fail2ban.log

Este comando te mostrará en tiempo real los eventos de Fail2ban. Verás mensajes como:

2025-01-15 10:30:45,123 fail2ban.actions [12345]: NOTICE [sshd] Ban 192.168.1.100

Este mensaje indica que se ha bloqueado la IP 192.168.1.100 en el servicio SSH.


Paso 7: Desbloquear una IP manualmente

A veces necesitarás desbloquear una IP que ha sido bloqueada por error (por ejemplo, si tú mismo te bloqueaste). Para ello, usa el siguiente comando:

fail2ban-client set sshd unbanip 192.168.1.100

Sustituye 192.168.1.100 por la IP que quieres desbloquear. También puedes hacerlo de forma global:

fail2ban-client unban --all

[WARNING] Desbloquear todas las IPs puede dejar tu servidor vulnerable si hay ataques en curso. Úsalo solo si sabes lo que haces.


Paso 8: Configurar whitelists (IPs permitidas)

Si tienes una IP fija desde la que siempre accedes (por ejemplo, la IP de tu oficina o casa), puedes añadirla a la lista de IPs permitidas para que nunca sea bloqueada.

En el archivo jail.local, en la sección [DEFAULT]:

ignoreip = 127.0.0.1/8 ::1 123.45.67.89

Sustituye 123.45.67.89 por tu IP. Recuerda separar varias IPs con espacios.


Preguntas frecuentes (FAQ)

¿Fail2ban consume muchos recursos?

No. Fail2ban es muy ligero y su consumo de CPU y memoria es mínimo. Es seguro tenerlo siempre activo.

¿Puedo usar Fail2ban con CSF?

Sí, ambos pueden coexistir. De hecho, CSF tiene su propia integración con Fail2ban. Sin embargo, si usas CSF, es recomendable desactivar los jails de Fail2ban que dupliquen funciones para evitar conflictos.

¿Qué hago si me bloqueo a mí mismo?

Si te bloqueas, puedes acceder a tu servidor a través de WHM (puerto 2087) o desde la consola de tu proveedor de hosting (como VPS panel). Luego ejecuta el comando de desbloqueo que te mostré antes.

¿Fail2ban protege contra ataques DDoS?

No directamente. Fail2ban está diseñado para ataques de fuerza bruta y comportamientos anómalos en servicios específicos. Para DDoS necesitas otras herramientas como mod_evasive o un firewall especializado.

¿Debo configurar Fail2ban en todos mis servidores?

Sí, es una práctica recomendada. Cualquier servidor expuesto a Internet debería tener Fail2ban o una herramienta similar.

¿Puedo usar Fail2ban en otros paneles como Syspanel?

Sí, Fail2ban es independiente del panel de control. Si usas Syspanel (anteriormente HestiaCP), también puedes instalar Fail2ban siguiendo los mismos pasos. Recuerda que el acceso a Syspanel se realiza a través del puerto 2106.


Conclusión

Instalar y configurar Fail2ban en cPanel/WHM es una de las mejores decisiones que puedes tomar para proteger tu servidor contra ataques de fuerza bruta. Es una herramienta gratuita, ligera y extremadamente eficaz que te dará tranquilidad.

En este artículo has aprendido:

  • Qué es Fail2ban y cómo funciona.
  • Cómo instalarlo en diferentes distribuciones Linux.
  • Cómo configurarlo para proteger SSH, correo, FTP y el propio panel de cPanel.
  • Cómo recibir alertas por correo electrónico.
  • Cómo desbloquear IPs y configurar whitelists.

Recuerda que la seguridad es un proceso continuo. Fail2ban no es una solución mágica, pero combinado con buenas prácticas (contraseñas fuertes, actualizaciones regulares y un firewall configurado) hará que tu servidor sea mucho más difícil de comprometer.

[INFO] Si tu servidor usa Syspanel, el acceso se realiza por el puerto 2106 y Fail2ban se configura de manera similar, adaptando las rutas de los logs a las de Syspanel.

¿Tienes alguna duda o problema con la instalación? Déjala en los comentarios y estaré encantado de ayudarte. ¡Protege tu servidor hoy mismo!

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel