bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Configuración de Fail2Ban en un

calendar_month Aug 03, 2026 schedule 17 min de lectura visibility 37 vistas
Настройка Fail2Ban на VPS: автоматическая защита от брутфорс-атак
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Configuración de Fail2Ban en un VPS: protección automática contra ataques de fuerza bruta

TL;DR

En esta guía, configuraremos Fail2Ban paso a paso en su VPS para la protección automática contra ataques de fuerza bruta en varios servicios, como SSH, servidores web (Nginx/Apache), servicios de correo y otros. Aprenderá a instalar, configurar y verificar el funcionamiento de Fail2Ban, mejorando significativamente la seguridad de su servidor y previniendo el acceso no autorizado.

  • Bloqueo automático de atacantes por dirección IP basado en el análisis de registros.
  • Protección de servicios clave: SSH, Nginx, Apache, Postfix, contenedores Docker.
  • Configuración detallada de reglas (jail), tiempo de bloqueo y condiciones de activación.
  • Reducción de la carga del servidor y mejora de su estabilidad al cortar el tráfico malicioso.
  • Instrucciones paso a paso con comandos actualizados y ejemplos de configuración para 2026.
  • La guía incluye secciones sobre preparación del servidor, instalación, configuración, mantenimiento y resolución de problemas.

Qué configuramos y por qué

Diagrama: Qué configuramos y por qué
Diagrama: Qué configuramos y por qué

En la internet moderna, su servidor está constantemente expuesto a intentos de acceso no autorizado. Una de las amenazas más comunes son los ataques de fuerza bruta, en los que los atacantes intentan adivinar las contraseñas de sus servicios (por ejemplo, SSH, FTP, paneles de control web) mediante la prueba repetida de combinaciones. Estos ataques no solo representan una amenaza para la seguridad, sino que también pueden sobrecargar significativamente los recursos del servidor, ralentizando su funcionamiento o incluso dejándolo inaccesible.

Configuraremos Fail2Ban, una potente herramienta para la protección automática contra este tipo de ataques. Fail2Ban escanea los archivos de registro de varios servicios (SSH, Apache, Nginx, Postfix, etc.) en busca de entradas sospechosas que indiquen intentos de inicio de sesión con credenciales incorrectas. Al detectar varios intentos fallidos desde una misma dirección IP en un período determinado, Fail2Ban bloquea automáticamente esa dirección IP por un tiempo establecido, utilizando reglas de firewall (por ejemplo, a través de iptables o ufw).

Como resultado de la configuración, obtendrá un servidor significativamente más seguro y estable. Fail2Ban funcionará en segundo plano, monitoreando la actividad las 24 horas del día y frustrando automáticamente los intentos de intrusión. Esto le liberará de la monitorización manual de registros y del bloqueo constante de direcciones IP sospechosas, permitiéndole concentrarse en sus tareas principales.

Alternativas: Cloud-managed vs Self-hosted

Para muchas tareas, existen soluciones gestionadas en la nube (cloud-managed) y la opción de despliegue propio (self-hosted) en un VPS. Por ejemplo, para alojar sitios web se pueden utilizar plataformas SaaS o servicios PaaS, y para bases de datos, bases de datos en la nube gestionadas. Sin embargo, cuando se trata de flexibilidad total, control sobre los datos y optimización de costos, las soluciones self-hosted en un VPS a menudo resultan preferibles.

  • Control total: Usted controla completamente el sistema operativo, el software instalado y las configuraciones. Esto es crítico para requisitos específicos de seguridad, rendimiento o compatibilidad.
  • Eficiencia económica: Para muchas tareas, un VPS puede ser significativamente más económico a largo plazo en comparación con las facturas crecientes de los servicios en la nube, especialmente con una carga de trabajo estable.
  • Confidencialidad: Usted aloja sus datos en su propio servidor, lo cual puede ser importante para proyectos con altos requisitos de privacidad o cumplimiento normativo.
  • Aprendizaje y experiencia: Configurar su propio servidor es una excelente manera de profundizar los conocimientos técnicos, lo cual es útil para desarrolladores y administradores de sistemas.

