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.
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
- 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 -yEn 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 - 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 - 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 - 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 ::1Si tienes una IP fija en casa o en el trabajo, agrega esa IP a
ignoreippara evitar bloqueos accidentales. - 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 = 3600Si SSH usa un puerto personalizado, cambie
port = ssha través del puerto correcto. En sistemas tipo RHEL, confirme que el registro esté/var/log/secure. - 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 sshdLa 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 statusVer IP prohibidas en SSH
sudo fail2ban-client status sshdDesbanear o prohibir manualmente una IP
sudo fail2ban-client set sshd unbanip 123.45.67.89
sudo fail2ban-client set sshd banip 123.45.67.89Supervise los registros en tiempo real
sudo tail -f /var/log/fail2ban.logAsegurar 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.logBuenas 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 = truepara reincidentes. - Revisar registros: rastrear patrones de ataque para ajustar
maxretryefindtime. - 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.localpara evitar perder cambios en las actualizaciones. - Usando una ruta de registro incorrecta: Confirma que tu distribución utiliza
/var/log/auth.logo/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
