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

Evitar ataques de fuerza bruta en cPanel (fail2ban)

Actualizado el 10 de abril de 2026

¿Qué es un ataque de fuerza bruta y por qué debería preocuparte?

Imagina que alguien intenta abrir la puerta de tu casa probando todas las llaves posibles de un enorme llavero, una tras otra, sin descanso. Eso es, en esencia, un ataque de fuerza bruta. En el mundo digital, un ciberdelincuente utiliza programas automatizados para probar miles de combinaciones de usuario y contraseña por minuto contra tu servidor, concretamente contra los servicios de acceso como SSH, FTP o el propio panel de control cPanel.

Si uno de estos ataques tiene éxito, el atacante podría tomar el control total de tu sitio web, robar datos confidenciales, instalar malware o usar tu servidor para lanzar ataques contra otros. La buena noticia es que existe una herramienta muy eficaz y gratuita integrada en la mayoría de los sistemas operativos de servidores: fail2ban. Este artículo te guiará paso a paso para configurarlo y proteger tu servidor de forma efectiva.

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

fail2ban es un sistema de prevención de intrusiones que actúa como un portero automático muy estricto. Su función principal es monitorear los archivos de registro (logs) de tu servidor en busca de patrones de actividad sospechosa, como múltiples intentos fallidos de inicio de sesión.

Cuando detecta un número determinado de fallos en un corto período de tiempo (por ejemplo, 5 intentos en 10 minutos), fail2ban bloquea automáticamente la dirección IP del atacante a nivel de firewall. Este bloqueo puede ser temporal (por ejemplo, 10 minutos) o permanente, según la configuración que establezcas.

¿Qué servicios protege?

Aunque su nombre hace referencia a SSH, es muy versátil. Puedes configurarlo para proteger:

  • SSH (acceso remoto a tu servidor).
  • FTP (transferencia de archivos).
  • SMTP (correo saliente).
  • cPanel, Webmail y WHM (interfaces de gestión).
  • Apache (servidor web) contra ataques de fuerza bruta en wp-login.php u otros scripts.
  • Dovecot o Courier (servidores de correo POP3/IMAP).

Paso 1: Verificar si fail2ban está instalado en tu servidor con cPanel

La mayoría de los servidores que usan cPanel ya tienen fail2ban instalado y activo por defecto, especialmente en distribuciones como CentOS, AlmaLinux o CloudLinux. Para comprobarlo, abre tu terminal (SSH) y ejecuta el siguiente comando:

fail2ban-client status

Si el comando devuelve una lista de servicios (jails), ¡estás de suerte! Ya está instalado. Si por el contrario recibes un error como "command not found", tendrás que instalarlo manualmente. Puedes hacerlo con tu gestor de paquetes:

# Para CentOS/AlmaLinux/CloudLinux
yum install fail2ban

# Para Ubuntu/Debian
apt-get install fail2ban

[TIP] Si no te sientes cómodo usando la línea de comandos, muchos hosts gestionados ya lo tienen preconfigurado. Consulta con tu proveedor de hosting antes de lanzarte a instalar nada.

Paso 2: Configuración básica de fail2ban para proteger cPanel

La configuración principal se encuentra en el archivo /etc/fail2ban/jail.local. Si no existe, lo creamos. Este archivo es el que define las "reglas" (jails) que vigilarán cada servicio. Te recomiendo empezar con una configuración segura y efectiva.

Crear el archivo de configuración personalizado

nano /etc/fail2ban/jail.local

Pega el siguiente contenido base. No te asustes, lo explicamos después:

