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

Cómo Configurar un Bloqueo de IP por Fuerza Bruta en DirectAdmin con Fail2Ban

Actualizado el 1 de octubre de 2025

¿Qué es Fail2ban y por qué necesitas un bloqueo de IP por fuerza bruta?

Imagina que tu servidor es una casa con una puerta principal. La cerradura de esa puerta es tu contraseña de SSH o la de tu panel de control. Un ataque de fuerza bruta es como un ladrón que se sienta frente a la puerta y prueba millones de combinaciones de llaves una y otra vez hasta que una funciona. No es una cuestión de "si" lo intentan, sino de "cuándo". Los bots automatizados escanean internet constantemente en busca de servidores con SSH abierto o paneles de administración para intentar adivinar credenciales.

Aquí es donde entra Fail2ban. Piénsalo como un portero muy estricto que vigila quién llama a la puerta. Si alguien falla la contraseña varias veces seguidas, el portero no solo le cierra la puerta en las narices, sino que lo pone en una lista negra y lo expulsa de la propiedad durante un tiempo determinado. En términos técnicos, Fail2ban monitorea los registros (logs) de tu servidor, detecta patrones de intentos fallidos y, cuando supera un umbral, bloquea la dirección IP del atacante a nivel de firewall (usando iptables o nftables).

Este artículo es una guía práctica, paso a paso, para configurar Fail2ban DirectAdmin y proteger tu servidor contra ataques de fuerza bruta en SSH, el panel de control y otros servicios críticos. No necesitas ser un experto en seguridad, solo seguir las instrucciones con calma.


Requisitos previos y acceso al servidor

Antes de empezar, asegúrate de tener lo siguiente:

  1. Acceso root al servidor: Necesitas ser usuario root o tener un usuario con privilegios sudo. Si no sabes cómo obtenerlo, contacta con tu proveedor de hosting.
  2. DirectAdmin instalado: Esta guía está pensada para servidores que usan DirectAdmin como panel de control. El proceso es similar en otros paneles, pero los comandos y rutas pueden variar.
  3. Conexión SSH: Necesitas una herramienta como PuTTY (en Windows) o la terminal (en Mac/Linux) para conectarte a tu servidor.
  4. Un poco de paciencia: No te preocupes, los comandos son sencillos y los explicaremos uno a uno.

[INFO] Aunque esta guía se centra en DirectAdmin, los conceptos son universales. Si usas otro panel como Syspanel (que es el nuevo nombre de HestiaCP y se accede por el puerto 2106), la lógica de Fail2ban es la misma, pero las rutas de los logs y las configuraciones pueden cambiar ligeramente.


Paso 1: Comprobar si Fail2ban está instalado

En muchos servidores con DirectAdmin, Fail2ban ya viene preinstalado y configurado. Para comprobarlo, ejecuta este comando en tu terminal:

fail2ban-client status

Si ves una lista de "Jails" (prisiones, que son los servicios protegidos), ¡genial! Ya está funcionando. Si, por el contrario, recibes un error como "comando no encontrado", tendrás que instalarlo.

¿Cómo instalar Fail2ban?

Dependiendo de tu sistema operativo (la mayoría usa CentOS, AlmaLinux o Ubuntu), el comando varía:

  • Para CentOS, AlmaLinux o Rocky Linux:

    yum install fail2ban
    
  • Para Ubuntu o Debian:

    apt-get update
    apt-get install fail2ban
    

Una vez instalado, vamos a configurarlo para que proteja tu servidor de forma efectiva.


Paso 2: Configuración básica de Fail2ban para DirectAdmin

La configuración principal de Fail2ban se encuentra en el archivo /etc/fail2ban/jail.conf. Sin embargo, no debemos editar este archivo directamente, ya que se sobrescribe con las actualizaciones del sistema. La buena práctica es crear un archivo local en /etc/fail2ban/jail.local que sobrescriba la configuración por defecto.

Vamos a crearlo con el editor nano (o vi si lo prefieres):

nano /etc/fail2ban/jail.local

