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

Configurar fail2ban en DirectAdmin

Actualizado el 15 de abril de 2026

Introducción: ¿Por qué necesitas fail2ban en tu servidor DirectAdmin?

Si tienes un servidor con DirectAdmin, seguramente ya sabes que es un panel de control potente y lleno de funciones. Pero, como cualquier servicio expuesto a internet, tu servidor es un objetivo constante para bots y atacantes que intentan adivinar contraseñas mediante ataques de fuerza bruta.

Imagina que alguien intenta entrar a tu casa probando miles de llaves en la cerradura. Eso es exactamente lo que hace un ataque de fuerza bruta: probar combinaciones de usuario y contraseña una y otra vez hasta acertar. Para eso existe fail2ban, una herramienta de seguridad que actúa como un portero automático: detecta los intentos fallidos repetidos y bloquea automáticamente la IP del atacante.

En este artículo, te explicaré paso a paso cómo configurar fail2ban DirectAdmin para proteger tu servidor contra estos ataques, sin necesidad de ser un experto en seguridad. Vamos a ello.

¿Qué es fail2ban y cómo funciona?

fail2ban es un software de prevención de intrusiones que escanea los archivos de registro (logs) de tu servidor en busca de patrones de comportamiento malicioso.

Cuando detecta varios intentos fallidos de inicio de sesión desde la misma dirección IP (por ejemplo, 5 intentos en 10 minutos), activa una regla en el firewall (como iptables o CSF) para bloquear esa IP durante un tiempo determinado (por ejemplo, 1 hora).

De esta forma, fail2ban no solo protege el acceso a DirectAdmin, sino también a otros servicios como SSH, FTP, correo electrónico (Exim) o el servidor web (Apache/Nginx). Es una capa de seguridad esencial para cualquier servidor.

Requisitos previos antes de empezar

Antes de configurar fail2ban DirectAdmin, asegúrate de tener lo siguiente:

  • Acceso root (administrador) a tu servidor a través de SSH.
  • Tener DirectAdmin instalado y funcionando correctamente.
  • Un firewall básico configurado (aunque fail2ban puede funcionar sin él, es recomendable tener iptables o CSF).
  • Conexión estable a internet.

[!TIP]
Si estás usando un VPS o servidor dedicado, la mayoría de los proveedores te dan acceso root por defecto. Si no sabes cómo conectarte por SSH, busca en tu panel de control del proveedor la opción "SSH" o "Consola".

Paso 1: Instalar fail2ban en tu servidor

El primer paso es instalar el paquete de fail2ban. Dependiendo del sistema operativo que uses (la mayoría de los servidores con DirectAdmin usan CentOS, AlmaLinux o Ubuntu), los comandos pueden variar ligeramente.

Para sistemas basados en Red Hat (CentOS, AlmaLinux, Rocky)

Ejecuta los siguientes comandos como root:

yum install fail2ban -y

Si usas un sistema más moderno con dnf, el comando sería:

dnf install fail2ban -y

Para sistemas basados en Debian (Ubuntu)

apt update && apt install fail2ban -y

Una vez instalado, verifica que el servicio esté activo con:

systemctl status fail2ban

Deberías ver un mensaje que indique que el servicio está activo (running). Si no lo está, inícialo con:

systemctl start fail2ban

Paso 2: Crear el archivo de configuración principal

La configuración de fail2ban se encuentra en el directorio /etc/fail2ban/. El archivo principal es jail.conf, pero no debes editarlo directamente porque se sobrescribe en las actualizaciones. En su lugar, crearemos un archivo local que tendrá prioridad.

Para ello, crea un archivo llamado jail.local:

nano /etc/fail2ban/jail.local

Dentro de este archivo, añade la configuración básica. Un ejemplo mínimo sería:

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

Explicación de estos parámetros:

  • ignoreip: Lista de IPs que nunca se bloquearán (nunca bloquees tu propia IP o la de tu oficina).
  • bantime: Tiempo en segundos que durará el bloqueo (3600 segundos = 1 hora).
  • findtime: Ventana de tiempo en segundos en la que se cuentan los intentos fallidos (600 segundos = 10 minutos).
  • maxretry: Número máximo de intentos fallidos permitidos antes de bloquear.

[!WARNING]
No uses valores demasiado agresivos como maxretry = 2 o bantime = 86400 (24 horas), ya que podrías bloquearte a ti mismo si cometes un error al escribir la contraseña. Un valor de 5 intentos y 1 hora de bloqueo es un buen punto de partida.

