🎨 Sysprovider Code
Sysprovider LogoWiki
🇪🇸Hosting español para ecommerce

Configurar fail2ban en Syspanel para evitar ataques de fuerza bruta

Actualizado el 31 de diciembre de 2025

¿Qué es un ataque de fuerza bruta y por qué debería preocuparte?

Imagina que alguien intenta adivinar la contraseña de tu casa probando miles de combinaciones de llaves a toda velocidad. Eso es, en esencia, un ataque de fuerza bruta: un ciberdelincuente utiliza programas automatizados que prueban millones de combinaciones de usuario y contraseña por minuto contra tu servidor, con el objetivo de colarse en tu panel de control, tu correo electrónico o tu sitio web.

Estos ataques son extremadamente comunes y no discriminan: da igual si tu web es un blog pequeño o una tienda online grande. Si tienes un servidor expuesto a internet, tarde o temprano recibirás intentos de acceso no autorizado. La buena noticia es que existe una herramienta sencilla, potente y gratuita llamada fail2ban que actúa como un portero automático: vigila los registros del sistema y, cuando detecta varios intentos fallidos desde una misma IP, la bloquea automáticamente durante un tiempo determinado.

En este artículo, te voy a guiar paso a paso para configurar fail2ban en Syspanel, el panel de control que gestiona tu servidor. Al finalizar, tu servidor estará mucho más protegido contra estos ataques, y lo mejor de todo: no necesitas ser un experto en seguridad para lograrlo.