Dentro de este archivo, vamos a pegar la configuración base. No te asustes, es más simple de lo que parece:

[DEFAULT]
# Tiempo en segundos que una IP será bloqueada (3600 = 1 hora)
bantime = 3600

# Tiempo en segundos durante el cual se cuentan los intentos fallidos (600 = 10 minutos)
findtime = 600

# Número de intentos fallidos antes de bloquear
maxretry = 5

# Ignorar las IPs de nuestra propia oficina o casa para no bloquearte a ti mismo
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Notificación por correo (opcional, pero recomendado)
destemail = tu_correo@tudominio.com
sendername = Fail2ban
mta = sendmail

[WARNING] El parámetro ignoreip es CRÍTICO. Asegúrate de añadir tu propia dirección IP de casa o de la oficina aquí. Si no lo haces, corres el riesgo de bloquearte a ti mismo si cometes un error al escribir la contraseña. Para saber tu IP, simplemente busca "¿cuál es mi IP?" en Google.


Paso 3: Crear reglas específicas para SSH y DirectAdmin

Ahora viene la parte interesante. Vamos a añadir "jails" (prisiones) al final del archivo jail.local. Cada jail define qué servicio proteger y cómo.

3.1. Proteger el acceso SSH

El acceso SSH es la puerta principal de tu servidor. Sin protección, es el objetivo número uno de los ataques de fuerza bruta. Añade esto al final de tu archivo jail.local:

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

Explicación:

  • enabled = true: Activa esta regla.
  • port = ssh: Aplica al puerto estándar de SSH (22). Si cambiaste el puerto SSH, indícalo aquí (ej. port = 2222).
  • logpath: Ruta del archivo de logs. En CentOS/AlmaLinux es /var/log/secure, en Ubuntu es /var/log/auth.log.
  • maxretry = 3: Con solo 3 intentos fallidos, bloqueamos la IP. Es una configuración estricta, pero muy segura.

3.2. Proteger el panel de DirectAdmin (puerto 2222)

DirectAdmin tiene su propio panel de administración y login. También es un objetivo común. Añade esta regla:

[directadmin]
enabled = true
port = 2222
logpath = /var/log/directadmin/login.log
maxretry = 5

[TIP] Si tu panel de control es Syspanel (antes HestiaCP), la lógica es idéntica, pero el puerto por defecto es el 2106 y la ruta del log suele ser /var/log/syspanel/auth.log. Simplemente cambia esos valores en la configuración.

3.3. Proteger el correo (Exim) y el FTP (Pure-FTPd)

Tu servidor de correo y FTP también son vulnerables. Añade estas líneas para protegerlos:

[exim]
enabled = true
port = smtp,pop3,imap
logpath = /var/log/exim/mainlog
maxretry = 5

[pure-ftpd]
enabled = true
port = ftp
logpath = /var/log/messages
maxretry = 5

Paso 4: Reiniciar y activar Fail2ban

Una vez que hayas guardado el archivo (en nano, con Ctrl + O y luego Ctrl + X), es hora de reiniciar el servicio para que aplique los cambios.

systemctl restart fail2ban

Luego, habilítalo para que se inicie automáticamente al arrancar el servidor:

systemctl enable fail2ban

Ahora, verifica que todo está funcionando correctamente:

fail2ban-client status

Deberías ver una lista con los jails que has configurado: sshd, directadmin, exim, pure-ftpd.


Paso 5: Cómo verificar si una IP está bloqueada y desbloquearla

Es normal que quieras saber quién está siendo bloqueado o si tú mismo has sido bloqueado por error. Aquí tienes los comandos básicos:

  • Ver el estado de un jail específico:

    fail2ban-client status sshd
    

    Esto te mostrará una lista de IPs bloqueadas actualmente en ese servicio.

  • Desbloquear una IP manualmente:

    fail2ban-client set sshd unbanip 192.168.1.100
    

    Sustituye 192.168.1.100 por la IP que quieras desbloquear. Esto es útil si te has bloqueado a ti mismo accidentalmente.

  • Ver todas las IPs bloqueadas en todos los jails:

    fail2ban-client banned
    

