Volver al blog
VPS y LinuxFail2banVPS LinuxSeguridad SSHfuerza bruta

Fail2ban: Cómo proteger tu VPS contra ataques de fuerza bruta

Los bots intentan acceder a servidores con IP públicas todos los días. con el Fail2ban, bloquea automáticamente las IP con muchos errores de inicio de sesión y agrega una capa práctica de defensa a SSH.

Publicado en Matheus Henrique12 minutos de lectura

Resumen rápido

Qué le hace el Fail2ban al VPS

El Fail2ban monitorea los archivos de registro del sistema, identifica patrones sospechosos, como múltiples intentos fallidos de inicio de sesión en poco tiempo, y prohíbe la IP de origen utilizando el firewall del servidor. En la práctica, reduce en gran medida los ataques automatizados de fuerza bruta contra SSH.

Servicio principal
sshd
Configuración
cárcel.local
prueba
cliente-fail2ban

Requisitos previos

  • Un VPS con Ubuntu, Debian, Rocky Linux, AlmaLinux, CentOS, RHEL o distribución similar.
  • Acceso de usuario root o privilegiado sudo.
  • Firewall básico configurado como UFW, iptables o nftables. Es opcional, pero recomendado.

paso a paso

  1. 01

    Instale el Fail2ban

    En distribuciones basadas en Debian o Ubuntu, actualice los paquetes e instale el servicio:

    sudo apt update
    sudo apt install fail2ban -y

    En Rocky Linux, AlmaLinux, CentOS o RHEL, habilite el repositorio EPEL cuando sea necesario e instale:

    sudo dnf install epel-release -y
    sudo dnf install fail2ban -y
  2. 02

    Habilitar e iniciar el servicio.

    Después de la instalación, deje que el Fail2ban inicie el sistema y verifique el estado:

    sudo systemctl enable fail2ban
    sudo systemctl start fail2ban
    sudo systemctl status fail2ban
  3. 03

    Utilice el archivo jail.local

    el archivo jail.confEs el paquete predeterminado y puede cambiar en las actualizaciones. Su configuración debe estar enjail.local.

    sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
    sudo nano /etc/fail2ban/jail.local
  4. 04

    Configurar límites maestros

    en la sección [DEFAULT], ajuste el tiempo de prohibición, la ventana de análisis, los intentos permitidos y las IP ignoradas:

    [DEFAULT]
    # Tempo que o IP fica banido. 3600 = 1 hora
    bantime = 3600
    
    # Janela de tempo para contar tentativas falhas
    findtime = 600
    
    # Tentativas falhas antes do banimento
    maxretry = 5
    
    # IPs que nunca devem ser banidos
    ignoreip = 127.0.0.1/8 ::1

    Si tienes una IP fija en casa o en el trabajo, agrega esa IP aignoreippara evitar bloqueos accidentales.

  5. 05

    Habilitar cárcel SSH

    todavía en jail.local, busca la sección [sshd]y dejar la protección activa:

    [sshd]
    enabled = true
    port = ssh
    filter = sshd
    logpath = /var/log/auth.log
    maxretry = 5
    bantime = 3600

    Si SSH usa un puerto personalizado, cambieport = ssha través del puerto correcto. En sistemas tipo RHEL, confirme que el registro esté/var/log/secure.

  6. 06

    Reinicie y pruebe el Fail2ban

    Reinicie el servicio y valide que el jail SSH esté activo:

    sudo systemctl restart fail2ban
    sudo fail2ban-client status sshd

    La salida debería mostrar la cárcel. sshd, el archivo de registro monitoreado y la lista de IP actualmente prohibidas.

Comandos cotidianos útiles

Ver todas las cárceles activas

sudo fail2ban-client status

Ver IP prohibidas en SSH

sudo fail2ban-client status sshd

Desbanear o prohibir manualmente una IP

sudo fail2ban-client set sshd unbanip 123.45.67.89
sudo fail2ban-client set sshd banip 123.45.67.89

Supervise los registros en tiempo real

sudo tail -f /var/log/fail2ban.log

Asegurar otros servicios

El Fail2ban también puede proteger Nginx, Apache, Postfix, WordPress y otros servicios. La mayoría de los filtros ya preparados están en/etc/fail2ban/filter.d/.

[nginx-http-auth]
enabled = true
filter = nginx-http-auth
logpath = /var/log/nginx/error.log

[nginx-limit-req]
enabled = true
filter = nginx-limit-req
logpath = /var/log/nginx/error.log

[postfix]
enabled = true
filter = postfix
logpath = /var/log/mail.log

Buenas practicas de seguridad

  • Utilice la clave SSH: Fail2ban reduce los ataques, pero el inicio de sesión con clave pública es una capa más segura que la contraseña.
  • Aplicar prohibición progresiva: en versiones compatibles, utilice bantime.increment = true para reincidentes.
  • Revisar registros: rastrear patrones de ataque para ajustar maxretry e findtime.
  • No dependas de una sola herramienta: Combine Fail2ban con firewall, actualizaciones y buenos permisos en el servidor.

Errores comunes al configurar Fail2ban

  • Editar jail.conf: preferir jail.local para evitar perder cambios en las actualizaciones.
  • Usando una ruta de registro incorrecta: Confirma que tu distribución utiliza /var/log/auth.log o /var/log/secure.
  • Omita su IP fija: Si es posible, coloque su IP de confianza. ignoreip.
  • No reinicie el servicio: Después de editar la configuración, ejecute sudo systemctl restart fail2ban.

Preguntas frecuentes

¿Fail2ban reemplaza el firewall en VPS?

No. El Fail2ban es una capa automática de protección contra intentos repetidos de inicio de sesión o abuso. Debe usarse junto con firewall, autenticación de clave SSH y actualizaciones periódicas.

¿Puedo bloquearme accidentalmente el acceso a Fail2ban?

Sí, especialmente si te equivocas varias veces con la contraseña en SSH. Si tiene una IP fija, agréguela a ignoreip para reducir este riesgo.

¿Qué registro utiliza el Fail2ban para proteger SSH?

En Ubuntu y Debian, normalmente es /var/log/auth.log. En distribuciones como Rocky Linux, AlmaLinux, CentOS y RHEL, el registro de autenticación normalmente se encuentra en /var/log/secure.

¿Fail2ban solo protege SSH?

No. También puede proteger Nginx, Apache, Postfix, WordPress y otros servicios siempre que haya un filtro compatible y una ruta de registro correcta.

Conclusión

Fail2ban es liviano, gratuito y muy eficiente para mitigar ataques automatizados de fuerza bruta en VPS. En tan solo unos minutos, puede agregar defensa automática a SSH y obtener más control sobre intentos de acceso sospechosos.

Como siguiente paso, configure también el firewall, la autenticación de clave pública SSH y una rutina de actualización del sistema.

BedHosting LTDA | CNPJ: 60.677.890/0001-00 | BedHosting.com.br