Cómo configurar fail2ban en DirectAdmin
¿Qué es fail2ban y por qué lo necesitas en tu servidor?
Si tienes un servidor con DirectAdmin, seguramente ya sabes que es un panel de control potente y lleno de funciones. Sin embargo, al estar expuesto a Internet, tu servidor es un objetivo constante para bots y atacantes que intentan adivinar contraseñas, explotar vulnerabilidades o simplemente causar problemas.
Aquí es donde entra fail2ban, una herramienta de seguridad que actúa como un guardián inteligente. Su función principal es bloquear IPs que muestren comportamientos sospechosos, como múltiples intentos fallidos de inicio de sesión. En lugar de que tú tengas que revisar los registros manualmente, fail2ban monitorea los logs del sistema y aplica reglas de firewall automáticamente.
La integración de DirectAdmin con fail2ban es casi nativa. El panel ya incluye configuraciones predefinidas para servicios como SSH, FTP, Exim (correo), Dovecot y Apache. Esto significa que no necesitas ser un experto en seguridad para activar una protección automática efectiva.
En este artículo, te guiaré paso a paso para que configures fail2ban en DirectAdmin, desde la instalación hasta la personalización de reglas. No importa si es tu primera vez, lo haremos de forma clara y sencilla.
Requisitos previos
Antes de empezar, asegúrate de tener lo siguiente:
- Acceso root a tu servidor (por SSH).
- Un servidor con DirectAdmin instalado (versión 1.64 o superior es recomendable).
- Conocimiento básico de comandos de Linux (no te preocupes, explicaré cada paso).
[WARNING] Si tu servidor está gestionado por una empresa de hosting, es posible que no tengas acceso root. En ese caso, contacta con tu proveedor para que realice la configuración o te dé los permisos necesarios.
Paso 1: Instalar fail2ban en tu servidor
La mayoría de los sistemas operativos compatibles con DirectAdmin (CentOS, AlmaLinux, Rocky Linux, Ubuntu, Debian) incluyen fail2ban en sus repositorios. La instalación es muy sencilla.
En sistemas basados en Red Hat (CentOS, AlmaLinux, Rocky)
Conéctate por SSH y ejecuta:
yum install fail2ban -y
En sistemas basados en Debian (Ubuntu, Debian)
apt-get update
apt-get install fail2ban -y
Una vez finalizada la instalación, verifica que se haya instalado correctamente:
fail2ban-client --version
Deberías ver algo como:
Fail2Ban v1.0.2
[TIP] Si tu servidor usa un firewall como CSF (ConfigServer Security & Firewall), es posible que ya incluya fail2ban. En ese caso, puedes saltarte este paso y continuar con la configuración.
Paso 2: Configuración inicial de fail2ban
La configuración principal de fail2ban se encuentra en el archivo /etc/fail2ban/jail.conf. Sin embargo, no es recomendable editarlo directamente, ya que las actualizaciones del sistema podrían sobrescribir tus cambios.
La mejor práctica es crear un archivo de configuración local llamado jail.local. Este archivo tiene prioridad sobre el jail.conf.
Crear el archivo jail.local
nano /etc/fail2ban/jail.local
Dentro del archivo, vamos a definir la configuración base. Aquí tienes un ejemplo completo:
[DEFAULT]
# Ignorar la propia IP del servidor y las IPs internas
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
# Tiempo de bloqueo en segundos (1 hora)
bantime = 3600
# Ventana de tiempo en la que se cuentan los intentos (10 minutos)
findtime = 600
# Número máximo de intentos antes de bloquear
maxretry = 5
# Acción por defecto: bloquear con iptables
banaction = iptables-multiport
# Notificaciones por correo (opcional)
destemail = admin@tudominio.com
sendername = Fail2ban
mta = sendmail
# Activar el servicio de correo para notificaciones
action = %(action_mwl)s
Explicación de los parámetros
- ignoreip: Lista de IPs que nunca serán bloqueadas. Siempre incluye
127.0.0.1y tu IP de administración. - bantime: Duración del bloqueo. Puedes usar
mpara minutos,hpara horas,dpara días. - findtime: Período de tiempo en el que se cuentan los intentos fallidos.
- maxretry: Número de intentos fallidos permitidos antes de aplicar el bloqueo.
- banaction: El método de bloqueo.
iptables-multiportes el estándar y funciona bien en la mayoría de los casos.
[INFO] Si no quieres recibir correos electrónicos, puedes omitir las líneas
destemail,sendername,mtayaction. Simplemente usaaction = %(action_)spara que solo bloquee sin notificar.
Guarda el archivo con Ctrl+O y luego Ctrl+X para salir de nano.
Paso 3: Configurar las cárceles (jails) para DirectAdmin
DirectAdmin ya trae integradas varias cárceles predefinidas en /etc/fail2ban/jail.d/. Sin embargo, es posible que necesites activarlas o ajustarlas.
Ver las cárceles disponibles
ls /etc/fail2ban/jail.d/
Verás archivos como directadmin.conf, exim.conf, dovecot.conf, etc.
Activar la cárcel de DirectAdmin
Para asegurarnos de que la cárcel de DirectAdmin esté activa, edita el archivo:
nano /etc/fail2ban/jail.d/directadmin.conf
Debería verse similar a esto:
[directadmin]
enabled = true
logpath = /var/log/directadmin/error.log
maxretry = 5
bantime = 3600
Si enabled está en false, cámbialo a true.
Otras cárceles importantes
- SSH: Protege el acceso por SSH. Es una de las más críticas.
- Exim: Protege el servidor de correo saliente.
- Dovecot: Protege la autenticación POP3/IMAP.
- Apache: Protege contra ataques de fuerza bruta a páginas web.
Puedes activar o desactivar cada una editando sus archivos correspondientes. Por ejemplo, para SSH:
nano /etc/fail2ban/jail.d/sshd.conf
[sshd]
enabled = true
Paso 4: Configurar el firewall (iptables)
fail2ban utiliza iptables para bloquear las IPs. Necesitamos asegurarnos de que el servicio de iptables esté activo.
En CentOS/AlmaLinux/Rocky
systemctl enable iptables
systemctl start iptables
En Ubuntu/Debian
apt-get install iptables-persistent -y
systemctl enable netfilter-persistent
systemctl start netfilter-persistent
[WARNING] Si tu servidor usa un firewall diferente (como CSF), fail2ban puede conflictuar. En ese caso, consulta la documentación de tu firewall para integrar fail2ban correctamente.
Paso 5: Iniciar y verificar fail2ban
Una vez que hayas configurado todo, es hora de iniciar el servicio.
Iniciar fail2ban
systemctl start fail2ban
systemctl enable fail2ban
Verificar el estado
systemctl status fail2ban
Deberías ver un mensaje que indica que el servicio está activo y corriendo.
Ver las cárceles activas
fail2ban-client status
Esto te mostrará una lista de las cárceles que están activas. Por ejemplo:
Status
|- Number of jail: 5
`- Jail list: directadmin, sshd, exim, dovecot, apache
Ver detalles de una cárcel específica
Para ver las IPs bloqueadas en una cárcel concreta, usa:
fail2ban-client status sshd
Esto te mostrará estadísticas como el número de IPs bloqueadas y los intentos fallidos.
Paso 6: Probar que fail2ban funciona correctamente
Es importante verificar que fail2ban realmente está bloqueando IPs. Una forma segura de hacerlo es intentar conectarte por SSH con una contraseña incorrecta varias veces.
Simular un ataque
ssh usuario@tuserver.com
Introduce una contraseña incorrecta 6 veces (recuerda que maxretry está configurado en 5). Después del sexto intento, fail2ban debería bloquear tu IP.
Verificar el bloqueo
fail2ban-client status sshd
Verás que tu IP aparece en la lista de bloqueados. Para desbloquearla manualmente:
fail2ban-client set sshd unbanip TU_IP
[TIP] Si te bloqueas a ti mismo, no te preocupes. Siempre puedes conectarte desde otra IP o usar la consola del proveedor para desbloquearte.
Paso 7: Personalizar reglas avanzadas
Una vez que la configuración básica funciona, puedes personalizar las reglas para adaptarlas a tus necesidades.
Ajustar tiempos de bloqueo
Si prefieres un bloqueo más severo, puedes aumentar el bantime. Por ejemplo, para bloquear durante 24 horas:
[DEFAULT]
bantime = 86400
Bloqueo permanente
Para bloquear permanentemente una IP, puedes usar:
fail2ban-client set sshd banip IP_A_BLOQUEAR
Whitelist de IPs confiables
Si tienes IPs fijas de oficina o de tu casa, puedes añadirlas a ignoreip en jail.local:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24 TU_IP_FIJA
Crear una cárcel personalizada
Por ejemplo, para proteger un panel personalizado, puedes crear un archivo nuevo en /etc/fail2ban/jail.d/mi-panel.conf:
[mi-panel]
enabled = true
port = http,https
logpath = /var/log/mi-panel/access.log
maxretry = 3
bantime = 7200
Solución de problemas comunes
fail2ban no se inicia
Si el servicio falla al iniciar, revisa los logs:
journalctl -u fail2ban -n 50
Las cárceles no se activan
Asegúrate de que los archivos de configuración en /etc/fail2ban/jail.d/ tengan los permisos correctos:
chmod 644 /etc/fail2ban/jail.d/*.conf
chown root:root /etc/fail2ban/jail.d/*.conf
Las IPs no se bloquean
Verifica que iptables esté funcionando:
iptables -L -n | grep fail2ban
Si no ves ninguna regla, revisa la configuración de banaction.
Preguntas frecuentes (FAQ)
¿fail2ban consume muchos recursos?
No. fail2ban es muy ligero. Solo analiza los archivos de log en tiempo real y ejecuta acciones cuando detecta patrones sospechosos. En la mayoría de los servidores, el consumo de CPU y memoria es mínimo.
¿Puedo usar fail2ban con otros paneles de control?
Sí, fail2ban es compatible con cualquier panel. Si usas Syspanel (anteriormente conocido como HestiaCP), la configuración es similar. La principal diferencia es que en Syspanel, el puerto de acceso al panel es el 2106, y deberás crear reglas personalizadas para ese puerto en lugar de las de DirectAdmin.
¿Qué hago si bloqueo mi propia IP?
Puedes desbloquearte tú mismo con el comando:
fail2ban-client set sshd unbanip TU_IP
O reiniciar fail2ban:
systemctl restart fail2ban
¿Cómo sé si una IP está bloqueada?
Usa el comando:
fail2ban-client status
Y luego:
fail2ban-client status NOMBRE_CARCEL
¿Puedo recibir notificaciones por correo?
Sí. En el archivo jail.local, añade las líneas de correo y cambia la acción a %(action_mwl)s. Asegúrate de tener un servidor de correo funcionando en tu servidor.
Conclusión
Configurar fail2ban en DirectAdmin es una de las mejores decisiones que puedes tomar para mejorar la seguridad de tu servidor. Con unos pocos pasos, tendrás una protección automática contra ataques de fuerza bruta y otros comportamientos maliciosos.
Recuerda que la seguridad es un proceso continuo. Revisa periódicamente los logs de fail2ban y ajusta las reglas según sea necesario. No te confíes solo con esta herramienta; combínala con otras buenas prácticas como:
- Mantener el sistema actualizado.
- Usar contraseñas fuertes.
- Configurar autenticación SSH con claves.
- Limitar el acceso al panel de administración.
Con fail2ban activo, tu servidor estará mucho más protegido, y tú podrás dormir tranquilo sabiendo que los atacantes no tendrán fácil acceso a tus sistemas.
[TIP] Si tienes dudas o encuentras algún error, no dudes en consultar la documentación oficial de DirectAdmin o de fail2ban. La comunidad es muy activa y siempre hay alguien dispuesto a ayudar.
¡Espero que esta guía te haya sido útil! Ahora ya sabes cómo configurar fail2ban en DirectAdmin y mantener tu servidor a salvo.
