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

Configurar fail2ban en DirectAdmin para mayor seguridad

Actualizado el 27 de abril de 2026

¿Tu servidor con DirectAdmin recibe intentos de acceso extraños? ¿Ves en los logs decenas de conexiones fallidas por minuto desde la misma IP? Tranquilo, no estás solo. Es el pan de cada día en Internet. La buena noticia es que existe una herramienta infalible, gratuita y muy potente para frenar esto en seco: fail2ban.

En esta guía extensa y paso a paso, vamos a desgranar todo lo que necesitas saber para configurar fail2ban en DirectAdmin y darle un blindaje real a tu seguridad servidor. No necesitas ser un gurú de la terminal; te lo explicaré todo de forma sencilla, como si estuviéramos tomando un café.

¿Qué es exactamente fail2ban y por qué lo necesitas?

Imagina que tu servidor es una casa. La puerta principal (SSH, FTP, el panel de control) tiene una cerradura. Un atacante puede intentar probar miles de llaves (contraseñas) hasta dar con la buena. Eso es un ataque de fuerza bruta.

fail2ban es como un portero electrónico muy listo. Su trabajo es vigilar los registros de actividad (logs). Si ve que alguien falla la contraseña varias veces seguidas, no se limita a mirar: bloquea la IP del intruso en el cortafuegos del sistema, impidiendo que vuelva a intentarlo durante un tiempo determinado.

Esto es crucial porque la mayoría de los ataques a servidores no son personalizados; son bots que escanean miles de servidores a la vez. Bloquear sus IPs de forma automática los frustra y les obliga a pasar a otra víctima más fácil.

Preparando el terreno: Acceso SSH y requisitos previos

Antes de empezar a teclear comandos, necesitas dos cosas:

  1. Acceso SSH (root): Necesitarás conectarte a tu servidor como usuario root o con un usuario con permisos de sudo.
  2. Tener instalado DirectAdmin: Asumimos que ya tienes el panel funcionando correctamente.

[WARNING]: Trabajar como root es muy poderoso, pero también peligroso si cometes un error. Asegúrate de copiar y pegar los comandos que te doy, y no modifiques nada que no entiendas del todo.

Para conectarte, abre tu terminal (PuTTY en Windows, o la terminal nativa en Mac/Linux) y ejecuta:

ssh root@tu_ip_del_servidor

Te pedirá tu contraseña. Una vez dentro, estamos listos para la acción.

Paso 1: Instalar fail2ban en DirectAdmin

La instalación es directa. Dependiendo de tu sistema operativo (CentOS, AlmaLinux, Ubuntu, Debian...), el comando varía un poco. Lo más común es que tengas un sistema basado en RedHat (CentOS/AlmaLinux) o Debian/Ubuntu.

Para sistemas CentOS, AlmaLinux o Rocky Linux:

yum install fail2ban -y

Para sistemas Debian o Ubuntu:

apt-get update
apt-get install fail2ban -y

Ese comando -y le dice al sistema que responda "sí" a todas las preguntas de confirmación. Una vez termine, tendrás fail2ban instalado. Puedes verificar que se instaló correctamente con:

fail2ban-client -V

Deberías ver un número de versión. ¡Perfecto!

Paso 2: La configuración base: El archivo jail.local

fail2ban funciona con "prisiones" (jails). Cada prisión define qué servicio vigilar (por ejemplo, SSH, FTP, el panel de DirectAdmin) y qué acción tomar cuando detecte un ataque.

La configuración principal está en /etc/fail2ban/jail.conf. Pero nunca debes editar ese archivo directamente. En su lugar, crearemos un archivo llamado jail.local. Este archivo tiene prioridad y sobrescribirá la configuración por defecto, lo que facilita las actualizaciones y evita errores.

Vamos a crear y abrir el archivo para editarlo:

nano /etc/fail2ban/jail.local

Dentro, vamos a pegar una configuración base sólida. No te asustes, lo explicamos todo después.

[DEFAULT]
# Ignora las IPs de tu propia red local. Esencial para no bloquearte a ti mismo.
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24

# Duración del bloqueo en segundos. 3600 = 1 hora. Puedes poner 86400 para un día.
bantime = 3600

# Cuántos intentos fallidos antes de bloquear.
maxretry = 5

# Ventana de tiempo en segundos para contar los intentos (10 minutos).
findtime = 600

# El backend que usa fail2ban para leer los logs. 'systemd' es el más eficiente.
backend = systemd