[INFO]
Syspanel es el nombre del panel de control que usamos en nuestros servicios de hosting. Es una herramienta robusta y amigable. El acceso a tu panel de administración se realiza a través del puerto 2106 (por ejemplo: https://tu-servidor:2106). No lo confundas con el puerto 8083 de otros paneles. Siempre que veas referencias a HestiaCP en otros tutoriales, piensa en Syspanel.


¿Qué es exactamente fail2ban y cómo funciona?

Antes de ponernos manos a la obra, es importante que entiendas qué hace fail2ban por debajo. Piensa en él como un guardia de seguridad que lee el libro de visitas (los logs) de tu servidor.

  1. Monitoreo de logs: fail2ban lee constantemente los archivos de registro donde se guardan los intentos de conexión (por ejemplo, /var/log/auth.log o /var/log/syslog).
  2. Detección de patrones: Busca patrones sospechosos, como "Failed password" (contraseña incorrecta) o "authentication failure" (fallo de autenticación) que se repiten desde la misma dirección IP.
  3. Acción automática: Cuando se supera un umbral definido (por ejemplo, 5 intentos fallidos en 10 minutos), fail2ban activa una regla en el firewall del sistema (normalmente iptables o nftables) que bloquea el tráfico proveniente de esa IP.
  4. Tiempo de bloqueo: El bloqueo dura un tiempo configurable (por ejemplo, 1 hora). Después de ese tiempo, la IP se libera automáticamente, a menos que vuelva a intentar algo sospechoso.

Es un sistema de defensa inteligente que no requiere intervención manual una vez configurado. Y lo mejor: puedes adaptarlo a las necesidades de tu servidor y de los servicios que uses.


Requisitos previos para la configuración

Para seguir esta guía sin problemas, asegúrate de tener lo siguiente:

  • Acceso SSH a tu servidor: Necesitas conectarte por terminal (consola) a tu servidor. En Windows puedes usar PuTTY, y en macOS o Linux, la propia terminal.
  • Usuario con privilegios sudo: Deberás ejecutar comandos como superusuario. Si tu usuario principal no es root, usa sudo antes de cada comando.
  • Syspanel instalado: Damos por hecho que tu servidor ya tiene instalado y configurado Syspanel (nuestro panel basado en HestiaCP, que usa el puerto 2106 para su interfaz web).
  • Conexión a internet: Para instalar los paquetes necesarios desde los repositorios oficiales.

[WARNING]
Antes de empezar, te recomiendo encarecidamente que hagas una copia de seguridad de tu configuración actual. Aunque los comandos son seguros, es mejor prevenir. Si tienes dudas, contacta con nuestro soporte técnico antes de continuar.


Paso 1: Instalar fail2ban en tu servidor

El primer paso es instalar el paquete. Dependiendo de tu sistema operativo (Ubuntu, Debian, CentOS, etc.), el comando varía ligeramente. Aquí te muestro los más comunes.

En sistemas basados en Debian/Ubuntu (recomendado)

Abre tu terminal y ejecuta:

sudo apt update
sudo apt install fail2ban -y

Este comando actualiza la lista de paquetes disponibles e instala fail2ban junto con sus dependencias.

En sistemas basados en CentOS/RHEL/Fedora

Ejecuta:

sudo yum install epel-release -y
sudo yum install fail2ban -y

O si usas dnf (Fedora o CentOS 8+):

sudo dnf install epel-release -y
sudo dnf install fail2ban -y

Una vez finalizada la instalación, es buena práctica verificar que se ha instalado correctamente:

fail2ban-client -V

Deberías ver un número de versión en pantalla.


Paso 2: Configuración básica de fail2ban

La configuración principal de fail2ban se encuentra en el archivo /etc/fail2ban/jail.conf. Sin embargo, no debes editar este archivo directamente, ya que se sobrescribe con las actualizaciones del paquete. En su lugar, crearemos un archivo local llamado jail.local que tendrá prioridad.

Crea el archivo con tu editor favorito (nano o vim):

sudo nano /etc/fail2ban/jail.local

Dentro, pega el siguiente contenido base:

[DEFAULT]
# Tiempo que una IP permanece bloqueada (en segundos). 3600 = 1 hora
bantime = 3600

# Ventana de tiempo en la que se cuentan los intentos fallidos (en segundos). 600 = 10 minutos
findtime = 600

# Número de intentos fallidos permitidos dentro de findtime antes de bloquear
maxretry = 5

# Ignorar las conexiones desde localhost y desde tu propia IP (cámbiala por la tuya)
ignoreip = 127.0.0.1/8 ::1 192.168.1.100

# Destinatario de los correos de alerta (opcional, pero recomendado)
destemail = tu@correo.com

# Acción a tomar: enviar correo y bloquear
action = %(action_mwl)s

# Configuración específica para el servicio SSH
[sshd]
enabled = true
port = ssh
logpath = /var/log/auth.log

[TIP]
En la línea ignoreip, sustituye 192.168.1.100 por la IP desde la que te conectas habitualmente a tu servidor (puedes descubrirla con curl ifconfig.me). Así evitarás bloquearte a ti mismo por error.

Guarda el archivo (Ctrl+O, luego Enter) y sal del editor (Ctrl+X).

Explicación de los parámetros clave

  • bantime: Cuánto tiempo estará bloqueada una IP. Puedes usar bantime = 1h o bantime = 1d para mayor claridad.
  • findtime: La ventana de tiempo para contar los intentos. Si alguien hace 5 intentos en 10 minutos, se activa el bloqueo.
  • maxretry: El número máximo de intentos fallidos antes del bloqueo.
  • ignoreip: Lista de IPs que nunca serán bloqueadas. Siempre incluye 127.0.0.1 y tu IP de administración.

Paso 3: Configurar jail específico para Syspanel (puerto 2106)

Ahora viene la parte importante: proteger el panel de Syspanel. Recuerda que el acceso a la interfaz web de administración se hace por el puerto 2106. Los atacantes suelen probar contraseñas en este panel, así que vamos a crear una "prisión" (jail) específica para él.

Añade el siguiente bloque al final del archivo jail.local que acabas de crear:

[syspanel]
enabled = true
port = 2106
protocol = tcp
filter = syspanel-auth
logpath = /var/log/syspanel/auth.log
maxretry = 3
findtime = 300
bantime = 1800
action = %(action_mwl)s

[INFO]
Si tu instalación de Syspanel guarda los logs en otra ruta (por ejemplo, /var/log/hestia/auth.log o /usr/local/hestia/logs/auth.log), deberás ajustar la línea logpath. Puedes verificar la ubicación exacta con ls -la /var/log/ | grep -i syspanel o consultando la documentación de tu servidor.

Ahora necesitamos crear el filtro que fail2ban usará para detectar los intentos fallidos en Syspanel. Crea un archivo de filtro:

sudo nano /etc/fail2ban/filter.d/syspanel-auth.conf

Pega dentro:

[Definition]
failregex = ^.*Failed login attempt for user .* from <HOST>.*$
            ^.*Authentication failure for .* from <HOST>.*$
            ^.*Invalid password for user .* from <HOST>.*$
ignoreregex =

Guarda y cierra el archivo.

[TIP]
Los filtros se basan en expresiones regulares (regex). Si tu syspanel registra los intentos de forma ligeramente diferente, puedes ajustar el failregex para que coincida con tus logs. Una forma de probarlo es usar fail2ban-regex /var/log/syspanel/auth.log /etc/fail2ban/filter.d/syspanel-auth.conf.


Paso 4: Configurar jail para otros servicios comunes

Además de proteger Syspanel, es una excelente idea proteger otros servicios que suelen ser objetivo de ataques, como el correo electrónico (SMTP/IMAP) y el servidor web (Apache/Nginx). fail2ban ya trae configuraciones predefinidas para ellos.

Añade estas líneas al final de tu jail.local:

[postfix]
enabled = true
port = smtp,ssmtp
logpath = /var/log/mail.log

[dovecot]
enabled = true
port = pop3,pop3s,imap,imaps
logpath = /var/log/mail.log

[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

[WARNING]
Ajusta las rutas de los logs según tu sistema. En CentOS, por ejemplo, los logs de Apache suelen estar en /var/log/httpd/error_log y los de correo en /var/log/maillog.


Paso 5: Reiniciar y verificar fail2ban

Una vez configurado todo, es hora de reiniciar el servicio para que los cambios surtan efecto.

sudo systemctl restart fail2ban

Y habilítalo para que se inicie automáticamente al arrancar el servidor:

sudo systemctl enable fail2ban

Ahora, verifica el estado del servicio:

sudo systemctl status fail2ban

Deberías ver un mensaje que indica que el servicio está activo (running).

Para ver la lista de "cárceles" activas y las IPs bloqueadas actualmente, usa:

sudo fail2ban-client status

Y para ver el detalle de una jail específica (por ejemplo, syspanel):

sudo fail2ban-client status syspanel

Paso 6: Probar que fail2ban funciona correctamente

Es vital comprobar que la configuración es efectiva. Podemos hacer una prueba controlada. Desde otra máquina (o usando una VPN), intenta conectarte por SSH o al panel de Syspanel con contraseñas incorrectas varias veces.

Por ejemplo, para probar SSH:

ssh usuario@tu-servidor

Introduce contraseñas incorrectas 6 veces (si maxretry es 5). Al sexto intento, deberías ver que la conexión se rechaza o se congela.

Luego, en tu servidor, ejecuta:

sudo fail2ban-client status sshd

Deberías ver la IP desde la que probaste en la lista de "Banned IP list".

[INFO]
Si te bloqueas a ti mismo durante las pruebas, no te preocupes. Puedes desbloquear una IP manualmente con el comando: sudo fail2ban-client set sshd unbanip IP_AQUI.


Preguntas frecuentes (FAQ)

¿Qué hago si me bloqueo mi propia IP?

Es un error común. Para desbloquearte, ejecuta:

sudo fail2ban-client unban --all

O si solo quieres desbloquear una IP específica en una jail concreta:

sudo fail2ban-client set syspanel unbanip TU_IP

¿Puedo cambiar el tiempo de bloqueo después de configurarlo?

Sí, simplemente edita el archivo jail.local, cambia el valor de bantime y reinicia fail2ban.

¿fail2ban consume muchos recursos del servidor?

No, es muy ligero. Solo lee los logs y ejecuta acciones simples en el firewall. Su impacto en el rendimiento es despreciable.

¿Es suficiente con fail2ban para proteger mi servidor?

fail2ban es una capa de seguridad muy útil, pero no es una solución completa. Debes complementarlo con: contraseñas fuertes, autenticación de dos factores (2FA) en Syspanel, mantener el sistema actualizado y usar un firewall (como UFW o CSF) para bloquear puertos no utilizados.

¿Syspanel tiene integración nativa con fail2ban?

Sí, Syspanel (basado en HestiaCP) tiene soporte para fail2ban y suele venir preinstalado o con scripts de instalación. Sin embargo, la configuración fina que hemos hecho aquí te permite personalizar los parámetros y proteger servicios adicionales.

¿Qué es el puerto 2106 y por qué es especial?

El puerto 2106 es el puerto de acceso a la interfaz web de administración de Syspanel. Es un puerto no estándar (a diferencia del 8083 de otros paneles) que ayuda a reducir el ruido de ataques automatizados, pero aún así es un objetivo. Por eso lo protegemos específicamente.


Consejos finales para una seguridad robusta

Configurar fail2ban es un gran paso, pero no te detengas aquí. Te recomiendo implementar estas buenas prácticas:

  1. Usa claves SSH: Desactiva el acceso por contraseña al SSH y usa claves criptográficas. Esto elimina casi por completo el riesgo de fuerza bruta en SSH.
  2. Cambia el puerto SSH: Si es posible, cambia el puerto 22 por otro no estándar. Reduce drásticamente los intentos automatizados.
  3. Mantén todo actualizado: Tanto el sistema operativo como las aplicaciones. Ejecuta sudo apt update && sudo apt upgrade (o el equivalente en tu sistema) semanalmente.
  4. Activa 2FA en Syspanel: Nuestro panel soporta autenticación de dos factores. Actívala para añadir una capa extra de protección a tu administración.
  5. Monitorea los logs: Revisa periódicamente los archivos de log y el estado de fail2ban para detectar patrones de ataque inusuales.

[TIP]
Puedes crear una tarea cron para que te envíe un resumen diario de las IPs bloqueadas por fail2ban. Un ejemplo sería: 0 8 * * * fail2ban-client status | mail -s "Resumen fail2ban" tu@correo.com.


Conclusión

Proteger tu servidor contra ataques de fuerza bruta es una tarea fundamental, y fail2ban es una herramienta imprescindible para ello. Al configurarlo en Syspanel no solo proteges tu panel de administración (accesible por el puerto 2106), sino también el resto de servicios críticos como SSH, correo y web.

Con los pasos que has aprendido hoy, tu servidor está mucho más seguro. Recuerda que la seguridad es un proceso continuo, no un destino. Mantente al día con las actualizaciones, revisa los logs y no d

¿Necesitas ayuda?Son dos de nuestros técnicos, Agustín y Mikel, y están disponibles para resolver cualquier problema.

Hablar con ellos ahora
Agustín y Mikel