La configuración de Fail2Ban es uno de los pasos fundamentales para garantizar la seguridad de cualquier solución self-hosted en un VPS, complementando medidas estándar como el uso de claves SSH y contraseñas robustas.

¿Qué configuración de VPS se necesita para esta tarea?

Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?
Diagrama: ¿Qué configuración de VPS se necesita para esta tarea?

Fail2Ban es una aplicación bastante ligera y no requiere recursos significativos. La carga principal dependerá del número de servicios protegidos, el volumen de registros que generen y la intensidad de los ataques. Sin embargo, para un funcionamiento cómodo y la posibilidad de alojar otros servicios en el mismo VPS, se recomienda la siguiente configuración mínima:

  • CPU: 1 núcleo. Los procesadores modernos con una frecuencia de reloj de 2.0 GHz o superior serán más que suficientes.
  • RAM: 1-2 GB. Fail2Ban consume desde unas pocas decenas hasta 100-200 MB de RAM, dependiendo del número de "jails" activas y el volumen de registros procesados. Se necesitará memoria adicional para el sistema operativo y sus otros servicios.
  • Disco: 20-40 GB NVMe/SSD. Las unidades NVMe o SSD son significativamente más rápidas que los HDD tradicionales, lo cual es importante para el rápido funcionamiento del sistema operativo y el acceso a los registros. 20 GB son suficientes para el SO y Fail2Ban, pero 40 GB proporcionarán espacio adicional para registros y otras aplicaciones.
  • Red: 100 Mbps o 1 Gbps. Un canal estable con buen ancho de banda es importante para el funcionamiento general del servidor, pero para Fail2Ban es más crítica la estabilidad que la velocidad pura.

Para la mayoría de los escenarios, donde se planea alojar varios sitios web, un servidor de correo o contenedores ligeros en un VPS, el plan óptimo sería uno con 2 núcleos de CPU, 4 GB de RAM y 80 GB de NVMe/SSD. Esto garantizará un margen suficiente de rendimiento y estabilidad.

Puede considerar un VPS con las características mencionadas para alojar su proyecto. Lo principal es asegurarse de que el proveedor ofrezca una infraestructura y soporte fiables.

Cuándo se necesita un dedicado, no un VPS

Un servidor dedicado (dedicated server) debe considerarse si:

  • Necesita el máximo rendimiento y estabilidad sin ningún tipo de "vecindad" con otros usuarios.
  • Su proyecto genera una carga muy alta (por ejemplo, un gran servidor de juegos, un SaaS de alta carga con miles de usuarios, procesamiento de grandes volúmenes de datos).
  • Se requiere hardware o configuración específica, no disponible en un VPS.
  • Se necesita máxima aislamiento y cumplimiento de estrictos requisitos de seguridad/regulación, donde la virtualización podría ser un riesgo potencial.

Para la tarea de protección contra ataques de fuerza bruta en servicios típicos, un VPS será más que suficiente. La transición a un dedicado se justifica si el proyecto que está protegiendo ya ha superado las capacidades de un VPS.

Ubicación: qué factores influyen

La elección de la ubicación del VPS influye en varios aspectos clave:

  • Latencia: Cuanto más cerca esté el servidor de su audiencia objetivo o de usted, menor será la latencia. Esto es crítico para aplicaciones interactivas, servidores de juegos y sitios web, donde cada milisegundo cuenta.
  • Aspectos legales: La legislación del país donde se encuentra el servidor determina las reglas de procesamiento de datos, la confidencialidad y otros aspectos legales.
  • Disponibilidad: Algunas regiones pueden tener mejor conectividad con ciertas partes del mundo.

Para la protección contra ataques de Fail2Ban, la ubicación no juega un papel directo, pero para el rendimiento general de sus servicios, elija una ubicación lo más cercana posible a sus usuarios principales.