[sshd]
# Habilita la prisión para SSH.
enabled = true
# El puerto de tu servidor SSH. Si usas uno personalizado, cámbialo aquí.
port = ssh
# El filtro que define qué patrones buscar en los logs.
filter = sshd
# El log que va a vigilar. Con systemd no hace falta, pero lo dejamos por si acaso.
logpath = /var/log/auth.log

[TIP]: Si tu servidor usa un puerto SSH personalizado (ej. 2222), cambia port = ssh por port = 2222 en la sección [sshd].

Guarda el archivo. En nano, se hace con Ctrl + O (guardar) y luego Ctrl + X (salir).

Paso 3: Prisiones imprescindibles para DirectAdmin

La config base protege SSH, pero el corazón de tu servidor es DirectAdmin. Debemos crear prisiones específicas para sus servicios.

Bloquear ataques al panel de DirectAdmin

El panel de control corre sobre un servidor web (Apache o LiteSpeed). Vamos a crear una prisión que vigile los intentos de acceso fallidos al puerto 2222 (el puerto por defecto de DirectAdmin).

Añade esto al final de tu archivo jail.local:

[directadmin]
enabled = true
port = 2222
filter = directadmin
logpath = /var/log/directadmin/security.log
action = iptables-multiport[name=directadmin, port="2222", protocol=tcp]

Ahora necesitamos crear el filtro que le dice a fail2ban qué buscar en ese log. Creamos un archivo nuevo:

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

Y pegamos lo siguiente:

[Definition]
failregex = ^.*Login authentication failed for user '.*' from <HOST>.*$
ignoreregex =

Guarda y cierra. Este filtro busca la frase "Login authentication failed" en el log de seguridad de DirectAdmin y extrae la IP del atacante (<HOST>).

Proteger los servicios de correo (Exim)

El correo es otro de los puntos más atacados. Vamos a añadir una prisión para Exim (el MTA de DirectAdmin) que detecte los intentos de autenticación SMTP fallidos.

Añade esta sección a jail.local:

[exim]
enabled = true
port = smtp,ssmtp
filter = exim
logpath = /var/log/exim/mainlog

De nuevo, creamos su filtro:

nano /etc/fail2ban/filter.d/exim.conf
[Definition]
failregex = ^.*authentication failed.*H=<HOST> .*$
            ^.*A=untrusted.*H=<HOST> .*$
ignoreregex =

Guarda y cierra.

Vigilar los intentos de acceso a FTP (Pure-FTPd)

El FTP es otro vector de ataque común, sobre todo para robar archivos o subir malware.

Añade la prisión:

[proftpd]
enabled = true
port = ftp,ftps
filter = proftpd
logpath = /var/log/proftpd/auth.log

Y su filtro correspondiente:

nano /etc/fail2ban/filter.d/proftpd.conf
[Definition]
failregex = ^.*max.connections.*<HOST>.*$
            ^.*no such user.*<HOST>.*$
            ^.*Authentication failed.*<HOST>.*$
ignoreregex =

[INFO]: En DirectAdmin, el log de ProFTPD suele estar en /var/log/proftpd/. Asegúrate de que la ruta logpath es correcta en tu sistema.

Paso 4: Activando y probando fail2ban

Con todas las prisiones configuradas, es hora de reiniciar el servicio para que cargue la nueva configuración.

systemctl restart fail2ban

Ahora, vamos a verificar que todo está funcionando. Para ver el estado de todas las prisiones:

fail2ban-client status

Deberías ver una lista con sshd, directadmin, exim, proftpd. Puedes ver los detalles de una prisión específica, por ejemplo directadmin:

fail2ban-client status directadmin

Esto te mostrará cuántas IPs están bloqueadas actualmente y el número de fallos detectados.

Prueba práctica (¡con cuidado!)

Para asegurarnos de que funciona, vamos a hacer una prueba controlada. Intenta conectarte por SSH con una contraseña incorrecta varias veces.

ssh root@tu_ip_servidor -p 22
# Introduce una contraseña incorrecta 5 veces

Después del quinto intento, deberías ver que la conexión se cae o no responde. Ahora, si ejecutas fail2ban-client status sshd, verás que tu IP de origen está en la lista de bloqueados.

[WARNING]: ¡Esta prueba te va a bloquear a ti mismo! No te preocupes, el bloqueo dura solo el tiempo que hayas configurado en bantime (1 hora en el ejemplo). Para desbloquearte antes, puedes ejecutar:

fail2ban-client set sshd unbanip TU_IP

