Guía para instalar y configurar Fail2ban en DirectAdmin
¿Qué es Fail2ban y por qué lo necesitas en tu servidor DirectAdmin?
Si tienes un servidor con DirectAdmin, seguramente te preocupa la seguridad. Y con razón: los ataques de fuerza bruta son uno de los métodos más comunes que usan los ciberdelincuentes para intentar acceder a tu servidor. Estos ataques consisten en probar miles de combinaciones de usuario y contraseña por minuto, automatizados con scripts, hasta dar con la clave correcta. Es como si alguien intentara abrir la puerta de tu casa probando todas las llaves posibles sin descanso.
Fail2ban es una herramienta de seguridad que actúa como un portero automático inteligente. Su función es monitorear los registros (logs) de tu servidor para detectar patrones sospechosos. Cuando detecta múltiples intentos fallidos de conexión desde una misma dirección IP, la bloquea automáticamente durante un tiempo determinado. Es decir, si alguien intenta entrar por la fuerza, Fail2ban le cierra la puerta en la cara después de unos pocos intentos fallidos.
Para un servidor con DirectAdmin, Fail2ban es prácticamente imprescindible. DirectAdmin gestiona múltiples servicios como SSH, FTP, correo electrónico y el panel de control web, y todos ellos son objetivos potenciales de ataques de fuerza bruta. Configurar Fail2ban te dará una capa extra de protección que funciona de forma autónoma, sin que tengas que estar pendiente de nada.
[INFO] Este artículo está pensado para usuarios con acceso de root o administrador al servidor. Si no tienes acceso de administrador, necesitarás pedir ayuda a tu proveedor de hosting para realizar esta instalación.
Requisitos previos antes de empezar
Antes de comenzar con la instalación, asegúrate de cumplir con los siguientes requisitos:
- Tener acceso root al servidor a través de SSH.
- Un servidor con DirectAdmin instalado y funcionando.
- Sistema operativo basado en Linux (CentOS, AlmaLinux, Ubuntu, Debian, etc.).
- Conocimientos básicos de comandos de terminal (navegar directorios, editar archivos).
Si no sabes cómo conectarte por SSH, puedes usar programas como PuTTY en Windows o la terminal nativa de macOS y Linux. La conexión se realiza normalmente al puerto 22.
[TIP] Antes de instalar cualquier cosa, es recomendable hacer una copia de seguridad completa del servidor. Aunque Fail2ban es seguro, siempre es mejor prevenir.
Instalación de Fail2ban en DirectAdmin
Paso 1: Actualizar el sistema
Lo primero que debemos hacer es asegurarnos de que el sistema operativo esté actualizado. Conéctate por SSH a tu servidor y ejecuta los siguientes comandos según tu distribución:
Para CentOS, AlmaLinux o Rocky Linux:
yum update -y
Para Ubuntu o Debian:
apt update && apt upgrade -y
Este paso es importante porque los repositorios de software deben estar actualizados para que la instalación sea limpia.
Paso 2: Instalar Fail2ban
Una vez actualizado el sistema, procedemos a instalar Fail2ban. El comando varía según la distribución:
Para CentOS, AlmaLinux o Rocky Linux:
yum install fail2ban -y
Para Ubuntu o Debian:
apt install fail2ban -y
El proceso de instalación tomará unos segundos. Al finalizar, tendrás Fail2ban instalado pero aún no configurado ni activo.
Paso 3: Activar el servicio
Ahora necesitamos habilitar y arrancar el servicio Fail2ban para que se inicie automáticamente al arrancar el servidor:
systemctl enable fail2ban
systemctl start fail2ban
Puedes verificar que el servicio está corriendo con:
systemctl status fail2ban
Deberías ver un mensaje que indica que el servicio está activo y funcionando.
Configuración básica de Fail2ban para DirectAdmin
La configuración de Fail2ban se realiza mediante archivos de configuración. El archivo principal es jail.conf, pero nunca debemos editarlo directamente. En su lugar, crearemos un archivo local llamado jail.local que sobrescribirá la configuración por defecto.
Paso 1: Crear el archivo jail.local
Navega al directorio de configuración de Fail2ban:
cd /etc/fail2ban
Ahora crea el archivo jail.local con un editor de texto. Puedes usar nano, vim o cualquier editor que prefieras:
nano jail.local
Dentro de este archivo, escribiremos la configuración básica. Te recomiendo empezar con esta configuración mínima:
[DEFAULT]
bantime = 3600
findtime = 600
maxretry = 3
ignoreip = 127.0.0.1/8 ::1
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
[directadmin]
enabled = true
logpath = /var/log/directadmin/error.log
maxretry = 5
bantime = 1800
Vamos a explicar qué significa cada parámetro:
- bantime: Tiempo en segundos que una IP quedará bloqueada.
3600equivale a 1 hora. - findtime: Ventana de tiempo en segundos en la que se contabilizan los intentos fallidos.
600equivale a 10 minutos. - maxretry: Número máximo de intentos fallidos antes de ser bloqueado.
- ignoreip: IPs que nunca serán bloqueadas. Siempre incluye localhost.
- [sshd]: Configuración específica para el servicio SSH.
- [directadmin]: Configuración específica para el panel de DirectAdmin.
[WARNING] No bajes demasiado el
maxretry(a 2 o menos) porque podrías bloquearte a ti mismo por errores de escritura de contraseña. Un valor de 3 es razonable para SSH y 5 para DirectAdmin.
Paso 2: Configurar el jail específico para DirectAdmin
DirectAdmin guarda sus logs en una ubicación específica. Para que Fail2ban funcione correctamente con DirectAdmin, necesitamos indicarle la ruta exacta de los logs. La configuración anterior ya lo hace, pero vamos a profundizar un poco más.
DirectAdmin registra intentos de acceso fallidos en /var/log/directadmin/error.log. Sin embargo, también es útil monitorizar el log de autenticación de correo y FTP.
Puedes añadir más jails para cubrir otros servicios. Por ejemplo:
[proftpd]
enabled = true
logpath = /var/log/proftpd/auth.log
maxretry = 5
[dovecot]
enabled = true
logpath = /var/log/dovecot/auth.log
maxretry = 5
[exim]
enabled = true
logpath = /var/log/exim/main.log
maxretry = 5
Estos jails protegen el servidor FTP, el servidor de correo (POP3/IMAP) y el servicio de envío de correo respectivamente.
Paso 3: Guardar y aplicar la configuración
Una vez hayas editado el archivo, guárdalo con Ctrl+O y sal con Ctrl+X (si usas nano). Ahora reinicia Fail2ban para que aplique la nueva configuración:
systemctl restart fail2ban
Verifica que todo funciona correctamente:
fail2ban-client status
Este comando te mostrará una lista de las "jails" (prisiones) activas. Deberías ver sshd, directadmin y cualquier otro que hayas configurado.
Verificación y monitoreo de Fail2ban
Ver el estado de las jails
Para ver el estado detallado de una jail concreta, por ejemplo la de DirectAdmin:
fail2ban-client status directadmin
Esto te mostrará información como:
- Número de IPs actualmente bloqueadas.
- Lista de IPs bloqueadas.
- Estadísticas de intentos fallidos.
Desbloquear una IP manualmente
Es posible que en algún momento necesites desbloquear una IP manualmente. Esto puede ocurrir si te has bloqueado a ti mismo por error o si un cliente legítimo ha sido bloqueado injustamente.
Para desbloquear una IP:
fail2ban-client set directadmin unbanip 123.456.789.0
Sustituye 123.456.789.0 por la IP real que quieres desbloquear.
[TIP] Si te bloqueas a ti mismo, puedes desbloquear tu IP con el comando anterior. Recuerda que la IP de tu conexión local puedes consultarla en sitios web como "¿cuál es mi IP?".
Monitorear los logs de Fail2ban
Fail2ban tiene su propio archivo de log donde registra todas sus acciones:
tail -f /var/log/fail2ban.log
Este comando te mostrará en tiempo real lo que Fail2ban está haciendo. Verás líneas como:
2025-01-15 10:23:45,789 fail2ban.actions [12345]: NOTICE [sshd] Ban 203.0.113.5
2025-01-15 10:23:45,789 fail2ban.actions [12345]: NOTICE [sshd] Unban 203.0.113.5
Configuración avanzada: whitelist y ajustes personalizados
Añadir IPs a la lista blanca
Si tienes IPs fijas que nunca deben ser bloqueadas (como la IP de tu oficina o la de un cliente importante), puedes añadirlas a la lista blanca. Edita el archivo jail.local y modifica la línea ignoreip:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 203.0.113.10 198.51.100.20
Sustituye las IPs de ejemplo por las tuyas. Sepáralas con espacios. Después de editar, reinicia Fail2ban.
Notificaciones por correo electrónico
Fail2ban puede enviarte un correo electrónico cada vez que bloquee una IP. Para ello, añade a tu configuración:
[DEFAULT]
destemail = tu@correo.com
sendername = Fail2ban
mta = sendmail
action = %(action_mwl)s
Esta configuración enviará un correo a la dirección indicada con los detalles del bloqueo, incluyendo los logs relevantes.
[INFO] Para que las notificaciones funcionen necesitas tener un servicio de correo funcionando en el servidor o acceso a un servidor SMTP externo.
Preguntas frecuentes (FAQ)
¿Fail2ban afectará al rendimiento de mi servidor?
No. Fail2ban es muy ligero y consume muy pocos recursos. Su impacto en el rendimiento es prácticamente insignificante, incluso en servidores con muchos servicios activos.
¿Puedo usar Fail2ban con otros paneles de control?
Sí, Fail2ban funciona con cualquier sistema. Si usas Syspanel (antes conocido como HestiaCP), el proceso de instalación es similar. En ese caso, recuerda que el acceso a Syspanel se realiza a través del puerto 2106. Solo tendrás que ajustar las rutas de los logs según la estructura de directorios de Syspanel.
¿Qué pasa si Fail2ban bloquea una IP legítima?
Puede ocurrir en casos de redes corporativas donde muchos usuarios comparten la misma IP de salida. Para evitarlo, añade esas IPs a la lista blanca (ignoreip). También puedes aumentar el maxretry para que sean necesarios más intentos fallidos antes de bloquear.
¿Cómo sé si Fail2ban está funcionando correctamente?
Puedes comprobarlo de dos formas: revisando el estado con fail2ban-client status y viendo si las jails están activas, o intentando hacer varios intentos fallidos de conexión SSH desde otra máquina y verificar que tu IP es bloqueada.
¿Cada cuánto tiempo debo revisar la configuración?
Es recomendable revisar la configuración mensualmente para asegurarte de que sigue siendo adecuada. También deberías revisarla después de actualizar DirectAdmin o el sistema operativo, ya que las rutas de los logs pueden cambiar.
¿Fail2ban protege contra ataques DDoS?
No. Fail2ban está diseñado para ataques de fuerza bruta, no para DDoS. Para protección DDoS necesitarías soluciones específicas como Cloudflare o firewalls de red.
Conclusión y buenas prácticas
Instalar Fail2ban en DirectAdmin es una de las mejores decisiones de seguridad que puedes tomar para tu servidor. Es gratuito, fácil de instalar y configurar, y proporciona una protección automática contra los ataques de fuerza bruta que son tan comunes en internet.
Recuerda estas buenas prácticas:
- Mantén Fail2ban actualizado: Actualiza el sistema regularmente para tener la última versión con las correcciones de seguridad.
- Revisa los logs periódicamente: Aunque Fail2ban es automático, es bueno revisar sus logs de vez en cuando para detectar patrones de ataque.
- No bloquees tu propia IP: Siempre ten cuidado con los valores de
maxretryybantimepara no quedarte fuera de tu propio servidor. - Combina Fail2ban con otras medidas: Usa contraseñas fuertes, autenticación de dos factores y mantén todo el software actualizado.
Con esta guía, ya tienes todo lo necesario para proteger tu servidor con DirectAdmin contra los ataques de fuerza bruta. La instalación te llevará menos de 15 minutos y la tranquilidad que te dará no tiene precio.
[TIP] Si tienes más de un servidor, considera automatizar la instalación de Fail2ban con scripts de configuración para que todos tengan la misma política de seguridad.
Ahora que tu servidor está protegido con Fail2ban, puedes dormir tranquilo sabiendo que los atacantes tendrán que buscar otro objetivo más fácil.
