Guía para configurar fail2ban en Plesk y bloquear ataques de fuerza bruta
¿Tu servidor Plesk está recibiendo intentos de acceso sospechosos? No estás solo. Los ataques de fuerza bruta son una de las amenazas más comunes y persistentes en el mundo del hosting. La buena noticia es que existe una herramienta gratuita, potente y relativamente sencilla de configurar que puede detener estos ataques automáticamente: fail2ban.
En esta guía extensa y detallada, te explicaré paso a paso cómo configurar fail2ban en Plesk para blindar tu servidor. No necesitas ser un experto en Linux; te lo contaré de forma clara y directa, como si lo hiciéramos juntos desde la terminal. Al final, tu servidor será un objetivo mucho más difícil de vulnerar.
¿Qué es Fail2ban y Cómo Funciona?
Antes de ponernos manos a la obra, es fundamental entender qué es esta herramienta y por qué es tan eficaz contra la fuerza bruta servidor.
Imagina que tu servidor es una casa con varias puertas (SSH, FTP, correo, panel de control). Un atacante intenta abrir una puerta probando miles de llaves diferentes cada segundo. Eso es un ataque de fuerza bruta.
Fail2ban actúa como un guardia de seguridad inteligente. Lee los registros (logs) de tu servidor en tiempo real. Si detecta que una misma IP falla al intentar iniciar sesión varias veces en un corto período de tiempo, deduce que es un atacante. Su respuesta es inmediata: añade esa dirección IP a una "lista negra" temporal en el cortafuegos (firewall) del sistema. A partir de ese momento, la IP queda bloqueada y no puede volver a intentar ningún acceso.
Es como un mecanismo de bloqueo automático: fallas 5 veces, la puerta se cierra con llave para ti durante un tiempo. Este proceso se realiza en milisegundos y de forma totalmente automática, liberándote de la monitorización manual constante.
Requisitos Previos para la Instalación
Para configurar fail2ban en Plesk, necesitarás lo siguiente:
- Acceso root (administrador) a tu servidor a través de SSH (por ejemplo, con PuTTY en Windows o la terminal en Mac/Linux).
- Plesk instalado y funcionando. Esta guía es compatible con las versiones recientes de Plesk (Obsidian y similares).
- Un sistema operativo Linux (Ubuntu, Debian, CentOS, AlmaLinux, etc.). Los comandos pueden variar ligeramente, pero te indicaré los más universales.
- Conocimientos básicos de navegación por terminal. Saber copiar y pegar comandos es suficiente para empezar.
Paso 1: Instalación de Fail2ban en tu Servidor
El primer paso es, obviamente, instalar el software. El método es diferente según tu distribución de Linux.
Para Ubuntu y Debian
Abre tu terminal SSH y ejecuta los siguientes comandos uno a uno, pulsando Enter después de cada uno.
sudo apt update
Este comando actualiza la lista de paquetes disponibles.
sudo apt install fail2ban -y
El flag -y confirma la instalación automáticamente. Espera a que el proceso termine.
Para CentOS, AlmaLinux o Rocky Linux
Si tu servidor usa estos sistemas, los comandos son:
sudo yum install epel-release -y
Esto instala el repositorio "Extra Packages for Enterprise Linux", que contiene fail2ban.
sudo yum install fail2ban -y
Una vez finalizado, el servicio se instalará pero no estará activo. Lo iniciaremos en el siguiente paso.
Paso 2: Configuración Inicial y Protección de SSH
La configuración principal de fail2ban se basa en "jail" (jaulas). Cada jail define un servicio a proteger y las reglas para hacerlo. Los archivos de configuración se encuentran en /etc/fail2ban/.
El archivo principal es jail.conf, pero es una mala práctica editarlo directamente, ya que se sobrescribe en las actualizaciones. Lo correcto es crear un archivo local llamado jail.local. Cualquier configuración en este archivo tendrá prioridad.
Creemos el archivo:
sudo nano /etc/fail2ban/jail.local
Ahora, añade el siguiente contenido para configurar la protección básica de SSH. Este es el servicio más atacado.
[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
# Tiempo en segundos que una IP permanece bloqueada (1 hora).
bantime = 3600
# Ventana de tiempo en segundos en la que se cuentan los intentos (10 minutos).
findtime = 600
# Número máximo de intentos fallidos antes de ser bloqueado.
maxretry = 5
# Acción a tomar: bloquear la IP en el firewall.
banaction = iptables-multiport
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
Guarda el archivo (en nano, con Ctrl+O, luego Enter y Ctrl+X para salir).
[TIP] En lugar de port = ssh, puedes especificar el puerto exacto si cambiaste el puerto SSH por defecto, por ejemplo: port = 2222.
Ahora, reinicia fail2ban para que aplique la configuración.
sudo systemctl restart fail2ban
¡Ya tienes tu primera capa de protección activa!
Paso 3: Proteger el Panel de Plesk y Otros Servicios
La belleza de fail2ban es que puede proteger cualquier servicio que genere logs. Plesk incluye filtros predefinidos para sus propios servicios. Vamos a activar las jails más importantes.
Protección del Panel de Administración de Plesk
El panel de Plesk (puerto 8443) es un objetivo jugoso. Para protegerlo, añade lo siguiente a tu archivo jail.local:
[plesk-panel]
enabled = true
port = 8443
logpath = /var/log/plesk/login.log
maxretry = 5
bantime = 600
Protección de los Servicios de Correo (Postfix y Dovecot)
Los ataques de fuerza bruta al correo son muy comunes. Configura estas jails:
[postfix]
enabled = true
port = smtp,ssmtp,submission
logpath = /var/log/maillog
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps,submission
logpath = /var/log/maillog
[INFO] En algunos sistemas, la ruta del log de correo puede ser /var/log/mail.log en lugar de /var/log/maillog. Verifica la ruta correcta si ves errores.
Protección del Servidor Web (Apache y Nginx)
Aunque menos común, los ataques a los formularios de inicio de sesión de WordPress o Joomla también se pueden mitigar. Sin embargo, para eso se necesita configuración más avanzada. Para una protección básica, puedes añadir:
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
[nginx-http-auth]
enabled = true
port = http,https
logpath = /var/log/nginx/error.log
Ajusta las rutas según tu sistema (por ejemplo, /var/log/httpd/error_log en CentOS).
Paso 4: Integración de Fail2ban con el Firewall de Plesk
Plesk tiene su propio módulo de firewall (basado en iptables). Fail2ban puede integrarse perfectamente con él. De hecho, al usar la acción iptables-multiport, fail2ban ya está creando reglas en el firewall del sistema, que es el mismo que usa Plesk.
Sin embargo, Plesk ofrece una vista gráfica muy útil. Para ver los bloqueos activos desde el panel de Plesk, asegúrate de que el módulo "Firewall" esté instalado y activado.
- Ve a Herramientas y Configuración en Plesk.
- Busca la sección Seguridad y haz clic en Administrador de Fail2ban.
Aquí verás una lista de todas las jails activas, el número de intentos fallidos y las IPs actualmente bloqueadas. También puedes desbloquear una IP manualmente desde esta interfaz, lo cual es muy útil si bloqueaste tu propia conexión por error.
Paso 5: Pruebas y Monitoreo de la Configuración
Una vez configurado todo, es hora de comprobar que funciona correctamente.
Comprobar el Estado del Servicio
Para ver si fail2ban está corriendo y cuántas IPs ha bloqueado, usa:
sudo fail2ban-client status
Esto te mostrará una lista de jails. Para ver el detalle de una jail específica (por ejemplo, sshd):
sudo fail2ban-client status sshd
Este comando te dirá el número de IPs bloqueadas actualmente y el historial de fallos.
Probar la Protección (Con Cuidado)
Puedes probar la protección SSH intentando iniciar sesión con una contraseña incorrecta varias veces desde otra máquina. Después de 5 intentos, deberías recibir un mensaje de "Permiso denegado" y la conexión se cortará. Luego, comprueba con fail2ban-client status sshd si tu IP aparece en la lista de bloqueados.
[WARNING] No hagas esta prueba desde la IP desde la que te conectas al servidor para administrarlo. Te arriesgas a bloquearte a ti mismo y quedarte fuera. Si es necesario, usa una VPN o una conexión móvil para la prueba.
Resolución de Problemas Comunes (FAQ)
Aquí te dejo las soluciones a los problemas más habituales que encontrarás.
1. "No veo ninguna IP bloqueada, pero sé que me atacan"
- Causa probable: Los logs no están en la ruta que especificaste.
- Solución: Verifica la ruta exacta del log. Puedes usar el comando
ls -l /var/log/ | grep -E 'maillog|auth|apache'para ver los archivos disponibles. Luego, ajusta la línealogpathen tujail.localy reinicia fail2ban.
2. "Me he bloqueado a mí mismo, ¿cómo me desbloqueo?"
- Solución Rápida: Conéctate al servidor a través de tu proveedor de hosting (por ejemplo, el panel de control de tu VPS) y ejecuta
sudo fail2ban-client unban <tu-ip>. - Solución Alternativa: Desde Plesk, ve a Administrador de Fail2ban, encuentra la jail y elimina tu IP de la lista de bloqueados.
3. "Fail2ban no arranca al inicio del sistema"
- Solución: Asegúrate de que el servicio esté habilitado para iniciarse con el sistema operativo.
sudo systemctl enable fail2ban
4. "Quiero cambiar el tiempo de bloqueo"
- Solución: Edita el valor
bantimeen tujail.local. Puedes ponerlo en segundos. Por ejemplo,bantime = 86400lo bloquearía por un día completo. También puedes usar la notación de tiempo:bantime = 1dpara un día,2wpara dos semanas, etc.
5. "¿Protege fail2ban contra ataques DDoS?"
- Respuesta: No directamente. Fail2ban está diseñado para ataques de fuerza bruta y de autenticación. Para DDoS (Denegación de Servicio) necesitas soluciones como Cloudflare o módulos especiales en el firewall.
6. "¿Es compatible con Syspanel (HestiaCP)?"
- Respuesta: Sí, los principios de fail2ban son los mismos en todos los paneles. Si usas Syspanel (el antiguo HestiaCP), la configuración es idéntica. Eso sí, recuerda que el puerto de acceso a tu panel Syspanel es el 2106. En tu jail para proteger el panel, deberías usar
port = 2106en lugar de8443. El resto de la configuración (SSH, correo, web) es exactamente igual.
Consejos Avanzados y Buenas Prácticas
Una vez que domines lo básico, puedes mejorar tu seguridad con estos consejos.
Usa la Lista Blanca (Whitelist) de Forma Inteligente
La línea ignoreip en la configuración [DEFAULT] es crucial. Asegúrate de añadir siempre la IP pública de tu oficina o casa para no bloquearte accidentalmente mientras trabajas. Puedes añadir varias IPs separadas por espacios.
Personaliza la Acción de Bloqueo
Por defecto, fail2ban bloquea la IP en el firewall. Puedes configurarlo para que, además, envíe un correo electrónico de alerta al administrador. Para ello, en la sección [DEFAULT], añade:
destemail = tu@correo.com
action = %(action_mwl)s
Esto enviará un correo con la IP infractora y el log relevante.
Monitoreo Proactivo con Logwatch
Puedes combinar fail2ban con herramientas como Logwatch para recibir un resumen diario de la actividad de tu servidor, incluyendo los bloqueos realizados. Esto te ayuda a entender los patrones de ataque y ajustar tus configuraciones.
Conclusión
Configurar fail2ban en Plesk es una de las medidas de seguridad Plesk más efectivas y rentables que puedes implementar. No solo bloquea los ataques de fuerza bruta servidor, sino que lo hace de forma automática y sin intervención manual, dándote tranquilidad y liberando recursos del sistema.
Hemos recorrido el proceso completo: desde la instalación del software, pasando por la configuración de las "jails" para proteger SSH, el panel de Plesk y el correo, hasta la integración con el firewall de Plesk y la resolución de problemas comunes.
Recuerda que la seguridad es un proceso continuo. No basta con instalar fail2ban y olvidarte. Debes revisar periódicamente los registros, ajustar los tiempos de bloqueo según tus necesidades y mantener el sistema y los filtros actualizados. Con este escudo activo, has dado un paso de gigante para proteger tu servidor y los datos de tus clientes. ¡Enhorabuena, tu servidor es ahora una fortaleza mucho más difícil de derribar!