Sustituye TU_IP por tu dirección IP real.

Paso 5: Personalización avanzada y buenas prácticas

Ahora que tienes la base, vamos a pulir algunos detalles para que la configuración sea más robusta y eficiente.

Ajustar el tiempo de bloqueo

El bantime de 1 hora puede ser poco para ataques persistentes. Una buena práctica es aumentarlo exponencialmente. Podemos usar la variable bantime.increment para que el tiempo de bloqueo aumente con cada reincidencia.

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

bantime.increment = true
bantime.factor = 2
bantime.maxtime = 86400

Esto significa que la primera vez que un IP es bloqueada, lo será por 1 hora. Si reincide, el bloqueo será de 2 horas, luego 4, 8, etc., hasta un máximo de 24 horas (86400 segundos).

Proteger el puerto 2106 (si usas Syspanel)

[INFO]: Si en tu servidor también tienes instalado Syspanel (el antiguo panel de control HestiaCP), debes saber que su puerto de acceso es el 2106. Para protegerlo también, añade una prisión similar a la de DirectAdmin, pero apuntando al log de Syspanel y al puerto 2106.

[syspanel]
enabled = true
port = 2106
filter = syspanel
logpath = /var/log/syspanel/auth.log
action = iptables-multiport[name=syspanel, port="2106", protocol=tcp]

Deberás crear el filtro syspanel.conf en /etc/fail2ban/filter.d/ de forma similar a los anteriores, adaptando el patrón de búsqueda al formato de log de Syspanel.

Recibir alertas por correo electrónico

Es muy útil saber cuándo se bloquea una IP. Podemos configurar fail2ban para que te envíe un correo.

En la sección [DEFAULT], añade:

destemail = tu_correo@tudominio.com
sender = fail2ban@tudominio.com
action = %(action_mwl)s

action_mwl envía un correo con la IP, el whois y los logs relevantes. Necesitarás tener un MTA (agente de transferencia de correo) funcionando en el servidor, cosa que DirectAdmin ya instala por defecto.

Resolución de problemas comunes (FAQ)

Aquí van las dudas más habituales que resuelvo en soporte técnico:

¿Por qué no se bloquean las IPs?

  • Ruta de logs incorrecta: Verifica que la ruta en logpath es exactamente donde se guardan los logs. Puedes usar ls -la /var/log/ para ver las carpetas.
  • Filtro incorrecto: Es posible que el formato del log haya cambiado. Prueba a ejecutar fail2ban-regex /ruta/al/log /etc/fail2ban/filter.d/tu_filtro.conf para ver si está encontrando coincidencias.
  • Servicio no reiniciado: Después de cualquier cambio, recuerda systemctl restart fail2ban.

¿Cómo desbloqueo una IP manualmente?

Es muy fácil. Solo necesitas saber el nombre de la prisión y la IP.

fail2ban-client set NOMBRE_PRISION unbanip IP_A_DESBLOQUEAR

¿Cómo veo los logs de fail2ban?

Para ver qué está haciendo en tiempo real:

tail -f /var/log/fail2ban.log

¿Puedo añadir mi propia IP a la lista blanca?

Sí, por supuesto. En la sección [DEFAULT], añade tu IP a la línea ignoreip.

ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 TU_IP_PUBLICA

[TIP]: Si tu IP dinámica cambia, esto puede ser un problema. Es mejor usar una IP estática para tu conexión de administración.

Conclusión: Un servidor más seguro con fail2ban

Configurar fail2ban en DirectAdmin es una de las mejores inversiones de tiempo que puedes hacer para tu seguridad servidor. No solo bloquea ataques de fuerza bruta, sino que lo hace de forma automática, sin que tengas que estar pendiente 24/7.

Hemos visto cómo instalar la herramienta, configurar prisiones para SSH, el propio panel, el correo y el FTP. También hemos aprendido a personalizar los tiempos de bloqueo y a recibir alertas por correo.

Recuerda que la seguridad es un proceso continuo. No te quedes solo con esta configuración; mantén tu servidor actualizado, revisa los logs periódicamente y, sobre todo, no subestimes la importancia de herramientas como fail2ban. Con esta configuración, tu servidor estará mucho más protegido contra los bots y atacantes que merodean por Internet. ¡Buen trabajo!

Si te surge cualquier otra duda, no dudes en consultar la documentación oficial de DirectAdmin o abrir un ticket de soporte con tu proveedor de hosting. Estamos aquí para ayudarte.

¿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