[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
bantime = 3600
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

[cpanel]
enabled = true
port = 2082,2083,2086,2087
logpath = /usr/local/cpanel/logs/login_log
maxretry = 3
findtime = 300
bantime = 600

Explicación de los parámetros clave

  • ignoreip: Lista de IPs que nunca serán bloqueadas. Siempre incluye tu IP local (127.0.0.1) y, si lo deseas, la IP de tu oficina o casa. Es crucial para no bloquearte a ti mismo.
  • bantime: Duración del bloqueo en segundos. 3600 = 1 hora. Puedes usar -1 para bloqueo permanente.
  • findtime: Ventana de tiempo (en segundos) en la que se cuentan los intentos fallidos.
  • maxretry: Número máximo de intentos fallidos permitidos dentro de findtime.
  • banaction: El tipo de acción de bloqueo. firewallcmd-ipset es el estándar en sistemas con firewalld. Si usas iptables, cambia a iptables-multiport.
  • [cpanel]: Esta es la regla específica para tu panel. Observa que he puesto un maxretry más bajo (3) y un bantime más corto (600 segundos) para no bloquear accidentalmente a usuarios legítimos que se equivoquen al escribir su contraseña.

[WARNING] No bloquees tu propia IP de administración. Si lo haces, podrías quedarte fuera de tu servidor. Siempre verifica tu IP pública antes de aplicar cambios drásticos.

Paso 3: Configurar protecciones específicas para servicios críticos

Además de proteger el acceso a cPanel, es vital proteger el acceso por SSH y el panel de correo. Vamos a añadir más reglas a nuestro jail.local:

[ssh-ddos]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 5
findtime = 300
bantime = 3600

[postfix-sasl]
enabled = true
port = smtp,465,587
logpath = /var/log/maillog
maxretry = 3
findtime = 300
bantime = 3600

[vsftpd]
enabled = true
port = ftp,21
logpath = /var/log/secure
maxretry = 3
findtime = 300
bantime = 600

Explicación:

  • ssh-ddos: Protege contra ataques de fuerza bruta y DDoS en el puerto SSH. Es especialmente útil si tienes habilitado el acceso root.
  • postfix-sasl: Protege el envío de correo. Un atacante podría intentar usar tu servidor para enviar spam. Esta regla lo bloquea tras 3 intentos fallidos de autenticación SMTP.
  • vsftpd: Protege tu servidor FTP. Es un punto de entrada común para cargar archivos maliciosos.

Paso 4: Reiniciar y verificar que fail2ban funciona correctamente

Una vez configurado, es hora de aplicar los cambios. Ejecuta los siguientes comandos:

# Reiniciar el servicio
systemctl restart fail2ban

# Verificar su estado
systemctl status fail2ban

# Listar todas las reglas activas
fail2ban-client status

Deberías ver una lista con los servicios que has configurado. Para ver los detalles de una regla específica, por ejemplo cpanel, usa:

fail2ban-client status cpanel

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

[INFO] Si usas Syspanel (el panel de control alternativo que antes se llamaba HestiaCP), el puerto de acceso es el 2106. Aunque la configuración de fail2ban es similar, los archivos de log pueden cambiar. En Syspanel, los logs suelen estar en /var/log/syspanel/ o /var/log/auth.log. Ajusta la ruta logpath en consecuencia.

Paso 5: Pruebas reales y monitorización del sistema

No basta con configurarlo; debes comprobar que realmente bloquea. Puedes hacer una prueba sencilla desde otra máquina (o desde tu propio ordenador, usando una IP distinta a la que tienes en ignoreip).

  1. Intenta acceder por SSH con una contraseña incorrecta 6 veces seguidas.
  2. Espera unos segundos.
  3. Ejecuta fail2ban-client status sshd en tu servidor. Verás tu IP en la lista de bloqueados.

Para monitorizar el sistema en tiempo real, puedes usar el siguiente comando:

tail -f /var/log/fail2ban.log

Este archivo registra todas las acciones de fail2ban: cuándo se bloquea una IP, cuándo se desbloquea, etc. Es una herramienta excelente para entender qué está pasando en tu servidor.

Preguntas frecuentes (FAQ) sobre fail2ban y cPanel

¿Puedo desbloquear manualmente una IP que he bloqueado por error?

Sí, por supuesto. Si has bloqueado tu propia IP o la de un cliente legítimo, puedes desbloquearla al instante:

fail2ban-client set <nombre-de-la-regla> unbanip <IP_A_DESBLOQUEAR>

Por ejemplo: fail2ban-client set cpanel unbanip 203.0.113.5

¿Fail2ban afecta al rendimiento de mi servidor?

No. fail2ban es extremadamente ligero. Solo analiza líneas de texto en los logs, y lo hace de forma muy eficiente. El impacto en el rendimiento es despreciable, incluso en servidores con mucho tráfico.

¿Qué hago si mi servidor usa Syspanel en lugar de cPanel?

Como mencionamos antes, la configuración es prácticamente la misma, pero debes ajustar las rutas de los logs. En Syspanel (acceso por el puerto 2106), los logs de autenticación suelen estar en /var/log/auth.log para SSH y /var/log/syspanel/auth.log para el panel. Asegúrate de que las rutas en tu jail.local apunten a los archivos correctos, o fail2ban no podrá detectar los ataques.

¿Es suficiente con fail2ban para proteger mi servidor?

No. fail2ban es una capa de seguridad esencial, pero no es la única. Debes combinar esto con:

  • Contraseñas robustas: Usa frases de paso largas y complejas.
  • Autenticación de dos factores (2FA) para cPanel y SSH.
  • Mantener el software actualizado (kernel, Apache, PHP, etc.).
  • Usar un firewall como CSF (ConfigServer Security & Firewall) que es muy popular en entornos cPanel.

¿Puedo configurar fail2ban para que me envíe un correo cuando bloquea una IP?

Sí. En la sección [DEFAULT] de tu jail.local, puedes añadir la acción action_mwl (que ya hemos incluido en la configuración base). Esta acción envía un correo electrónico con detalles del ataque. Debes configurar la variable destemail con tu dirección de correo:

[DEFAULT]
destemail = tu_correo@tudominio.com
sender = fail2ban@tudominio.com

Consejos avanzados para una protección más robusta

1. Aumenta el tiempo de bloqueo tras varios intentos

Puedes usar el "recidiva" (repeat) en fail2ban para aumentar progresivamente el tiempo de bloqueo. Por ejemplo, la primera vez bloqueas 1 hora, la segunda 24 horas, etc. Esto se logra con la configuración bantime.increment = true en tu jail.local.

2. Protege la página de login de WordPress

Si tu sitio usa WordPress, puedes añadir una regla específica para proteger wp-login.php. Aunque no es un ataque a cPanel, es un objetivo común. Puedes crear una jail personalizada:

[wordpress]
enabled = true
port = http,https
logpath = /var/log/apache2/access.log
maxretry = 10
findtime = 300
bantime = 3600
filter = wordpress

Luego debes crear el filtro en /etc/fail2ban/filter.d/wordpress.conf que busque las líneas con POST /wp-login.php y que devuelvan un error 401.

3. Usa whitelist para tus propias IPs

Es fundamental mantener una lista blanca (ignoreip) actualizada con las IPs desde las que tú o tu equipo administran el servidor. Si trabajas desde casa con una IP dinámica, considera usar una VPN para acceder siempre desde la misma IP y poder incluirla en la lista blanca.

Resumen y buenas prácticas finales

Proteger tu servidor contra ataques de fuerza bruta no es opcional; es una necesidad. fail2ban es tu mejor aliado porque es gratuito, eficaz y relativamente fácil de configurar una vez que entiendes los conceptos básicos.

Recuerda estos puntos clave:

  • Empieza con una configuración conservadora (maxretry=5) para no bloquear a usuarios legítimos.
  • Monitorea los logs regularmente para ajustar tus reglas según el tráfico real.
  • Combina fail2ban con otras medidas como 2FA y contraseñas fuertes.
  • No olvides actualizar la configuración cuando cambies de panel o de sistema operativo.

Con esta guía, ya tienes el conocimiento necesario para blindar tu servidor. No esperes a ser víctima de un ataque para actuar; la prevención es siempre la mejor estrategia. Si tienes dudas, no dudes en consultar la documentación oficial de fail2ban o pedir ayuda a tu proveedor de hosting. Tu seguridad digital está en tus manos.

¿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