Preparación del servidor

Diagrama: Preparación del servidor
Diagrama: Preparación del servidor

Antes de proceder con la instalación de Fail2Ban, es necesario realizar una configuración básica de un VPS nuevo. Estos pasos mejorarán la seguridad y la comodidad de la administración.

1. Conexión por SSH

Conéctese a su VPS como usuario root, utilizando la dirección IP proporcionada por su proveedor de alojamiento:


ssh root@ВАШ_IP_АДРЕС

Reemplace ВАШ_IP_АДРЕС con la IP real de su servidor.

2. Actualización del sistema

Siempre comience actualizando el gestor de paquetes y los paquetes instalados a las últimas versiones. Esto garantiza que tendrá los parches de seguridad más recientes y versiones estables de las bibliotecas. Para sistemas basados en Debian/Ubuntu (válido para 2026):


sudo apt update && sudo apt upgrade -y

Este comando actualiza la lista de paquetes disponibles y luego instala todas las actualizaciones disponibles sin solicitar confirmación.

3. Creación de un nuevo usuario con permisos sudo

Trabajar como root no es seguro. Crearemos un nuevo usuario y le daremos permisos sudo:


adduser ваш_пользователь # Crea un nuevo usuario
usermod -aG sudo ваш_пользователь # Añade el usuario al grupo sudo

Reemplace ваш_пользователь con el nombre deseado. Después, establezca una contraseña segura para el nuevo usuario.

4. Configuración de claves SSH para el nuevo usuario

El uso de claves SSH en lugar de una contraseña mejora significativamente la seguridad. Primero, genere las claves en su máquina local si no las tiene:


ssh-keygen -t ed25519 -C "ваша_почта@example.com"

Luego, copie la clave pública al servidor:


ssh-copy-id ваш_пользователь@ВАШ_IP_АДРЕС

Ahora puede conectarse como ваш_пользователь:


ssh ваш_пользователь@ВАШ_IP_АДРЕС

5. Deshabilitar el inicio de sesión SSH para root y por contraseña

Después de iniciar sesión con éxito con el nuevo usuario y la clave SSH, deshabilite el inicio de sesión para root y la autenticación por contraseña en el servidor SSH. Esto aumentará significativamente la seguridad:


sudo nano /etc/ssh/sshd_config

Busque y modifique las siguientes líneas (o añádalas si no existen):


PermitRootLogin no
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Guarde los cambios (Ctrl+X, Y, Enter) y reinicie el servicio SSH:


sudo systemctl restart sshd

IMPORTANTE: ¡Antes de deshabilitar, asegúrese de poder iniciar sesión con el nuevo usuario y la clave SSH! Mantenga abierta la sesión actual de root hasta que haya verificado el inicio de sesión a través del nuevo usuario.

6. Configuración del firewall (UFW)

El firewall es necesario para restringir el acceso a los puertos del servidor. UFW (Uncomplicated Firewall) es fácil de configurar. Instálelo si aún no está instalado:


sudo apt install ufw -y # Instalamos UFW
sudo ufw allow OpenSSH # Permitimos SSH (puerto 22 por defecto)
sudo ufw allow 80/tcp # Permitimos HTTP
sudo ufw allow 443/tcp # Permitimos HTTPS
sudo ufw enable # Habilitamos el firewall
sudo ufw status # Verificamos el estado

Asegúrese de permitir SSH, de lo contrario perderá el acceso al servidor después de habilitar UFW. Añada también reglas para cualquier otro servicio que planee utilizar (por ejemplo, 25/tcp para SMTP, 53/udp para DNS, etc.).

Instalación de software — paso a paso

Instalación de software — paso a paso

Diagrama: Instalación de software — paso a paso
Diagrama: Instalación de software — paso a paso

Ahora que el servidor está preparado, pasemos a la instalación de Fail2Ban. Utilizaremos los repositorios oficiales para Debian/Ubuntu, lo que garantiza estabilidad y facilidad de actualizaciones.

