Cómo enumerar inicios de sesión SSH fallidos en Linux
«No hay blanco o negro, solo hay tonos de gris. No podemos decir si es bueno o malo».
Y a veces necesitamos profundizar en los tonos de gris y buscar problemas antes de que ocurran. Una de estas comprobaciones podría ser una búsqueda de intentos de inicio de sesión SSH fallidos. Afortunadamente, Ubuntu viene con una solución que es lo suficientemente simple pero lo suficientemente poderosa para detectar la mayoría de los casos en los que alguien permite contraseñas débiles y ataques de fuerza bruta.
Cada intento de iniciar sesión en el servidor SSH se registra en un archivo llamado auth.log ubicado en /var/log/auth.log por el demonio rsyslog.
Los administradores pueden revisar los registros para ver si hay tráfico entrante extraño. Un archivo de registro contiene mucha información en texto sin formato, pero no es fácil leer todo el resultado. Necesitamos aprender a usar grep para buscar en el archivo de registro y, en este ejemplo, nos centraremos en los intentos fallidos.
Instalación de OpenSSH
OpenSSH es un servicio que proporciona acceso remoto seguro a los sistemas en forma de un protocolo de capa de aplicación, también incluye el programa de línea de comandos scp. Inicie sesión como usuario raíz o cambie a un usuario con privilegios sudo, luego use el siguiente comando para instalar OpenSSH:
sudo apt-get update
sudo apt-get install openssh-server -y
Este comando debería instalar OpenSSH y sus dependencias. Debería ver que también se están instalando paquetes adicionales porque OpenSSH requiere bastantes para funcionar correctamente.
Después de la instalación, puede habilitar ssh escribiendo el siguiente comando en la ventana del terminal:
sudo systemctl enable ssh
Debería ver un resultado similar a la imagen a continuación en la ventana de su terminal si el comando fue exitoso:
Los siguientes comandos se pueden usar para detener SSH en máquinas Ubuntu en caso de que desee deshabilitarlo:
sudo systemctl stop ssh
Se puede iniciar de nuevo ejecutando:
sudo systemctl start ssh
Para verificar si el servidor SSH se está ejecutando, puede usar el siguiente comando:
sudo systemctl status ssh
Debería ver una salida similar en su terminal:
En la captura de pantalla anterior, puede ver que el servidor SSH ya se está ejecutando y habilitado, lo que significa que se ejecutará en el momento del arranque.
Cómo encontrar todos los intentos fallidos de inicio de sesión SSH
Un intento de inicio de sesión fallido puede deberse a una variedad de razones y no solo a un intento de inicio de sesión automatizado. Un intento de inicio de sesión fallido puede ocurrir cuando:
- Un usuario puede escribir mal su contraseña.
- Intentando usar una contraseña incorrecta para iniciar sesión.
- El servidor está bajo un ataque de fuerza bruta y los piratas informáticos intentan adivinar la contraseña utilizando scripts automatizados.
La forma más fácil de enumerar todos los intentos de inicio de sesión SSH fallidos es usar el siguiente comando:
grep "Failed password" /var/log/auth.log
Debería ver un resultado similar en su terminal:
Los siguientes comandos se pueden usar para mostrar inicios de sesión SSH fallidos en CentOS o RHEL en una versión ligeramente modificada del comando anterior:
grep "Failed" /var/log/secure
grep "authentication failure" /var/log/secure
Alternativamente, podemos ver los registros usando el demonio Systemd con el comando journalctl:
journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure"
Para mostrar una lista de todas las direcciones IP que son responsables de los intentos de inicio de sesión SSH fallidos, con el número de intentos al lado, puede usar este comando:
grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr
Es inevitable que de vez en cuando se produzca un intento fallido de inicio de sesión. Sin embargo, sigue siendo crucial identificar los inicios de sesión fallidos en su servidor. Es importante identificar las direcciones IP que llegan con frecuencia a su servidor SSH y tomar las medidas necesarias.
Conclusión
En esta guía, hemos cubierto cómo encontrar intentos de inicio de sesión SSH fallidos en una máquina Linux. También aprendimos un enfoque diferente que involucra el uso del comando journalctl. Esperamos que este artículo le haya resultado útil. No dude en enviar sus comentarios o cualquier pregunta que pueda tener en la sección de comentarios.