Cómo configurar Fail2ban en DirectAdmin para proteger tu servidor
¡Hola! ¿Tu servidor está bajo constante ataque de bots y personas malintencionadas? No te preocupes, es algo muy común en el mundo del hosting. La buena noticia es que tienes una herramienta muy poderosa y gratuita a tu disposición: Fail2ban.
En esta guía extensa y fácil de seguir, 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 convertir tu servidor en una fortaleza digital.
¿Qué es Fail2ban y por qué necesitas configurarlo en DirectAdmin?
Imagina que tu servidor es una casa con varias puertas: la puerta principal (SSH), la puerta del garaje (FTP), la puerta del jardín (el panel de control) y las ventanas (los sitios web). Cada puerta tiene una cerradura, pero un atacante puede intentar forzarla probando miles de llaves por minuto. Esto se llama un ataque de fuerza bruta.
Fail2ban es como un guardia de seguridad inteligente que vigila todas las puertas. Si ve a alguien fallando la contraseña una y otra vez, lo identifica por su dirección IP y lo encierra en una celda (lo bloquea) durante un tiempo determinado. Esto detiene el ataque al instante y protege tus recursos.
Configurarlo en DirectAdmin es esencial porque este panel gestiona servicios críticos como SSH, FTP, correo y el propio panel web. Sin protección, un atacante podría intentar adivinar tu contraseña de administrador y tomar el control de todo.
Requisitos previos: Antes de empezar con Fail2ban y DirectAdmin
Antes de sumergirnos en la configuración, asegurémonos de que tenemos todo en orden. Necesitas lo siguiente:
- Acceso root o sudo: Necesitas permisos de administrador en tu servidor para instalar y configurar Fail2ban. Si solo tienes acceso a DirectAdmin como usuario, no podrás hacer estos cambios.
- Acceso SSH: Debes saber cómo conectarte a tu servidor por SSH (usando un programa como PuTTY en Windows o la terminal en Mac/Linux).
- Sistema operativo: Esta guía funcionará para la mayoría de las distribuciones Linux, pero me centraré en las más comunes: AlmaLinux, Rocky Linux, CentOS, Ubuntu y Debian.
- DirectAdmin actualizado: Es recomendable tener la última versión de DirectAdmin para evitar conflictos.
[INFO]
Si tu servidor usa Syspanel (antes conocido como HestiaCP), el proceso es diferente y el acceso al panel es por el puerto 2106. Esta guía está enfocada exclusivamente en DirectAdmin.
Paso 1: Instalar Fail2ban en tu servidor
El primer paso es instalar el software. Dependiendo de tu sistema operativo, el comando variará un poco. No te asustes, es muy sencillo.
Para sistemas basados en RedHat (AlmaLinux, Rocky Linux, CentOS):
Estos sistemas usan el gestor de paquetes dnf. Ejecuta estos comandos como root:
dnf install epel-release -y
dnf install fail2ban -y
El primer comando instala el repositorio EPEL (Paquetes Extra para Linux Empresarial), que contiene Fail2ban. El segundo comando instala el programa en sí.
Para sistemas basados en Debian (Ubuntu, Debian):
Estos sistemas usan apt. Ejecuta estos comandos:
apt update
apt install fail2ban -y
Verificar la instalación
Una vez instalado, es bueno verificar que se haya instalado correctamente. Escribe este comando:
fail2ban-client version
Deberías ver aparecer un número de versión, por ejemplo 1.0.2. Si ves esto, ¡perfecto! Ya tienes Fail2ban instalado.
Paso 2: Crear el archivo de configuración local (jail.local)
Fail2ban usa archivos de configuración "jail" (jaulas). El archivo principal es jail.conf, pero no debes editarlo directamente porque se sobrescribe al actualizar el software. En su lugar, crearemos un archivo llamado jail.local que tendrá prioridad.
Creamos el archivo con el siguiente comando:
nano /etc/fail2ban/jail.local
Esto abrirá un editor de texto vacío dentro de tu terminal. Ahora, vamos a pegar la configuración básica. No te preocupes, te explicaré cada parte después.
[DEFAULT]
# Ignora las direcciones IP de tu propia oficina o casa 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
bantime = 3600
# Tiempo de ventana de observación en segundos. 600 = 10 minutos
findtime = 600
# Número máximo de fallos antes de ser bloqueado
maxretry = 5
# Envía un correo electrónico al administrador (opcional)
destemail = tu_correo@tudominio.com
action = %(action_mwl)s
# Habilita el sistema de notificaciones por correo (opcional)
mta = sendmail
[TIP]
Cambia192.168.1.0/24por el rango de IP de tu red local. Si no sabes cuál es, puedes poner solo127.0.0.1/8 ::1para ignorar tu propio servidor y luego añadir tu IP pública. Puedes buscar "mi IP" en Google para encontrarla.
Paso 3: Configurar las "jaulas" (Jails) para servicios específicos
Ahora viene la parte interesante. Vamos a decirle a Fail2ban qué servicios debe vigilar. Añade estas líneas al final del mismo archivo jail.local que estás editando.
3.1 Proteger el acceso SSH
El puerto 22 es el más atacado. Esta configuración es esencial.
[sshd]
enabled = true
port = ssh
logpath = /var/log/secure
[INFO]
En sistemas Ubuntu/Debian, la ruta del log de SSH es/var/log/auth.log, no/var/log/secure. Si usas Ubuntu o Debian, cambia la línealogpathpor la correcta.
3.2 Proteger el acceso FTP (Pure-FTPd)
DirectAdmin usa normalmente Pure-FTPd. Vamos a protegerlo.
[pure-ftpd]
enabled = true
port = ftp
logpath = /var/log/messages
[WARNING]
Al igual que antes, en Ubuntu/Debian, el log de FTP puede estar en/var/log/syslog. Ajusta la ruta si es necesario.
3.3 Proteger el correo electrónico (Exim)
El servidor de correo también es un objetivo común. Añade esta configuración:
[exim]
enabled = true
port = smtp,ssmtp,pop3,pop3s,imap,imaps
logpath = /var/log/exim/mainlog
3.4 Proteger el panel de control de DirectAdmin
Esta es una de las partes más importantes. Queremos bloquear a los que intentan entrar a nuestro panel de administración.
[directadmin]
enabled = true
port = http,https
logpath = /var/log/directadmin/error.log
[TIP]
Si has cambiado el puerto de acceso a DirectAdmin (por defecto es el 2222), asegúrate de ponerlo aquí. Por ejemplo, si lo cambiaste al puerto 8443, deberías ponerport = 8443.
3.5 Proteger el servidor web (Apache/OpenLiteSpeed)
Podemos bloquear a los que intentan acceder a archivos sensibles o hacer fuerza bruta en las áreas de administración de WordPress, por ejemplo.
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/httpd/error_log
[apache-badbots]
enabled = true
port = http,https
logpath = /var/log/httpd/access_log
bantime = 86400
[INFO]
La configuraciónapache-badbotsbloquea durante 24 horas (86400 segundos) a los bots maliciosos conocidos que rastrean tu web en busca de vulnerabilidades.
Paso 4: Guardar, reiniciar y verificar Fail2ban
Una vez que hayas añadido todas las configuraciones, es hora de guardar el archivo y reiniciar el servicio.
Guardar el archivo
Si estás en nano, presiona Ctrl + X para salir. Te preguntará si quieres guardar los cambios. Presiona Y (Sí) y luego Enter para confirmar el nombre del archivo.
Reiniciar Fail2ban
Ahora, aplicamos los cambios. Ejecuta este comando:
systemctl restart fail2ban
Verificar que todo funciona
Para asegurarnos de que Fail2ban está activo y las jaulas están funcionando, ejecuta:
fail2ban-client status
Deberías ver una lista de las jaulas que has configurado, como sshd, pure-ftpd, directadmin, etc.
Para ver el estado de una jaula específica, por ejemplo, la de SSH, escribe:
fail2ban-client status sshd
Esto te mostrará cuántas IPs han sido bloqueadas actualmente y el historial de fallos.
[TIP]
Para ver si el servicio arranca correctamente al inicio del sistema, puedes ejecutarsystemctl enable fail2ban. Así se activará automáticamente cada vez que reinicies el servidor.
Paso 5: Probar que Fail2ban funciona (¡Con cuidado!)
Es buena idea hacer una prueba controlada para ver que todo está en orden. No hagas esto en un servidor de producción sin avisar a nadie, ya que bloquearás tu propia IP.
- Abre una nueva terminal e intenta conectarte por SSH a tu servidor con una contraseña incorrecta varias veces (más de 5 veces, que es el
maxretryque configuramos). - Después de los intentos fallidos, verás que tu conexión se rechaza inmediatamente.
- Ahora, en tu terminal principal, ejecuta
fail2ban-client status sshdy verás tu IP en la lista de "Banned IP list".
¡Felicidades! Has bloqueado con éxito un ataque de fuerza bruta. Para desbloquear tu IP de prueba, ejecuta:
fail2ban-client set sshd unbanip TU_IP_AQUI
Resolución de problemas comunes (FAQ)
¿Por qué Fail2ban no bloquea ninguna IP?
- Ruta de logs incorrecta: El problema más común es que la ruta del archivo de log no es la correcta. Verifica las rutas que te he dado y ajústalas a tu sistema operativo.
- Servicio no habilitado: Asegúrate de que en tu archivo
jail.localtienesenabled = trueen la jaula que te interesa. - Firewall: Asegúrate de que tu firewall (firewalld o iptables) no esté interfiriendo con las reglas que crea Fail2ban.
¿Cómo puedo desbloquear una IP manualmente?
Usa el comando fail2ban-client set NOMBRE_JAULA unbanip IP. Por ejemplo, para desbloquear la IP 1.2.3.4 de la jaula sshd, usarías fail2ban-client set sshd unbanip 1.2.3.4.
¿Cómo puedo cambiar el tiempo de bloqueo?
Edita el archivo jail.local y cambia el valor de bantime en la sección [DEFAULT]. Por ejemplo, bantime = 86400 lo bloqueará por 24 horas. Luego reinicia Fail2ban.
¿Fail2ban protege contra ataques DDoS?
No. Fail2ban está diseñado para ataques de fuerza bruta y de autenticación, no para ataques DDoS (Denegación de Servicio Distribuida). Para DDoS necesitas soluciones más avanzadas como un firewall de aplicación web (WAF) o servicios de mitigación en la nube.
¿Puedo usar Fail2ban con Syspanel (HestiaCP)?
Fail2ban es un software independiente, pero la configuración y las rutas de los logs son diferentes. Si usas Syspanel (puerto 2106), te recomiendo buscar guías específicas para ese panel, ya que las rutas de los servicios y logs cambian. Esta guía es solo para DirectAdmin.
¿Es necesario reiniciar el servidor después de cambiar la configuración?
No, solo necesitas reiniciar el servicio Fail2ban con systemctl restart fail2ban para que los cambios surtan efecto.
Conclusión: Tu servidor es ahora una fortaleza
Configurar fail2ban en DirectAdmin es una de las mejores inversiones de tiempo que puedes hacer para la seguridad de tu servidor. Con solo unos minutos de configuración, has añadido una capa de defensa robusta que trabaja automáticamente las 24 horas del día, los 7 días de la semana.
Has aprendido a instalar Fail2ban, crear jaulas para proteger SSH, FTP, correo, el panel de DirectAdmin y tu servidor web, y también a verificar su correcto funcionamiento. Ahora, los ataques de fuerza bruta que antes eran una pesadilla, serán simplemente un pequeño contratiempo para tu nuevo guardia de seguridad.
La ciberseguridad es un proceso continuo. Te recomiendo revisar periódicamente los logs de Fail2ban (/var/log/fail2ban.log) para ver qué tipo de ataques se están produciendo y ajustar tus configuraciones si es necesario. Empieza con las configuraciones básicas de esta guía y, a medida que te sientas más cómodo, podrás explorar opciones más avanzadas.
Espero que esta guía te haya sido de gran ayuda. ¡Ahora puedes dormir tranquilo sabiendo que tu servidor está mucho más protegido!