1. Instalación de Fail2Ban

Fail2Ban está disponible en los repositorios estándar de la mayoría de las distribuciones de Linux. Para Debian/Ubuntu (válido para 2026, versión Fail2Ban 1.0+):


sudo apt update # Actualizamos la lista de paquetes
sudo apt install fail2ban -y # Instalamos Fail2Ban

Después de la instalación, Fail2Ban se iniciará automáticamente y se habilitará al arrancar el sistema.

2. Verificación del estado de Fail2Ban

Asegúrese de que el servicio Fail2Ban esté iniciado y funcionando:


sudo systemctl status fail2ban # Verificamos el estado del servicio

La salida debería mostrar active (running). Si no es así, intente iniciarlo manualmente:


sudo systemctl start fail2ban # Iniciamos el servicio
sudo systemctl enable fail2ban # Habilitamos el inicio automático al arrancar

3. Instalación de herramientas adicionales (opcional, pero recomendado)

Para un monitoreo de logs más conveniente y para trabajar con archivos de texto, pueden ser útiles htop y nano (si no están instalados):


sudo apt install htop nano -y

htop es un gestor de procesos interactivo mejorado, y nano es un editor de texto sencillo.

4. Resumen de la estructura de Fail2Ban

Fail2Ban almacena sus configuraciones en el directorio /etc/fail2ban/. Los archivos principales son:

  • jail.conf: El archivo de configuración principal con ajustes predeterminados. No debe modificarse directamente.
  • jail.d/: Directorio para configuraciones personalizadas. Aquí crearemos nuestros archivos .conf.
  • jail.local: Archivo de usuario que sobrescribe la configuración de jail.conf. Se recomienda usarlo o los archivos en jail.d/.
  • filter.d/: Contiene filtros predefinidos para varios servicios.
  • action.d/: Contiene acciones predefinidas (por ejemplo, bloqueo a través de iptables).

Trabajaremos con el archivo jail.local o crearemos nuevos archivos en jail.d/ para no perder los cambios al actualizar Fail2Ban.

Configuración

Diagrama: Configuración
Diagrama: Configuración

La configuración principal de Fail2Ban se realiza a través del archivo jail.local. Copiaremos la configuración base y luego la modificaremos según nuestras necesidades.

1. Creación de jail.local

Copie el archivo jail.conf a jail.local para comenzar la configuración:


sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Ahora, todos los cambios se realizarán en jail.local.

2. Configuración básica de jail.local

Abra el archivo jail.local para editarlo:


sudo nano /etc/fail2ban/jail.local

Al principio del archivo, encontrará la sección [DEFAULT]. Aquí puede establecer parámetros globales. Configuraciones recomendadas:


[DEFAULT]
# Tiempo durante el cual se bloquea una dirección IP (en segundos). 1 hora.
bantime = 3600

# Tiempo durante el cual se cuentan los intentos (en segundos). 10 minutos.
findtime = 600

# Número máximo de intentos fallidos antes del bloqueo.
maxretry = 5

# Direcciones IP que nunca serán bloqueadas (su IP, redes locales).
# Se pueden especificar varias, separadas por espacios.
ignoreip = 127.0.0.1/8 ::1 192.168.0.0/16 172.16.0.0/12 10.0.0.0/8

# Acción predeterminada al bloquear. 'iptables-multiport' - bloquea la IP
# en todos los puertos especificados en la jail.
banaction = iptables-multiport

# Notificaciones por correo (opcional, requiere configuración de servidor de correo)
# destemail = [email protected]
# sendername = Fail2Ban
# mta = sendmail
# action = %(action_mw)s # Envía un correo con información Whois

