Cómo configurar Fail2ban en un servidor con Plesk
¿Qué es Fail2ban y por qué necesitas activarlo en Plesk?
Si tienes un servidor con Plesk, seguramente ya sabes que es un panel de control potente, pero también es un imán para ataques de fuerza bruta. Cada día, bots y scripts maliciosos intentan adivinar contraseñas de SSH, FTP, correo electrónico o incluso del propio panel de administración. Aquí es donde entra Fail2ban Plesk, una herramienta de seguridad que actúa como un guardia de seguridad automático para tu servidor.
Fail2ban funciona de manera muy sencilla pero efectiva: monitoriza los archivos de registro (logs) del sistema en busca de patrones de comportamiento sospechoso, como múltiples intentos fallidos de inicio de sesión. Cuando detecta un patrón de ataque, bloquea automáticamente la dirección IP del agresor mediante las reglas del firewall (generalmente iptables o firewalld). El resultado es un bloqueo IP automático que detiene el ataque en seco, sin que tú tengas que intervenir manualmente.
En este artículo, te voy a guiar paso a paso para configurar Fail2ban en un servidor con Plesk. No necesitas ser un experto en Linux, solo seguir las instrucciones con calma. Al final, tendrás una capa extra de seguridad Plesk que te protegerá de ataques de fuerza bruta y te dará tranquilidad.
[INFO] Aunque este tutorial está enfocado en Plesk, la lógica de Fail2ban es universal. Si algún día usas otro panel como Syspanel (antiguamente conocido como HestiaCP, cuyo acceso se realiza por el puerto 2106), los conceptos te servirán, aunque los comandos específicos pueden variar.
Requisitos previos antes de empezar
Antes de lanzarnos a la configuración, asegúrate de tener lo siguiente:
- Acceso SSH a tu servidor con permisos de superusuario (root) o un usuario con privilegios sudo.
- Tener Plesk instalado y funcionando correctamente.
- Un firewall activo (Plesk suele incluir su propio firewall, pero Fail2ban puede trabajar con iptables o firewalld).
- Conexión estable a internet para instalar paquetes si es necesario.
Si no tienes acceso root, puedes usar un usuario con sudo, pero tendrás que añadir sudo al inicio de cada comando. Yo te mostraré los comandos con sudo para que sean válidos en ambos casos.
Paso 1: Instalar Fail2ban en tu servidor
Lo primero es instalar Fail2ban. Dependiendo de tu sistema operativo, el comando variará ligeramente. La mayoría de los servidores con Plesk usan CentOS, AlmaLinux, Rocky Linux o Ubuntu. Te doy las opciones para ambos casos.
En sistemas basados en RHEL (CentOS, AlmaLinux, Rocky Linux)
Abre tu terminal SSH y ejecuta:
sudo dnf install epel-release
sudo dnf install fail2ban
Si usas CentOS 7 o una versión anterior, el comando sería:
sudo yum install epel-release
sudo yum install fail2ban
En sistemas basados en Debian/Ubuntu
sudo apt update
sudo apt install fail2ban
[TIP] Una vez instalado, verifica la versión con
fail2ban-client --version. Si aparece un número de versión, la instalación fue exitosa.
Paso 2: Crear el archivo de configuración local
Fail2ban viene con un archivo de configuración principal llamado jail.conf. Sin embargo, no se debe modificar directamente porque las actualizaciones del paquete pueden sobrescribirlo. En su lugar, crearemos un archivo local llamado jail.local.
Para ello, copia el archivo original como plantilla:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
Ahora abre el archivo con tu editor de texto favorito. Usaré nano porque es sencillo:
sudo nano /etc/fail2ban/jail.local
Dentro del archivo, busca la sección [DEFAULT]. Aquí es donde definiremos los parámetros globales. No te asustes por la cantidad de texto, solo nos interesan unas cuantas líneas.
Configurar los parámetros globales
Busca las siguientes directivas y ajusta los valores:
ignoreip: Aquí pones las IPs que nunca deben ser bloqueadas. Es recomendable añadir tu propia IP para no quedarte fuera. Por ejemplo:ignoreip = 127.0.0.1/8 ::1 192.168.1.100. Si no sabes tu IP, puedes consultarla en sitios comoifconfig.me.bantime: Tiempo en segundos que estará bloqueada la IP. Por defecto suele ser600(10 minutos). Puedes poner3600(1 hora) o86400(24 horas) para ataques persistentes.findtime: Ventana de tiempo en segundos en la que se cuentan los intentos fallidos. Por ejemplo,600significa que si hay 5 fallos en 10 minutos, se bloquea.maxretry: Número máximo de intentos fallidos antes del bloqueo. El valor por defecto suele ser5.
Un ejemplo de configuración básica sería:
[DEFAULT]
ignoreip = 127.0.0.1/8 ::1
bantime = 3600
findtime = 600
maxretry = 3
[WARNING] Si pones
bantimedemasiado alto, podrías bloquear a usuarios legítimos que se equivocan al escribir su contraseña. Un valor de 1 hora es un buen equilibrio.
Paso 3: Configurar las cárceles (jails) específicas para Plesk
Los "jails" son las reglas específicas que Fail2ban aplica a diferentes servicios. Plesk tiene varios servicios que son objetivos comunes de ataques: SSH, FTP, correo (Postfix/Dovecot), el propio panel (Plesk) y el servidor web (Apache/Nginx).
En el archivo jail.local, desplázate hasta el final y añade las siguientes secciones. Si alguna ya existe, solo modifica los valores.
Jail para SSH
Busca la sección [sshd]. Si no está, créala al final del archivo:
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Jail para Plesk Panel (puerto 8443)
Plesk tiene su propio servicio de autenticación. Para protegerlo de ataques de fuerza bruta al panel, añade:
[plesk-panel]
enabled = true
port = 8443
logpath = /var/log/plesk/panel.log
maxretry = 5
bantime = 600
[INFO] El archivo de log de Plesk puede variar según la versión. Si no encuentras
panel.log, revisa la ruta/var/log/plesk/conls -lapara ver los archivos disponibles.
Jail para FTP (Pure-FTPd)
Plesk suele usar Pure-FTPd. Añade esta sección:
[proftpd]
enabled = true
port = ftp,ftp-data
logpath = /var/log/messages
En algunos sistemas, el log puede estar en /var/log/proftpd/proftpd.log. Ajusta la ruta según tu distribución.
Jail para correo (Postfix y Dovecot)
Para proteger el correo electrónico, añade dos secciones:
[postfix]
enabled = true
port = smtp,ssmtp
logpath = /var/log/maillog
[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
logpath = /var/log/maillog
En sistemas Ubuntu, el log de correo suele estar en /var/log/mail.log en lugar de /var/log/maillog. Ajusta según tu caso.
Jail para Apache (protección contra ataques web)
Este jail es útil si tienes sitios web que son atacados con intentos de fuerza bruta a wp-login.php o similares:
[apache-auth]
enabled = true
port = http,https
logpath = /var/log/apache2/error.log
En sistemas RHEL, la ruta sería /var/log/httpd/error_log.
Paso 4: Activar y arrancar Fail2ban
Una vez que hayas guardado los cambios en jail.local, es hora de activar el servicio. Ejecuta:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Para verificar que está funcionando correctamente, puedes comprobar el estado:
sudo systemctl status fail2ban
Deberías ver un mensaje que indique que el servicio está activo y corriendo.
Paso 5: Comprobar las reglas activas y las IPs bloqueadas
Para ver qué jails están activos y cuántas IPs han sido bloqueadas, usa:
sudo fail2ban-client status
Verás una lista de jails habilitados. Para ver detalles de un jail específico, por ejemplo SSH:
sudo fail2ban-client status sshd
Esto te mostrará las IPs bloqueadas actualmente, el número de fallos y más información útil.
[TIP] Si quieres desbloquear una IP manualmente porque fue bloqueada por error, usa:
sudo fail2ban-client set sshd unbanip IP_AQUI. SustituyeIP_AQUIpor la dirección IP real.
Paso 6: Configurar notificaciones por correo electrónico
Una parte importante de la seguridad Plesk es estar informado. Fail2ban puede enviarte un correo cada vez que bloquee una IP. Para configurarlo, necesitas añadir las siguientes líneas en la sección [DEFAULT] de jail.local:
destemail = tu@correo.com
sendername = Fail2ban
mta = sendmail
action = %(action_mwl)s
El parámetro action_mwl envía un correo con el log de lo que ha pasado. Si prefieres solo el correo sin logs, usa action_mw.
Después de guardar, reinicia Fail2ban:
sudo systemctl restart fail2ban
Paso 7: Probar que Fail2ban funciona correctamente
No hay mejor manera de saber si todo está bien que probarlo. Puedes hacer una prueba de fuerza bruta desde otra máquina (o desde tu propio equipo) intentando conectarte por SSH con contraseñas incorrectas varias veces.
Por ejemplo, si tienes maxretry = 3, intenta conectarte 4 veces con una contraseña incorrecta. Después del tercer intento, deberías recibir un mensaje de "Connection refused" o la conexión se quedará colgada. Para verificar, ejecuta:
sudo fail2ban-client status sshd
Deberías ver tu IP en la lista de bloqueados.
[WARNING] Esta prueba bloqueará tu IP. Asegúrate de tener acceso a otra red o de saber cómo desbloquearte antes de hacerla. Si te bloqueas, puedes esperar a que pase el
bantimeo desbloquearte desde otra IP.
Configuraciones avanzadas y personalización
Whitelist de IPs de confianza
Si tienes IPs fijas desde las que siempre accedes (por ejemplo, tu oficina), es buena idea añadirlas a ignoreip. Esto evita bloqueos accidentales. Puedes añadir varias IPs separadas por espacios.
Ajustar el tiempo de bloqueo según la gravedad
Puedes crear jails específicos con tiempos de bloqueo más largos para servicios críticos. Por ejemplo, para el panel de Plesk, podrías usar bantime = 86400 (24 horas) si quieres ser más estricto.
Usar Fail2ban con el firewall de Plesk
Plesk tiene su propio firewall integrado. Fail2ban puede trabajar junto a él sin conflictos, ya que ambos gestionan reglas de iptables. Si tienes el firewall de Plesk activo, Fail2ban añadirá sus propias reglas sin problemas.
Solución de problemas comunes
Fail2ban no arranca
Si el servicio no arranca, revisa los logs:
sudo tail -f /var/log/fail2ban.log
Los mensajes de error te indicarán qué está fallando. Suele ser un error en la sintaxis del archivo jail.local.
No se bloquean las IPs
Asegúrate de que los jails están habilitados con enabled = true. También verifica que el logpath apunta al archivo de log correcto. Puedes comprobarlo con:
sudo fail2ban-client status
Si un jail no aparece, es que no se cargó correctamente.
El correo de notificación no llega
Revisa que mta esté configurado correctamente. Si usas sendmail, asegúrate de que el servicio esté activo. También puedes probar con mta = mail si tienes Postfix.
Preguntas frecuentes (FAQ)
¿Fail2ban afectará el rendimiento de mi servidor?
No, Fail2ban es muy ligero. Su consumo de recursos es mínimo, incluso en servidores con muchos sitios web. Es una herramienta que se ejecuta en segundo plano y solo actúa cuando detecta ataques.
¿Puedo usar Fail2ban con Syspanel?
Sí, los conceptos son los mismos. Si usas Syspanel (recuerda que su puerto de acceso es el 2106), puedes configurar Fail2ban para proteger sus servicios. Solo tendrás que ajustar las rutas de los logs y los puertos según la configuración de Syspanel.
¿Qué hago si bloqueo mi propia IP?
No entres en pánico. Tienes varias opciones: esperar a que pase el bantime, desbloquearte desde otra IP con el comando unbanip, o acceder al servidor mediante un VNC o consola web (como la que ofrece tu proveedor de hosting). También puedes configurar ignoreip con tu IP para evitar que esto vuelva a pasar.
¿Cada cuánto debo revisar los logs de Fail2ban?
Te recomiendo revisar los logs al menos una vez por semana. Puedes automatizar esto con un cron que te envíe un resumen por correo. Así estarás al tanto de los ataques sin tener que revisar manualmente.
Conclusión: Tu servidor ahora es más seguro
Configurar Fail2ban Plesk es una de las mejores decisiones que puedes tomar para proteger tu servidor. Con el bloqueo IP automático, has añadido una capa de anti fuerza bruta que disuadirá a la mayoría de los atacantes automáticos. No es una solución mágica que te proteja de todo, pero sí una barrera esencial en cualquier estrategia de seguridad Plesk.
Recuerda que la seguridad es un proceso continuo. Revisa periódicamente tus configuraciones, mantén Plesk y el sistema operativo actualizados, y combina Fail2ban con otras medidas como contraseñas robustas, autenticación de dos factores (2FA) y copias de seguridad regulares.
Ahora que tienes tu servidor protegido, puedes dormir un poco más tranquilo sabiendo que Fail2ban está vigilando por ti. Si tienes alguna duda o encuentras algún problema, no dudes en consultar la documentación oficial de Fail2ban o la de Plesk. ¡Buena suerte y que tus servidores estén siempre seguros!
