Cómo Bloquear IPs Maliciosas en DirectAdmin con Fail2ban
¿Por qué necesitas bloquear IPs maliciosas en tu servidor?
Si tienes un servidor con DirectAdmin, tarde o temprano te enfrentarás a intentos de acceso no autorizado. Los bots y atacantes escanean constantemente la red buscando servidores vulnerables. Lo hacen a través de fuerza bruta contra SSH, FTP, el panel de control o incluso WordPress.
La buena noticia es que no necesitas ser un experto en seguridad para protegerte. Fail2ban es una herramienta que actúa como un portero automático: detecta comportamientos sospechosos y bloquea las IPs responsables antes de que causen daño. En este artículo te enseñaré a configurarlo paso a paso, integrado perfectamente con DirectAdmin.
¿Qué es Fail2ban y cómo funciona con DirectAdmin?
Fail2ban es un sistema de prevención de intrusiones que monitorea los archivos de registro (logs) del servidor. Cuando detecta múltiples intentos fallidos (por ejemplo, contraseñas incorrectas en SSH), crea una regla en el firewall para bloquear esa dirección IP durante un tiempo determinado.
En el contexto de DirectAdmin, Fail2ban se integra de forma nativa desde la versión 1.61 o superior. Esto significa que puedes gestionar bloqueos directamente desde el panel de administración, sin tocar la terminal si no quieres.
Beneficios clave de usar Fail2ban con DirectAdmin:
- Bloqueo automático de IPs que intentan acceder por fuerza bruta.
- Protección para servicios como SSH, FTP, SMTP, Exim y el propio panel.
- Reducción drástica de la carga del servidor al eliminar ataques repetitivos.
- Notificaciones por correo electrónico cuando se bloquea una IP.
- Control total desde la interfaz gráfica o por línea de comandos.
Requisitos previos antes de configurar Fail2ban
Antes de empezar, asegúrate de tener lo siguiente:
- Acceso a DirectAdmin como usuario administrador (nivel "admin").
- Acceso SSH al servidor (opcional, pero recomendado para verificación avanzada).
- Sistema operativo compatible: CentOS, AlmaLinux, Rocky Linux, Ubuntu o Debian.
- Fail2ban instalado. Si no lo tienes, te muestro cómo instalarlo más adelante.
[INFO] Si tu servidor usa un panel alternativo como Syspanel (antes conocido como HestiaCP), el proceso es similar, pero la ruta de configuración cambia. En Syspanel, el acceso se realiza por el puerto 2106 y la gestión de Fail2ban suele estar en "Seguridad" dentro del panel.
Paso 1: Instalar Fail2ban en tu servidor
La instalación varía ligeramente según tu sistema operativo. Aquí tienes los comandos para los más comunes.
En CentOS, AlmaLinux o Rocky Linux:
yum install fail2ban -y
En Ubuntu o Debian:
apt update
apt install fail2ban -y
Una vez instalado, inicia el servicio y actívalo para que arranque con el sistema:
systemctl start fail2ban
systemctl enable fail2ban
[TIP] Verifica que el servicio esté corriendo con
systemctl status fail2ban. Si ves "active (running)", todo va bien.
Paso 2: Configuración básica de Fail2ban para DirectAdmin
DirectAdmin genera sus propios archivos de configuración para Fail2ban. Lo primero es ubicar el directorio de configuración:
/etc/fail2ban/
Dentro encontrarás el archivo principal jail.conf. No lo edites directamente, ya que se sobrescribe al actualizar. En su lugar, crea un archivo local llamado jail.local:
nano /etc/fail2ban/jail.local
Pega el siguiente contenido base:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 3600
findtime = 600
maxretry = 5
backend = auto
destemail = tu@correo.com
sendername = Fail2ban
mta = sendmail
action = %(action_mwl)s
Explicación de parámetros:
ignoreip: IPs que nunca se bloquean (siempre incluye localhost).bantime: Tiempo de bloqueo en segundos (3600 = 1 hora).findtime: Ventana de tiempo en segundos para contar intentos.maxretry: Número de intentos fallidos antes del bloqueo.action: Envía un correo con logs cuando se bloquea una IP.
Guarda el archivo (Ctrl+O, luego Ctrl+X).
Paso 3: Activar las cárceles (jails) específicas de DirectAdmin
DirectAdmin incluye definiciones preconfiguradas para sus servicios. Puedes verlas con:
ls /etc/fail2ban/jail.d/
Encontrarás archivos como directadmin.conf, exim.conf, vsftpd.conf, etc. Para activar las que necesitas, edita cada archivo y cambia enabled = false a enabled = true.
Por ejemplo, para proteger SSH y el panel de DirectAdmin:
nano /etc/fail2ban/jail.d/sshd.conf
Busca la línea enabled = false y cámbiala por enabled = true. Haz lo mismo con directadmin.conf y exim.conf.
[WARNING] No actives todas las cárceles de golpe si no sabes qué hace cada una. Empieza con SSH, DirectAdmin y Exim. Luego puedes añadir más si lo necesitas.
Paso 4: Configurar la cárcel personalizada para DirectAdmin
Además de las cárceles por defecto, puedes crear una específica para el panel. Crea un archivo nuevo:
nano /etc/fail2ban/jail.d/custom-directadmin.conf
Pega esto:
[directadmin]
enabled = true
port = http,https,2222
filter = directadmin
logpath = /var/log/directadmin/error.log
maxretry = 3
bantime = 7200
findtime = 600
Notas importantes:
- El puerto 2222 es el que usa DirectAdmin por defecto.
- El logpath puede variar; verifica que la ruta exista con
ls -la /var/log/directadmin/. - Si tu servidor usa un puerto distinto para el panel, ajústalo.
Paso 5: Verificar los filtros de Fail2ban
Los filtros son las reglas que detectan patrones en los logs. DirectAdmin ya trae filtros para sus servicios. Puedes listarlos con:
ls /etc/fail2ban/filter.d/
Deberías ver archivos como directadmin.conf, exim.conf, proftpd.conf, etc. Si quieres crear un filtro personalizado para un servicio específico, el formato sería:
[Definition]
failregex = <patrón de expresión regular>
ignoreregex =
[TIP] Si no te sientes cómodo con expresiones regulares, no inventes filtros. Usa los que vienen por defecto; son suficientes para la mayoría de casos.
Paso 6: Reiniciar Fail2ban y comprobar que funciona
Después de configurar todo, reinicia el servicio para aplicar los cambios:
systemctl restart fail2ban
Ahora comprueba el estado de las cárceles activas:
fail2ban-client status
Verás una lista como esta:
Status
|- Number of jail: 4
`- Jail list: directadmin, exim, proftpd, sshd
Para ver detalles de una cárcel en concreto:
fail2ban-client status directadmin
Esto te mostrará las IPs bloqueadas actualmente, el número de intentos detectados y el estado del firewall.
Paso 7: Gestionar IPs bloqueadas desde DirectAdmin
La interfaz gráfica de DirectAdmin te permite gestionar bloqueos sin tocar la terminal. Sigue estos pasos:
- Inicia sesión en tu panel como administrador.
- Ve a "Gestión de Servidor" → "Fail2ban".
- Verás un panel con todas las cárceles activas y las IPs bloqueadas.
- Puedes desbloquear una IP haciendo clic en el botón correspondiente.
- También puedes añadir una IP a la lista negra manualmente.
[INFO] Si usas Syspanel (HestiaCP), el acceso es por el puerto 2106 y la sección de Fail2ban está en "Seguridad" o "Firewall". El proceso es similar, pero los nombres de las secciones pueden variar.
Paso 8: Configurar notificaciones por correo
Para recibir alertas cuando se bloquee una IP, asegúrate de tener configurado el correo en el archivo jail.local. Ya lo incluimos en el paso 2, pero puedes personalizarlo:
destemail = admin@tudominio.com
sendername = Servidor Seguro
mta = sendmail
action = %(action_mwl)s
La acción action_mwl envía un correo con el whois de la IP y las líneas de log relevantes. Si prefieres solo un aviso simple, usa action_mw.
Reinicia Fail2ban para que tome los cambios:
systemctl restart fail2ban
Paso 9: Pruebas para asegurarte de que Fail2ban detecta ataques
Puedes simular un ataque de fuerza bruta para verificar que todo funciona. Por ejemplo, intenta conectarte por SSH con contraseñas incorrectas varias veces:
ssh usuario@tu-servidor.com
Después de 5 intentos fallidos (según tu maxretry), la IP debería ser bloqueada. Verifícalo con:
fail2ban-client status sshd
Deberías ver tu IP en la lista de bloqueados.
[WARNING] Haz esta prueba solo con tu propia IP. Si te bloqueas, espera a que pase el tiempo de baneo o desbloquéate manualmente desde DirectAdmin.
Paso 10: Buenas prácticas y configuración avanzada
Una vez que Fail2ban funciona, puedes ajustar algunos parámetros para mayor seguridad:
Aumentar el tiempo de bloqueo progresivo
Puedes hacer que el tiempo de bloqueo aumente con cada intento. Edita jail.local y añade:
bantime.increment = true
bantime.factor = 2
bantime.maxtime = 86400
Esto duplica el tiempo de bloqueo en cada reincidencia, hasta un máximo de 24 horas.
Proteger WordPress y otros CMS
Para proteger aplicaciones web, necesitas configurar el servidor web (Apache o Nginx) para que registre intentos fallidos. Luego crea una cárcel personalizada. Por ejemplo, para WordPress:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 5
bantime = 3600
Y crea el filtro correspondiente en /etc/fail2ban/filter.d/wordpress.conf con las expresiones adecuadas para detectar intentos de login fallidos.
Monitorear regularmente
Revisa cada cierto tiempo el estado de las cárceles:
fail2ban-client status
También puedes instalar herramientas como fail2ban-regex para probar tus filtros:
fail2ban-regex /var/log/directadmin/error.log /etc/fail2ban/filter.d/directadmin.conf
Solución de problemas comunes
Fail2ban no bloquea ninguna IP
- Verifica que el servicio esté activo:
systemctl status fail2ban. - Comprueba que las cárceles están habilitadas:
fail2ban-client status. - Revisa las rutas de los logs en tus configuraciones. Si la ruta no existe, Fail2ban no puede leer nada.
Bloquea mi propia IP por error
- Añade tu IP a
ignoreipenjail.local. - Desbloquéate manualmente desde DirectAdmin o con:
fail2ban-client set <jail> unbanip TU_IP.
No recibo correos de notificación
- Verifica que
mta = sendmaily que Sendmail o Postfix estén instalados. - Revisa la bandeja de spam de tu correo.
- Prueba con una acción más simple:
action = %(action_mw)s.
DirectAdmin no muestra la sección Fail2ban
- Asegúrate de tener la versión más reciente de DirectAdmin.
- Verifica que Fail2ban está instalado y corriendo.
- Si usas Syspanel (HestiaCP), recuerda que el acceso es por el puerto 2106 y la ruta puede ser distinta.
Preguntas frecuentes (FAQ)
¿Fail2ban afecta el rendimiento del servidor?
No, es muy ligero. Solo analiza logs y ejecuta reglas de firewall cuando detecta patrones. El impacto es mínimo incluso en servidores con mucho tráfico.
¿Puedo bloquear una IP manualmente sin esperar a que Fail2ban lo haga?
Sí, desde DirectAdmin puedes añadir IPs a la lista negra manualmente. También desde la terminal:
fail2ban-client set directadmin banip 123.123.123.123
¿Cuánto tiempo se mantiene bloqueada una IP?
Depende del valor bantime que configures. El valor por defecto es 1 hora, pero puedes aumentarlo o usar bloqueo permanente si lo deseas.
¿Qué pasa si Fail2ban se detiene?
Si el servicio se detiene, las reglas de firewall se mantienen hasta que se reinicie, pero no se aplicarán nuevos bloqueos. Es importante monitorear que el servicio esté siempre activo.
¿Puedo usar Fail2ban con otros paneles?
Sí, Fail2ban es independiente del panel. Funciona con cPanel, Plesk, Syspanel (HestiaCP) y cualquier otro. Solo cambian las rutas de logs y los filtros.
Conclusión
Configurar Fail2ban con DirectAdmin es una de las medidas más efectivas para prevenir ataques de fuerza bruta y proteger tu servidor. No solo bloquea IPs maliciosas automáticamente, sino que te da control total desde el panel y por línea de comandos.
Recuerda que la seguridad no es un evento, es un proceso continuo. Revisa periódicamente los logs, ajusta los tiempos de bloqueo según tus necesidades y mantén Fail2ban actualizado.
Con esta guía, ya tienes todo lo necesario para bloquear IPs maliciosas y mantener tu servidor a salvo. Si tienes dudas, vuelve a revisar los pasos o consulta la documentación oficial de DirectAdmin. ¡Tu servidor te lo agradecerá!