Explicaciones:

  • bantime: Establece la duración del bloqueo de la dirección IP. 3600 segundos = 1 hora. Se puede aumentar a 86400 (24 horas) o incluso -1 para un bloqueo permanente (use con precaución).
  • findtime: Período de tiempo durante el cual Fail2Ban rastrea los intentos fallidos. Si ocurren maxretry intentos dentro de findtime, la IP será bloqueada.
  • maxretry: Número de intentos de inicio de sesión fallidos después de los cuales se bloqueará la dirección IP.
  • ignoreip: Lista de direcciones IP o subredes que nunca serán bloqueadas. ¡Asegúrese de añadir su dirección IP estática aquí!
  • banaction: Acción que se ejecutará para bloquear la IP. iptables-multiport es estándar y eficaz.

3. Configuración de "cárceles" (jails)

Debajo de la sección [DEFAULT], hay secciones individuales para cada servicio, llamadas "cárceles" (jails). Por defecto, muchas de ellas están deshabilitadas. Para habilitar la protección para un servicio, establezca enabled = true.

3.1. Protección SSH

Esta es una de las protecciones más importantes. Encuentre la sección [sshd] y habilítela:


[sshd]
enabled = true
port = ssh # o su puerto SSH personalizado, si lo cambió (por ejemplo, 2222)
filter = sshd
logpath = /var/log/auth.log # o /var/log/secure para CentOS/RHEL
maxretry = 3 # Se puede reducir para SSH
bantime = 86400 # Bloquear SSH durante 24 horas

Si ha cambiado el puerto SSH estándar (de 22 a otro), no olvide especificarlo en el parámetro port. Se recomienda utilizar un tiempo de bloqueo más prolongado (por ejemplo, 24 horas) para SSH, ya que los intentos de fuerza bruta a menudo provienen de bots.

3.2. Protección Nginx (HTTP/HTTPS)

Para proteger el servidor web Nginx contra ataques de autenticación (por ejemplo, en el panel /admin) o ataques tipo DoS (demasiadas solicitudes), se pueden usar los filtros nginx-http-auth y nginx-dos.

Primero, asegúrese de que Nginx registre los errores. Si usa Nginx, instálelo:


sudo apt install nginx -y

Luego, añada las siguientes secciones a jail.local:


[nginx-http-auth]
enabled = true
port = http,https
filter = nginx-http-auth
logpath = /var/log/nginx/error.log
maxretry = 6
bantime = 1200

[nginx-dos]
enabled = true
port = http,https
filter = nginx-dos
logpath = /var/log/nginx/access.log
maxretry = 300 # Por ejemplo, 300 solicitudes en 5 minutos
findtime = 300 # 5 minutos
bantime = 600 # Bloquear durante 10 minutos

Nota: Para nginx-dos, filter = nginx-dos puede no estar presente por defecto. Es posible que deba crear el archivo /etc/fail2ban/filter.d/nginx-dos.conf con el siguiente contenido:


[Definition]
failregex = ^ -."(GET|POST|HEAD).HTTP/" (403|404|401)
ignoreregex =

Este es un filtro muy simple. Se pueden encontrar filtros más complejos para Nginx en la documentación oficial de Fail2Ban o en GitHub.

3.3. Protección Postfix (SMTP)

Si utiliza Postfix para enviar correo:


[postfix]
enabled = true
port = smtp,ssmtp,submission,imap,imaps,pop3,pop3s
filter = postfix
logpath = /var/log/mail.log
maxretry = 5
bantime = 1800

4. Verificación de sintaxis y reinicio de Fail2Ban

Después de realizar todos los cambios, guarde el archivo jail.local. Antes de reiniciar el servicio, se recomienda verificar la configuración en busca de errores:


sudo fail2ban-client -d # Verifica la configuración sin aplicarla

Si no hay errores, reinicie Fail2Ban para aplicar la nueva configuración:


sudo systemctl restart fail2ban

5. Verificación del funcionamiento de Fail2Ban

Para asegurarse de que Fail2Ban funciona correctamente, puede verificar el estado de las "cárceles" activas:


sudo fail2ban-client status # Estado general de Fail2Ban
sudo fail2ban-client status sshd # Estado de una cárcel específica (por ejemplo, sshd)