Configuración avanzada: Personalizar el tiempo de bloqueo y los umbrales

La configuración que hemos visto es la base, pero puedes adaptarla a tus necesidades. Por ejemplo, si tienes un servidor de producción, quizás quieras un bloqueo más largo. Si es un servidor de pruebas, puedes ser más permisivo.

  • Aumentar el tiempo de bloqueo a 24 horas:
    En el [DEFAULT], cambia bantime = 3600 a bantime = 86400.

  • Ser más estricto con SSH:
    Puedes cambiar el maxretry del jail [sshd] a 2 para bloquear al segundo intento fallido.

  • Bloqueo permanente:
    Si quieres bloquear una IP para siempre, usa un valor negativo: bantime = -1. Úsalo con mucha precaución, ya que un error podría dejarte fuera de tu servidor indefinidamente.


Preguntas frecuentes (FAQ) sobre Fail2ban y DirectAdmin

¿Fail2ban consume muchos recursos?

No, es un servicio muy ligero. Simplemente vigila los archivos de log y ejecuta acciones cuando detecta patrones. Su consumo de CPU y memoria es mínimo.

¿Puedo usar Fail2ban para proteger otros servicios, como WordPress?

Sí, absolutamente. Puedes crear jails personalizados para servicios como Apache o Nginx. Por ejemplo, puedes bloquear IPs que intenten acceder a wp-login.php repetidamente. La configuración es un poco más avanzada, pero es un gran añadido para la seguridad servidor.

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

No es el fin del mundo. Si tienes acceso al panel de control de tu proveedor (como Vultr o DigitalOcean), puedes acceder a través de su consola web (VNC) y ejecutar el comando fail2ban-client set sshd unbanip TU_IP para desbloquearte. También puedes reiniciar el servicio con systemctl restart fail2ban para limpiar todas las listas de bloqueo.

¿Fail2ban es suficiente para proteger mi servidor?

No. Es una capa de seguridad esencial, pero no la única. Debes usar contraseñas fuertes, deshabilitar el login de root por SSH, mantener el sistema actualizado y usar un firewall como CSF (ConfigServer Security & Firewall) si es posible. La protección SSH es solo una parte del todo.

¿Cómo sé si Fail2ban está bloqueando ataques reales?

Revisa los logs del jail. Por ejemplo, cat /var/log/fail2ban.log te mostrará la actividad. Verás líneas como Ban 185.220.101.34. Esa es una IP que ha sido bloqueada por intentos fallidos.


Conclusión y mejores prácticas para la seguridad de tu servidor

Configurar Fail2ban DirectAdmin es uno de los pasos más efectivos que puedes tomar para blindar tu servidor contra ataques de fuerza bruta. No es una tarea compleja, y los beneficios son inmensos. Un servidor sin Fail2ban es como una puerta sin cerradura; con él, tienes un guardia de seguridad que trabaja las 24 horas.

Para terminar, aquí tienes un resumen de mejores prácticas:

  1. Mantén Fail2ban actualizado: Al igual que el resto del sistema, asegúrate de que Fail2ban recibe actualizaciones.
  2. Monitorea los logs: Dedica unos minutos a la semana a revisar fail2ban.log para entender qué tipo de ataques estás recibiendo.
  3. No te limites a SSH: Protege también el FTP, el correo y, si es posible, los servicios web.
  4. Usa claves SSH: Si es posible, desactiva la autenticación por contraseña y usa claves SSH. Es mucho más seguro.
  5. Considera un firewall: Fail2ban funciona bien con iptables, pero un firewall más completo como CSF puede ofrecerte más opciones de configuración y protección.

[INFO] Recuerda que la seguridad es un proceso, no un destino. Siempre hay nuevas amenazas y nuevas herramientas. Mantente informado y no bajes la guardia.

Esperamos que esta guía te haya sido de gran ayuda. Si tienes alguna duda, consulta la documentación oficial de DirectAdmin o de Fail2ban. ¡Feliz servidor seguro!

¿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