Cómo detectar y mitigar ataques de fuerza bruta en SSH
Los ataques de fuerza bruta son intentos automatizados y repetitivos para adivinar contraseñas de usuarios a través del servicio SSH (Secure Shell). Este tipo de ataque aprovecha configuraciones débiles o credenciales predecibles, y puede comprometer por completo un servidor si no se aplican medidas de protección adecuadas.
Revisar intentos de acceso
El primer paso para mitigar un ataque de fuerza bruta es detectar los intentos fallidos de autenticación. El log del sistema registra estos eventos en /var/log/auth.log (en distribuciones basadas en Debian) o /var/log/secure (en Red Hat y derivados).
Para listar los intentos fallidos puedes usar:
|
|
Este comando muestra líneas con información sobre la IP origen, el usuario objetivo y la hora del intento. También puedes contar el número de ataques por dirección IP:
|
|
Este análisis permite identificar patrones de ataque y decidir si es necesario bloquear direcciones IP manualmente mediante iptables, ufw, o herramientas de detección automática.
Configurar fail2ban
Fail2ban es una herramienta que analiza los logs del sistema y bloquea automáticamente las direcciones IP que muestran un comportamiento sospechoso (por ejemplo, múltiples intentos de login fallidos en poco tiempo).
Para instalar y habilitar fail2ban:
|
|
Una vez instalado, puedes crear una configuración personalizada en /etc/fail2ban/jail.local:
|
|
En este ejemplo:
- maxretry define el número máximo de intentos fallidos antes del bloqueo.
- bantime indica el tiempo (en segundos) que la IP permanecerá bloqueada.
- findtime establece el periodo de análisis para esos intentos.
Para verificar que fail2ban está funcionando correctamente:
|
|
Este comando muestra cuántas IPs han sido bloqueadas y cuáles siguen activas.
Ajustar configuración de SSH
Una configuración segura del demonio SSH (sshd) es esencial para reducir la superficie de ataque. Edita el archivo /etc/ssh/sshd_config y aplica los siguientes ajustes:
- Cambiar el puerto por defecto:
|
|
Esto reduce los intentos automatizados dirigidos al puerto 22.
- Deshabilitar el acceso directo como root:
|
|
Evita que un atacante intente adivinar la contraseña del usuario root directamente.
- Usar autenticación por claves públicas en lugar de contraseñas:
|
|
Las claves SSH utilizan criptografía asimétrica (RSA, Ed25519 o ECDSA) y son prácticamente imposibles de forzar por métodos de fuerza bruta.
- Limitar usuarios permitidos:
|
|
Solo los usuarios listados podrán autenticarse vía SSH.
- Activar logs detallados:
|
|
Esto facilita auditorías y análisis de incidentes.
Una vez realizados los cambios, recarga el servicio:
|
|
Monitoreo continuo y alertas
Además de fail2ban, es recomendable implementar monitoreo continuo mediante herramientas como:
- OSSEC o Wazuh: detección de intrusiones y correlación de eventos.
- Prometheus + Grafana: visualización de métricas de intentos SSH.
- Syslog remoto o SIEM (Security Information and Event Management) para correlacionar eventos entre múltiples servidores.
Conclusión
La protección de servicios SSH es un pilar esencial de la seguridad en servidores Linux. Detectar intentos de fuerza bruta, aplicar reglas de bloqueo automático con fail2ban y endurecer la configuración de SSH son pasos críticos para minimizar riesgos.
.> Estas medidas reducen significativamente el riesgo de ataques automatizados y mejoran la resiliencia general de tu infraestructura.