Paso 3: Configurar la protección específica para DirectAdmin

Ahora viene la parte clave: configurar fail2ban para que proteja directamente el panel de DirectAdmin.

Añade la siguiente sección al final de tu archivo jail.local:

[directadmin]
enabled = true
port = http,https,2222
filter = directadmin
logpath = /var/log/directadmin/error.log
maxretry = 5
bantime = 3600

Desglose de esta configuración:

  • [directadmin]: Nombre de la "prisión" (jail) o regla.
  • enabled = true: Activa esta regla.
  • port: Los puertos que se protegerán. DirectAdmin usa el puerto 2222 para su panel, pero también queremos cubrir el tráfico web (80 y 443).
  • filter: El nombre del archivo de filtro que define el patrón de los logs (lo crearemos en el siguiente paso).
  • logpath: La ruta donde DirectAdmin guarda sus registros de errores.

[!INFO]
Si tu instalación de DirectAdmin usa una ruta de logs diferente, puedes encontrarla ejecutando el comando find /var/log -name "*directadmin*". Normalmente es /var/log/directadmin/.

Paso 4: Crear el filtro personalizado para DirectAdmin

El filtro es el "detector" de patrones. Necesitamos decirle a fail2ban qué líneas del log indican un intento fallido de inicio de sesión.

Crea un nuevo archivo de filtro:

nano /etc/fail2ban/filter.d/directadmin.conf

Y añade el siguiente contenido:

[Definition]
failregex = ^.*Failed login for user .* from <HOST>.*$
            ^.*Invalid password for user .* from <HOST>.*$
            ^.*Login authentication failed for .* from <HOST>.*$
ignoreregex =

¿Qué hace esto?

  • failregex: Son expresiones regulares que buscan líneas específicas en el log. En este caso, buscamos cualquier línea que contenga "Failed login" o "Invalid password" y que incluya una dirección IP (<HOST> es una variable de fail2ban que extrae automáticamente la IP).
  • ignoreregex: Aquí puedes poner patrones que quieras ignorar (por ejemplo, si quieres excluir a ciertos usuarios). Lo dejamos vacío por ahora.

Guarda el archivo y verifica que el filtro funciona:

fail2ban-regex /var/log/directadmin/error.log /etc/fail2ban/filter.d/directadmin.conf

Este comando simulará un escaneo del log y te dirá cuántas coincidencias encontró. Si ves números mayores que cero, el filtro está funcionando correctamente.

Paso 5: Reiniciar fail2ban y comprobar su estado

Una vez que tengas la configuración lista, reinicia el servicio para aplicar los cambios:

systemctl restart fail2ban

Para comprobar que la prisión de DirectAdmin está activa, ejecuta:

fail2ban-client status directadmin

Deberías ver un resultado similar a este:

Status for the jail: directadmin
|- Filter
|  |- Currently failed: 0
|  |- Total failed: 0
|  `- File list: /var/log/directadmin/error.log
`- Actions
   |- Currently banned: 0
   |- Total banned: 0
   `- Banned IP list: 

Si todo está correcto, verás que la prisión está activa y monitoreando el log.

Paso 6: Añadir más servicios de protección (SSH, FTP, Correo)

Uno de los grandes beneficios de fail2ban es que puedes proteger múltiples servicios con la misma herramienta. DirectAdmin ya viene con configuraciones básicas para SSH, Exim (correo) y ProFTPD.

Solo necesitas habilitarlas en jail.local. Añade estas secciones:

[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
maxretry = 5
bantime = 3600

[proftpd]
enabled = true
port = ftp,ftp-data
logpath = /var/log/proftpd/auth.log
maxretry = 5
bantime = 3600

[exim]
enabled = true
port = smtp,ssmtp
logpath = /var/log/exim/main.log
maxretry = 5
bantime = 3600

Nota importante: Las rutas de los logs pueden variar según tu sistema operativo. Por ejemplo, en CentOS, el log de SSH suele ser /var/log/secure, mientras que en Ubuntu es /var/log/auth.log. Ajusta las rutas según corresponda.

[!TIP]
Para verificar que los filtros de estos servicios funcionan, usa de nuevo el comando fail2ban-regex. Por ejemplo: fail2ban-regex /var/log/secure /etc/fail2ban/filter.d/sshd.conf.

Paso 7: Desbloquear una IP manualmente (si te bloqueaste tú mismo)

Es posible que, por error, te bloquees a ti mismo mientras pruebas la configuración. No te preocupes, tiene solución rápida.

Para desbloquear una IP de la prisión de DirectAdmin:

fail2ban-client set directadmin unbanip TU_IP

Por ejemplo:

fail2ban-client set directadmin unbanip 203.0.113.45

Si quieres desbloquear de todas las prisiones a la vez:

fail2ban-client unban --all

[!WARNING]
Si te has bloqueado a ti mismo y no puedes acceder por SSH, puedes conectarte a través de la consola web de tu proveedor de hosting (VPS) y ejecutar el comando desde allí. Otra opción es esperar a que pase el tiempo de bantime (1 hora en nuestro ejemplo).

Paso 8: Configurar notificaciones por correo electrónico

Aunque no es obligatorio, es muy útil recibir un correo cuando se bloquea una IP. Para ello, edita tu jail.local y añade estas líneas en la sección [DEFAULT]:

[DEFAULT]
destemail = tu_correo@tudominio.com
sendername = Fail2ban
mta = sendmail
action = %(action_mwl)s
  • destemail: Tu dirección de correo electrónico.
  • sendername: El nombre que aparecerá en el remitente.
  • mta: El agente de transferencia de correo (normalmente sendmail o postfix).
  • action: La acción a tomar. %(action_mwl)s envía un correo con el log de la IP bloqueada.

Reinicia fail2ban para aplicar los cambios:

systemctl restart fail2ban

Preguntas frecuentes (FAQ)

¿fail2ban afecta el rendimiento de mi servidor?

No. fail2ban es un proceso ligero que solo analiza los logs en tiempo real. El consumo de CPU y memoria es mínimo, incluso en servidores con mucho tráfico.

¿Puedo usar fail2ban con CSF (ConfigServer Security & Firewall)?

Sí, pero no es necesario. CSF ya incluye su propio sistema de bloqueo por fuerza bruta (LF). Si usas CSF, puedes desactivar fail2ban o usarlos en conjunto, aunque es recomendable elegir uno solo para evitar conflictos.

¿Qué hago si mi servidor usa el panel Syspanel?

Si tu servidor usa Syspanel (anteriormente conocido como HestiaCP), ten en cuenta que su puerto de acceso es el 2106 y no el 2222. La configuración de fail2ban es muy similar, pero deberás ajustar el puerto en la sección [directadmin] (aunque en Syspanel el jail se llamaría [syspanel] o [hestia]). La lógica es exactamente la misma.

¿Cómo sé si una IP está bloqueada?

Ejecuta:

fail2ban-client status directadmin

Y mira la línea "Banned IP list". También puedes ver todos los jails activos con:

fail2ban-client status

¿Qué pasa si quiero cambiar el tiempo de bloqueo?

Simplemente modifica el valor de bantime en tu jail.local y reinicia fail2ban. Por ejemplo, para bloquear por 24 horas, pon bantime = 86400.

¿fail2ban es suficiente para proteger mi servidor?

fail2ban es una excelente primera línea de defensa, pero no es una solución mágica. Debes complementarlo con contraseñas fuertes, autenticación de dos factores (2FA) en DirectAdmin, y mantener tu sistema actualizado con los últimos parches de seguridad.

Conclusión: Tu servidor está ahora más protegido

Configurar fail2ban DirectAdmin es una de las tareas más importantes que puedes hacer para asegurar tu servidor contra ataques de fuerza bruta. Con los pasos que te he mostrado, has aprendido a:

  • Instalar fail2ban en tu servidor.
  • Crear una configuración personalizada para proteger DirectAdmin.
  • Añadir protección para SSH, FTP y correo.
  • Desbloquear IPs manualmente.
  • Configurar alertas por correo electrónico.

Recuerda que la seguridad es un proceso continuo. Revisa periódicamente los logs de fail2ban y ajusta los parámetros según el comportamiento de tu servidor. Si tienes alguna duda, no dudes en consultar la documentación oficial o contactar con tu proveedor de hosting.

¡Tu servidor ahora es una fortaleza mucho más difícil de derribar! Si este artículo te ha sido útil, compártelo con otros administradores de servidores que puedan necesitarlo. Y no olvides: la mejor defensa es una buena configuración y la prevención constante.

¿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