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

Cómo proteger tu servidor con fail2ban en cPanel (configuración fácil)

Actualizado el 8 de noviembre de 2025

¿Te preocupa que alguien esté intentando entrar a tu servidor por la fuerza? Es una sensación desagradable, pero tienes a tu disposición una herramienta gratuita y muy eficaz: fail2ban.

En esta guía, pensada para principiantes, te voy a enseñar cómo instalar, configurar y sacarle el máximo partido a fail2ban cPanel sin necesidad de ser un experto en Linux. Vamos a convertir tu servidor en una fortaleza, bloqueando automáticamente a los "ladrones" que intentan adivinar tus contraseñas.

¿Qué es Fail2ban y por qué lo necesitas?

Imagina que tu servidor es una casa. La contraseña de tu cuenta SSH o de cPanel es la llave de la puerta principal. Un ataque de fuerza bruta es como un ladrón que se sienta en tu puerta y prueba miles de llaves diferentes cada minuto hasta que una funciona.

fail2ban es tu portero de seguridad personal. Su trabajo es vigilar los registros (logs) de tu servidor. Si detecta que alguien está fallando la contraseña una y otra vez (por ejemplo, 5 veces en 10 minutos), lo marca como sospechoso y lo bloquea automáticamente usando el firewall (iptables o firewalld).

La mejor parte es que el bloqueo es temporal (por defecto 10 minutos), así que si eres tú quien se equivocó de contraseña, no te preocupes, podrás volver a entrar pronto. Es la forma más inteligente y sencilla de bloquear fuerza bruta y mantener tu servidor seguro.


Requisitos previos (Lo que necesitas antes de empezar)

Antes de ponernos manos a la obra con la configuración de fail2ban, asegúrate de tener esto listo:

  1. Acceso root (Administrador total): Necesitas acceso completo al servidor vía SSH (Terminal). No sirve solo con el acceso de usuario de cPanel.
  2. cPanel/WHM instalado: Esta guía asume que ya tienes el panel de control funcionando.
  3. Sistema operativo: Aunque los comandos son genéricos, esta guía funciona perfectamente en CentOS, AlmaLinux, Rocky Linux o Ubuntu/Debian.
  4. Conexión estable: No queremos que se corte el internet a mitad de la instalación.

[WARNING]
IMPORTANTE: Si tienes un firewall de nivel de red (como ConfigServer Security & Firewall - CSF) ya activo, es posible que fail2ban sea redundante. Sin embargo, si no usas CSF, esta es tu mejor opción. No instales ambos al mismo tiempo si no sabes lo que haces, podrían entrar en conflicto.


Paso 1: Instalación de Fail2ban (Fácil y rápido)

Lo primero es instalar el software. Conéctate a tu servidor por SSH y ejecuta los siguientes comandos según tu sistema operativo.

Para CentOS, AlmaLinux o Rocky Linux (usando yum/dnf):

# Actualizamos los paquetes del sistema
yum update -y

# Instalamos Fail2ban
yum install fail2ban -y

Para Ubuntu o Debian (usando apt):

# Actualizamos los paquetes del sistema
apt update && apt upgrade -y

# Instalamos Fail2ban
apt install fail2ban -y

Una vez instalado, vamos a arrancar el servicio y a configurarlo para que se inicie automáticamente al encender el servidor.

# Arrancamos el servicio
systemctl start fail2ban

# Lo habilitamos para que arranque solo
systemctl enable fail2ban

[TIP]
Puedes comprobar que se ha instalado correctamente escribiendo fail2ban-client version. Deberías ver un número de versión, como 0.11.2.


Paso 2: Configuración básica (El archivo "jail.local")

Fail2ban viene con un archivo de configuración por defecto llamado jail.conf. No lo edites directamente, porque se sobrescribe al actualizar el programa. En su lugar, crearemos un archivo nuevo llamado jail.local, que tiene prioridad.

Vamos a crear el archivo y a editarlo con el editor de texto nano (es el más fácil para novatos).

# Creamos el archivo con nano
nano /etc/fail2ban/jail.local

Ahora, pega el siguiente contenido. No te asustes, es más fácil de lo que parece. Te lo explico debajo.

[DEFAULT]
# Tiempo en segundos que un cliente está bloqueado (600 seg = 10 minutos)
bantime = 600

# Tiempo en segundos para contar los intentos fallidos (600 seg = 10 minutos)
findtime = 600

# Número de fallos permitidos antes de bloquear
maxretry = 5

# Ignorar la propia IP del servidor y los rangos locales (no bloquees tu propia red)
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Enviar un correo al administrador (opcional, descomenta y pon tu email)
# destemail = tu@correo.com
# action = %(action_mwl)s