La salida para sshd debería mostrar el número de direcciones IP bloqueadas, si las hubiera. Para probar, intente varias veces (más que maxretry) introducir una contraseña incorrecta al conectarse por SSH desde otra dirección IP (o desde la suya, si no está en ignoreip). Luego, verifique el estado de la cárcel sshd.


Status for jail sshd:
|- Filter
|  |- Currently failed: 0
|  |- Total failed:     5
|  - File list:        /var/log/auth.log
- Actions
   |- Currently banned: 1
   |- Total banned:     1
   `- Banned IP list:   192.168.1.100 (ejemplo de IP bloqueada)

Esto significa que Fail2Ban bloqueó con éxito la dirección IP 192.168.1.100 después de 5 intentos fallidos.

6. Integración con Docker (opcional)

Si utiliza Docker, los logs de los contenedores pueden no ser accesibles para Fail2Ban directamente desde /var/log/. Para proteger los contenedores Docker, deberá configurarlos para que emitan logs en un formato que Fail2Ban pueda entender, o utilizar soluciones especializadas. Un enfoque es configurar los contenedores Docker para usar el controlador de logs syslog o json-file y luego pasarlos a un archivo de log centralizado que Fail2Ban pueda leer. Por ejemplo, para Nginx en Docker:

Añada a docker-compose.yml para su servicio:


services:
  nginx:
    image: nginx:stable-alpine
    # ... otras configuraciones ...
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    volumes:
      - /var/log/nginx-docker:/var/log/nginx # Mapeo de logs de Nginx desde el contenedor

Luego, cambie logpath en la jail correspondiente para Nginx a /var/log/nginx-docker/error.log y /var/log/nginx-docker/access.log respectivamente.

Otra opción es usar log-driver: syslog y configurar rsyslog en el host para escribir los logs de Docker en archivos separados que Fail2Ban pueda monitorear.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

Incluso con Fail2Ban configurado, las copias de seguridad siguen siendo un elemento crítico de seguridad y tolerancia a fallos. Además, es necesario mantener el sistema regularmente.

1. Qué respaldar

Para Fail2Ban y la estabilidad general del servidor, es importante respaldar lo siguiente:

  • Archivos de configuración de Fail2Ban: /etc/fail2ban/jail.local y cualquier archivo .conf que haya creado en /etc/fail2ban/jail.d/, así como los filtros personalizados en /etc/fail2ban/filter.d/.
  • Otras configuraciones importantes: /etc/ssh/sshd_config, configuraciones del servidor web (Nginx: /etc/nginx/, Apache: /etc/apache2/), firewall (/etc/ufw/).
  • Datos de sus aplicaciones: Bases de datos, archivos de sitios web, datos de usuario, si los hubiera.

2. Script simple de copia de seguridad automática

Para crear copias de seguridad regulares, puede utilizar una combinación de rsync y cron. Para copias de seguridad más fiables e incrementales, considere herramientas como BorgBackup o Restic.

Ejemplo de un script simple para la copia de seguridad de las configuraciones de Fail2Ban y SSH:


#!/bin/bash
BACKUP_DIR="/var/backups/configs"
DATE=$(date +%Y%m%d_%H%M%S)
TAR_FILE="$BACKUP_DIR/fail2ban_configs_$DATE.tar.gz"

mkdir -p "$BACKUP_DIR"

# Создаем архив с важными конфигурациями
tar -czvf "$TAR_FILE" \
    /etc/fail2ban/jail.local \
    /etc/fail2ban/jail.d/ \
    /etc/fail2ban/filter.d/ \
    /etc/ssh/sshd_config \
    --exclude='.swp'

# Удаляем старые бэкапы (оставляем последние 7 дней)
find "$BACKUP_DIR" -type f -name "fail2ban_configs_.tar.gz" -mtime +7 -delete

echo "Backup created: $TAR_FILE"

Guarde este script como /usr/local/bin/backup_fail2ban.sh y hágalo ejecutable:


sudo chmod +x /usr/local/bin/backup_fail2ban.sh

Luego, agréguelo a cron para su ejecución diaria. Abra crontab:


sudo crontab -e

Y agregue la línea para ejecutar el script diariamente a las 3:00 de la mañana:


0 3   * /usr/local/bin/backup_fail2ban.sh > /dev/null 2>&1

3. Dónde almacenar las copias de seguridad

Nunca almacene las copias de seguridad en el mismo servidor que los datos originales. Si el servidor falla, perderá tanto los datos como las copias de seguridad. Opciones recomendadas:

  • Almacenamiento externo compatible con S3: Servicios como AWS S3, Backblaze B2, DigitalOcean Spaces u otros almacenamientos en la nube ofrecen un almacenamiento fiable y escalable.
  • VPS separado: Puede utilizar otro VPS menos potente como almacenamiento para las copias de seguridad, usando rsync a través de SSH.
  • Almacenamiento local: Para proyectos pequeños, puede utilizar un disco local en su estación de trabajo, pero esto requiere sincronización manual.

Para enviar automáticamente las copias de seguridad a S3, puede usar s3cmd o rclone.

4. Actualizaciones: Rolling vs Ventana de mantenimiento

Las actualizaciones regulares de software son críticas para la seguridad. Puede elegir una de las siguientes estrategias:

  • Actualizaciones continuas (Rolling updates): Se aplican a medida que se lanzan, generalmente para servicios no críticos. Para Fail2Ban, que no se actualiza con frecuencia, esto puede ser aceptable.
  • Ventana de mantenimiento (Maintenance window): Las actualizaciones se realizan en un momento predefinido, generalmente por la noche o los fines de semana, cuando la carga es mínima. Esto permite controlar el proceso y minimizar los riesgos.

Para Fail2Ban, es suficiente ejecutar sudo apt update && sudo apt upgrade -y una vez a la semana o una vez al mes. Siempre revise los registros después de las actualizaciones. Para Fail2Ban, también es importante asegurarse de que sus filtros estén actualizados. Revise periódicamente el repositorio oficial de Fail2Ban en GitHub para ver si hay filtros nuevos o actualizados, especialmente si utiliza servicios específicos.

Solución de problemas + Preguntas frecuentes

Esta sección contiene respuestas a preguntas frecuentes y soluciones a problemas comunes que pueden surgir al trabajar con Fail2Ban.

Fail2Ban no bloquea direcciones IP, aunque hay errores en los registros. ¿Qué debo verificar?

Asegúrese de que Fail2Ban realmente "vea" los registros. Verifique la ruta a los registros en el archivo jail.local (parámetro logpath) para la "jaula" correspondiente. Asegúrese de que el filtro (filter) esté configurado correctamente y coincida con el formato de sus registros. Puede probar el filtro manualmente con el comando fail2ban-regex /ruta/al/registro /etc/fail2ban/filter.d/su_filtro.conf. También verifique que maxretry y findtime estén configurados correctamente y que la dirección IP no esté en la lista ignoreip.

¿Cómo desbloquear una dirección IP manualmente?

Si ha bloqueado accidentalmente su dirección IP o necesita desbloquear una legítima, use el comando: sudo fail2ban-client set NOMBRE_DE_LA_JAULA unbanip DIRECCIÓN_IP. Por ejemplo, para SSH: sudo fail2ban-client set sshd unbanip 1.2.3.4. Después de esto, la dirección IP se desbloqueará inmediatamente.

¿Cómo verificar qué direcciones IP están bloqueadas?

Para ver todas las "jaulas" activas y las direcciones IP bloqueadas, use: sudo fail2ban-client status. Para ver el estado de una "jaula" específica (por ejemplo, sshd): sudo fail2ban-client status sshd. La salida mostrará una lista de las direcciones IP bloqueadas y su cantidad.

¿Qué configuración mínima de VPS es adecuada para Fail2Ban?

Para Fail2Ban en sí, es suficiente un VPS mínimo con 1 núcleo de CPU, 1 GB de RAM y 20 GB de disco NVMe/SSD. Sin embargo, si otros servicios (servidor web, base de datos, correo) también se ejecutarán en el servidor, se recomiendan 2 núcleos de CPU, 2-4 GB de RAM y 40-80 GB de NVMe/SSD para garantizar el funcionamiento estable de todas las aplicaciones y tener recursos de sobra.

¿Qué elegir: VPS o dedicado para esta tarea?

Para configurar Fail2Ban y proteger la mayoría de los servicios típicos (varios sitios web, un servidor de correo para un equipo pequeño, un servidor de juegos para amigos), un VPS será la opción óptima y económicamente ventajosa. Un servidor dedicado solo se justifica para proyectos de alta carga que requieren el máximo rendimiento, aislamiento completo o hardware específico donde la virtualización puede no ser deseable.

Fail2Ban consume demasiados recursos. ¿Qué hacer?

Verifique qué "jaulas" están activas y con qué frecuencia se activan. Los filtros demasiado agresivos o la monitorización de archivos de registro muy grandes pueden aumentar el consumo de recursos. Intente aumentar findtime y bantime, y también disminuya maxretry para servicios menos críticos. Asegúrese de que Fail2Ban utilice el backend óptimo (por defecto auto, lo cual suele ser bueno). Si el problema radica en una gran cantidad de registros, considere la rotación de registros (logrotate) para una gestión más eficiente de los archivos.

¿Se pueden proteger los contenedores Docker con Fail2Ban?

Sí, es posible, pero requiere configuración adicional. Fail2Ban funciona con registros, por lo que los contenedores deben enviar sus registros al sistema anfitrión, donde Fail2Ban pueda leerlos. El enfoque más común es mapear los archivos de registro del contenedor al sistema anfitrión a través de volúmenes de Docker o configurar el controlador de registro de Docker en syslog para que los registros se transfieran al registro del sistema del anfitrión. Luego, Fail2Ban se configura para leer esos archivos o el registro del sistema.

¿Cómo actualizar Fail2Ban?

Para sistemas basados en Debian/Ubuntu, basta con ejecutar los comandos estándar de actualización de paquetes: sudo apt update && sudo apt upgrade -y. Fail2Ban se actualizará junto con el resto del sistema. Después de la actualización, se recomienda reiniciar el servicio sudo systemctl restart fail2ban para asegurarse de que se apliquen las nuevas versiones de los componentes.

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

¡Felicidades! Ha configurado Fail2Ban con éxito en su VPS, aumentando significativamente su resistencia a los ataques de fuerza bruta. Su servidor ahora monitorea automáticamente la actividad sospechosa y bloquea a los atacantes, liberándolo del monitoreo rutinario y permitiéndole concentrarse en el desarrollo de sus proyectos. Este es un paso fundamental para garantizar la seguridad básica de cualquier servidor autogestionado.

Los siguientes pasos para fortalecer la seguridad y optimizar su servidor pueden incluir:

  • Monitoreo y registro: Configure un sistema de registro centralizado (por ejemplo, ELK Stack o Grafana Loki) para un análisis más profundo de los eventos de seguridad y rendimiento.
  • Auditorías de seguridad regulares: Utilice herramientas de escaneo de vulnerabilidades (por ejemplo, Nessus, OpenVAS) y revise regularmente las configuraciones para asegurar el cumplimiento de las mejores prácticas.
  • Escalabilidad y alta disponibilidad: A medida que su proyecto crezca, considere la posibilidad de pasar a soluciones de clúster, equilibradores de carga y servidores de respaldo para garantizar un funcionamiento ininterrumpido.
  • Automatización del despliegue: Utilice herramientas como Ansible, Puppet o Chef para automatizar la configuración de nuevos servidores y la gestión de configuraciones, lo que ahorrará tiempo y reducirá la probabilidad de errores.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

Configuración de Fail2Ban en VPS: protección automática contra ataques de fuerza bruta
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.