Guía para configurar fail2ban en DirectAdmin
¿Te preocupa que alguien intente entrar a la fuerza en tu servidor? Es una sensación muy desagradable, sobre todo cuando ves en los registros (logs) cientos de intentos de acceso fallidos. Por suerte, existe una herramienta fantástica y gratuita llamada fail2ban que actúa como un portero muy estricto: si alguien intenta forzar la cerradura varias veces, lo expulsa del edificio (bloquea su IP) durante un tiempo.
En esta guía, te voy a explicar paso a paso cómo configurar fail2ban en DirectAdmin para blindar tu servidor. No necesitas ser un experto en Linux; solo seguir las instrucciones con calma. Vamos a ello.
¿Qué es Fail2ban y por qué lo necesitas en DirectAdmin?
Imagina que tu servidor es una casa con varias puertas: la del SSH (acceso por terminal), la del correo (SMTP, POP3, IMAP), la del panel de control (DirectAdmin) y la de tu web (Apache, Nginx, LiteSpeed). Cada puerta tiene su cerradura.
Un atacante podría intentar adivinar la llave probando miles de contraseñas por minuto (ataque de fuerza bruta). Fail2ban es el sistema de seguridad que vigila todas estas puertas. Si detecta que desde una misma dirección IP se producen demasiados fallos al intentar abrir una cerradura, automáticamente activa una alarma y bloquea esa IP en el firewall del sistema (normalmente iptables o nftables).
El resultado es simple: bloquear IP en DirectAdmin se vuelve automático, y tu servidor queda mucho más seguro sin que tengas que estar pendiente 24/7.
Beneficios clave de usar Fail2ban
- Protección automática: No necesitas intervenir manualmente para bloquear a los "malos".
- Reducción de carga: Al bloquear IPs maliciosas, el servidor no malgasta recursos procesando intentos de conexión basura.
- Registro de actividad: Te permite ver desde qué IPs se intentan ataques para tomar medidas adicionales si es necesario.
- Personalización: Puedes elegir cuántos intentos permitir antes de bloquear y durante cuánto tiempo.
Requisitos previos antes de configurar Fail2ban
Antes de empezar, asegúrate de tener lo siguiente:
- Acceso root al servidor: Necesitas acceso total (root) a través de SSH (terminal). Si no sabes qué es esto, es el momento de contactar con tu proveedor de hosting para que te lo facilite, o busca "cómo conectarse por SSH" en tu sistema operativo.
- DirectAdmin instalado: Esta guía asume que ya tienes el panel DirectAdmin funcionando correctamente.
- Sistema operativo compatible: Funciona en la mayoría de distribuciones Linux (AlmaLinux, Rocky Linux, Ubuntu, Debian, CentOS). Los comandos de instalación pueden variar ligeramente.
[WARNING]
¡CUIDADO! Al bloquear IPs, existe el riesgo de bloquearte a ti mismo si fallas la contraseña varias veces. Te recomiendo hacer esto con calma y, si es posible, tener una segunda vía de acceso (como el panel de tu proveedor de hosting) por si acaso.
Paso 1: Instalar Fail2ban en tu servidor
El primer paso es instalar el software. Los comandos varían según tu sistema operativo. Vamos a ver los dos casos más comunes.
Para AlmaLinux, Rocky Linux o CentOS (usando dnf o yum)
Conéctate por SSH a tu servidor y ejecuta:
dnf install epel-release -y
dnf install fail2ban -y
Para Ubuntu o Debian (usando apt)
apt update
apt install fail2ban -y
Una vez instalado, vamos a habilitar el servicio para que arranque automáticamente con el sistema.
systemctl enable fail2ban
systemctl start fail2ban
[TIP]
Si estás usando Syspanel (antes conocido como HestiaCP) en lugar de DirectAdmin, la instalación es exactamente la misma. La diferencia estará en la configuración de las rutas de los logs, pero para DirectAdmin nos centramos en esta guía.
Paso 2: Configuración básica de Fail2ban (el archivo jail.local)
Fail2ban tiene dos tipos de archivos de configuración: los de la instalación por defecto (que no debes tocar) y los de configuración local. Es en el archivo local donde vamos a trabajar para no romper nada.
Vamos a crear y editar el archivo jail.local.
nano /etc/fail2ban/jail.local
Dentro de este archivo, vamos a pegar una configuración base. Te recomiendo borrar todo el contenido y pegar esto:
[DEFAULT]
# Tiempo durante el cual una IP está bloqueada (en segundos). 1 hora = 3600
bantime = 3600
# Ventana de tiempo en la que se cuentan los intentos fallidos (en segundos). 10 minutos = 600
findtime = 600
# Número de fallos permitidos antes de bloquear.
maxretry = 5
# Ignorar la propia IP del servidor (muy importante para no bloquearte).
ignoreip = 127.0.0.1/8 ::1
# Acción a tomar (bloquear en el firewall).
banaction = firewallcmd-ipset
Explicación rápida:
bantime: ¿Cuánto tiempo dura el castigo? 3600 segundos = 1 hora.findtime: ¿En cuánto tiempo se cuentan los fallos? Si en 10 minutos hay 5 fallos, se bloquea.maxretry: El número de intentos fallidos que disparan el bloqueo.ignoreip: IPs que nunca se bloquean. Aquí deberías poner tu IP de casa o la de tu oficina para evitar sustos.
Guarda el archivo (en nano es Ctrl + X, luego Y y luego Enter).
Paso 3: Activar las "cárceles" (Jails) para DirectAdmin
Aquí es donde viene lo bueno. Un "jail" es una regla específica para un servicio. Necesitamos decirle a Fail2ban qué servicios tiene que vigilar. En DirectAdmin, los logs se encuentran en rutas específicas.
Añade lo siguiente al final del mismo archivo jail.local que acabas de editar:
[directadmin]
enabled = true
port = http,https,2222
filter = directadmin
logpath = /var/log/directadmin/error.log
maxretry = 5
bantime = 600
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 600
[exim]
enabled = true
port = smtp,pop3,imap
filter = exim
logpath = /var/log/exim/mainlog
maxretry = 5
bantime = 600
[proftpd]
enabled = true
port = ftp
filter = proftpd
logpath = /var/log/proftpd/auth.log
maxretry = 5
bantime = 600
¿Qué hemos hecho?
[directadmin]: Vigila el propio panel de control. El puerto2222es el puerto por defecto de DirectAdmin. Si cambiaste el puerto del panel, cámbialo aquí también.[sshd]: Vigila los intentos de acceso por SSH. Es el punto más atacado.[exim]: Vigila el servidor de correo. Es vital para evitar el envío de spam.[proftpd]: Vigila el acceso FTP. Si usas otro servidor FTP (como Pure-FTPd), la ruta del log será diferente, pero esta es la más común.
[INFO]
En algunos sistemas, la ruta del log de SSH puede ser/var/log/auth.logen lugar de/var/log/secure. Si no bloquea, revisa cuál es la correcta en tu sistema.
Paso 4: Reiniciar Fail2ban para aplicar los cambios
Una vez que has guardado los cambios, tienes que reiniciar el servicio para que lea la nueva configuración.
systemctl restart fail2ban
Para comprobar que todo está funcionando, puedes ver el estado del servicio:
fail2ban-client status
Deberías ver una lista de las "cárceles" activas (directadmin, sshd, exim, proftpd). Para ver los detalles de una en concreto, por ejemplo sshd:
fail2ban-client status sshd
Esto te mostrará las IPs bloqueadas actualmente (si hay alguna) y el número de fallos detectados.
Paso 5: Probar que funciona (¡con cuidado!)
Esta es la parte delicada. Para asegurarte de que la configuración funciona, puedes intentar conectarte por SSH con una contraseña incorrecta varias veces.
- Abre una nueva terminal e intenta conectarte por SSH a tu servidor.
- Escribe una contraseña incorrecta, y repite hasta superar el número de
maxretry(en nuestro caso, 3 para SSH). - Al cuarto intento, la conexión debería ser rechazada o tardar muchísimo en responder, y verás un mensaje de "Connection refused" o "Connection timed out".
Si esto ocurre, ¡enhorabuena! Fail2ban está funcionando correctamente en tu DirectAdmin.
[WARNING]
¡No hagas esta prueba desde la misma IP desde la que te conectas habitualmente si no quieres quedarte fuera! Hazlo desde una IP diferente (por ejemplo, desde el móvil con datos) o simplemente confía en la configuración. Si te bloqueas, tendrás que esperar a que pase elbantimeo entrar a través del panel de tu proveedor para desbloquearte.
Paso 6: Comandos útiles para gestionar Fail2ban
Aquí tienes una chuleta con los comandos más útiles para tu día a día:
-
Ver todas las cárceles activas:
fail2ban-client status -
Ver IPs bloqueadas en un servicio (ej. SSH):
fail2ban-client status sshd -
Desbloquear manualmente una IP (ej. 1.2.3.4) de una cárcel (ej. sshd):
fail2ban-client set sshd unbanip 1.2.3.4 -
Desbloquear una IP de todas las cárceles:
fail2ban-client unban 1.2.3.4 -
Ver el log de Fail2ban:
tail -f /var/log/fail2ban.log
Preguntas Frecuentes (FAQ) sobre Fail2ban y DirectAdmin
¿Fail2ban es compatible con el firewall de DirectAdmin?
Sí, perfectamente. Fail2ban funciona a nivel de sistema operativo (manipulando iptables o firewalld), mientras que el firewall de DirectAdmin (CSF o APF) también trabaja a ese nivel. No hay conflicto, de hecho, se complementan. Fail2ban es una capa extra de seguridad que responde a patrones de ataque.
¿Qué hago si bloqueo mi propia IP por error?
Tranquilo, es un error común. Tienes dos opciones:
- Esperar: El bloqueo expira solo cuando pasa el
bantime. - Acceder por otra vía: Conéctate a tu servidor a través del panel de control de tu proveedor de hosting (VPS) y ejecuta el comando
fail2ban-client unban TU_IPpara desbloquearte al instante.
¿Puedo aumentar el tiempo de bloqueo?
¡Claro! Solo tienes que cambiar el valor de bantime en el archivo jail.local. Por ejemplo, bantime = 86400 lo bloqueará durante 24 horas. Para bloqueos permanentes, puedes usar valores muy altos como bantime = 31536000 (1 año).
¿Fail2ban protege contra ataques DDoS?
No. Fail2ban está diseñado para ataques de fuerza bruta (muchos intentos de login). Un ataque DDoS (Denegación de Servicio) consiste en saturar el servidor con millones de peticiones legítimas, y Fail2ban no es la herramienta adecuada para eso. Para DDoS necesitas soluciones específicas a nivel de red o CDN.
¿Puedo usar Fail2ban en Syspanel (HestiaCP)?
Sí, la configuración es muy similar. La diferencia principal está en las rutas de los logs y en el puerto del panel. Recuerda que Syspanel (HestiaCP) usa el puerto 2106 por defecto. Deberás ajustar la sección [directadmin] (o la equivalente) para que apunte al puerto 2106 y a la ruta de logs de Syspanel, que suele ser /var/log/syspanel/ o similar.
¿Qué pasa si no veo ningún log en /var/log/directadmin/?
Es posible que la ruta de logs de tu DirectAdmin sea diferente. Puedes comprobarlo en el archivo directadmin.conf (normalmente en /usr/local/directadmin/conf/). Busca la línea que indique la ruta de los logs. Otra opción es usar el comando find / -name "error.log" 2>/dev/null para localizarlo.
Conclusión y recomendaciones finales
Configurar fail2ban en DirectAdmin es una de las mejores inversiones de tiempo que puedes hacer para la seguridad de tu servidor. Es una herramienta robusta, gratuita y que te dará una tranquilidad increíble. Ya no tendrás que estar pendiente de los logs para bloquear IP en DirectAdmin manualmente, porque el sistema lo hará por ti.
Resumen de lo que has aprendido hoy:
- Instalar fail2ban en tu sistema operativo.
- Configurar los parámetros globales (tiempos, intentos).
- Activar las "cárceles" para los servicios críticos de DirectAdmin (panel, SSH, correo, FTP).
- Gestionar los bloqueos y desbloqueos de IPs.
Mi recomendación final es que empieces con una configuración conservadora (como la que te he dado) y, una vez que veas que todo funciona, ajustes los tiempos a tu gusto. Observa los logs de fail2ban durante unos días para entender qué tipo de ataques recibes y así afinar tu estrategia.
Si tienes alguna duda o tu caso es muy específico, no dudes en consultar la documentación oficial de Fail2ban o preguntar en foros especializados. ¡Tu servidor te lo agradecerá!