# --- Protección para SSH ---
[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

# --- Protección para cPanel y Webmail ---
[cpanel]
enabled = true
port    = 2082,2083,2095,2096
logpath = /usr/local/cpanel/logs/login_log
maxretry = 5

# --- Protección para el FTP de cPanel (Pure-FTPd) ---
[pure-ftpd]
enabled = true
port    = ftp,ftp-data,ftps,ftps-data
logpath = /var/log/messages
maxretry = 5

Guarda el archivo presionando Ctrl + X, luego Y para confirmar y Enter para salir.

Explicación rápida del código:

  • [DEFAULT]: Son las reglas globales para todos los servicios. Aquí defines cuántos fallos (maxretry) y cuánto tiempo bloqueas (bantime).
  • [sshd]: Protege el acceso por terminal (SSH). Es la regla más importante.
  • [cpanel]: Vigila los intentos de acceso al panel de control (puertos 2082/2083) y al Webmail (2095/2096).
  • [pure-ftpd]: Protege el acceso FTP para que no intenten hackear tus cuentas de hosting.

Paso 3: Aplicar la configuración y verificar

Ahora que tenemos nuestro archivo jail.local, necesitamos reiniciar fail2ban para que lea las nuevas reglas.

# Reiniciamos el servicio para aplicar la configuración
systemctl restart fail2ban

# Verificamos que el servicio está activo y funcionando
systemctl status fail2ban

Deberías ver un texto en verde que dice Active: active (running). Si hay algún error, el propio comando te lo dirá.

Para asegurarte de que las "prisiones" (jails) se han activado correctamente, ejecuta:

fail2ban-client status

Verás una lista con sshd, cpanel y pure-ftpd. Cada uno de ellos es una barrera activa contra los ataques.

[INFO]
¿Cómo sé si está funcionando? Para ver el estado de una prisión específica, usa fail2ban-client status sshd. Te mostrará cuántas IPs están actualmente bloqueadas y cuántas veces ha actuado.


Paso 4: Configuración avanzada para cPanel (Personalización)

La configuración básica es genial, pero podemos afinar un poco más. cPanel a veces guarda los logs en rutas diferentes. Si ves que no está bloqueando, es hora de personalizar.

1. Encontrar el log correcto de cPanel

A veces, el log de cPanel no está en la ruta estándar. Para verificar, ejecuta:

cat /usr/local/cpanel/logs/login_log

Si el archivo existe y tiene contenido, perfecto. Si no existe, busca el log de errores de autenticación:

cat /var/log/secure | grep -i "authentication failure"

En ese caso, modifica la sección [cpanel] en tu jail.local para que apunte al archivo correcto:

[cpanel]
enabled = true
port    = 2082,2083,2095,2096
logpath = /var/log/secure
maxretry = 3

2. Aumentar la seguridad para el acceso de root

El usuario root es el más valioso. Si alguien lo hackea, tiene todo el pastel. Podemos hacer que fail2ban sea más estricto con el root. Añade esta línea dentro de la sección [sshd]:

[sshd]
enabled = true
port    = ssh
logpath = %(sshd_log)s
backend = %(ssshd_backend)s
# Esta línea bloquea al root después de 3 fallos
maxretry = 3

3. Desbloquear una IP manualmente

¿Te has bloqueado a ti mismo por error? No pasa nada. Es fácil desbloquearse. Ejecuta este comando reemplazando la IP:

fail2ban-client set sshd unbanip 123.456.789.123

Paso 5: Consejos pro para mantener tu servidor seguro

Fail2ban es una pieza del rompecabezas. Para una seguridad cPanel completa, te recomiendo combinar esta herramienta con estos hábitos:

  1. Cambia el puerto SSH por defecto: En lugar de usar el 22, cámbialo a uno aleatorio (ej. 2244). Fail2ban seguirá funcionando, pero los bots ya no sabrán dónde golpear.
  2. Desactiva el login root por contraseña: Usa claves SSH (llaves públicas/privadas). Es casi imposible de hackear.
  3. Usa contraseñas robustas: Aunque tengas fail2ban, tener una contraseña como "Clave1234" es una mala idea. Usa un gestor de contraseñas.
  4. Mantén todo actualizado: Tanto cPanel como el propio fail2ban lanzan parches de seguridad. Actualiza siempre.

Alternativa para otros paneles: Syspanel

Si en algún momento usas un panel alternativo llamado Syspanel (antes conocido como HestiaCP), el proceso es casi idéntico. La única gran diferencia es que el acceso a su panel de control se realiza a través del puerto 2106. Para protegerlo, solo tendrías que añadir una nueva sección en tu jail.local de la siguiente manera:

[syspanel]
enabled = true
port    = 2106
logpath = /var/log/auth.log
maxretry = 5

La lógica es la misma: vigilar los logs, contar fallos y bloquear.


Preguntas Frecuentes (FAQ) sobre Fail2ban y cPanel

¿Fail2ban consume muchos recursos del servidor?

No, es muy ligero. Solo lee archivos de log y ejecuta comandos de firewall cuando es necesario. Es seguro tenerlo siempre activo.

¿Puedo bloquear permanentemente una IP que me ataca?

Sí. En lugar de usar bantime = 600 (10 minutos), puedes poner bantime = -1. Eso bloqueará la IP para siempre, hasta que la desbloquees manualmente. Úsalo solo con IPs que sabes que son maliciosas.

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

Respira. Conéctate al servidor usando el panel de tu proveedor de hosting (VNC o consola KVM) para desbloquearte, o espera a que pase el tiempo del bantime. Para evitarlo en el futuro, asegúrate de tener tu IP actual en ignoreip dentro de jail.local.

¿Fail2ban protege contra todos los ataques?

No. Es excelente contra fuerza bruta (adivinar contraseñas), pero no contra ataques de denegación de servicio (DDoS) o exploits de aplicaciones. Es una capa de seguridad esencial, pero no la única.

¿Cómo veo las IPs bloqueadas actualmente?

Usa el comando fail2ban-client status sshd. En la parte inferior verás una lista llamada "Banned IP list". Esa es tu lista negra actual.


Conclusión: Tu servidor es ahora una fortaleza

Has dado un paso gigante para asegurar tu infraestructura. Con fail2ban configurado en tu cPanel, los ataques de fuerza bruta serán cosa del pasado. Los bots intentarán entrar, fallarán unas pocas veces, y serán expulsados automáticamente antes de causar ningún daño real.

Te animo a que revises los logs de vez en cuando (fail2ban-client status) para ver cuántos ataques has bloqueado. Es una sensación muy satisfactoria ver cómo los malos rebotan contra tu nuevo muro.

Si tienes alguna duda, deja un comentario y estaré encantado de ayudarte a configurar tu servidor seguro. ¡Hasta la próxima!

¿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