Hoy en día encontramos diferentes formas para conectarnos a nuestros servidores de forma segura para realizar tareas de mantenimiento y soporte o bien para comprobar el estado del mismo. Debido a que no siempre podemos estar directamente en la ubicación física de este la forma más práctica y común para acceder al servidor, es remotamente posible a través del protocolo SSH.
SSH (Secure SHell) se ha desarrollado como un protocolo que permite establecer conexiones entre dos sistemas basándose en la arquitectura cliente/servidor facilitando que como administradores o usuarios podamos conectarnos remotamente al servidor o equipo, una de las ventajas más notables de SSH es que se encarga de encriptar la sesión de conexión para aumentar la seguridad al impedir que los atacantes puedan acceder a las contraseñas no encriptadas.
Ahora, cada inicio de sesión o intento de acceso al servidor usando SSH se registra y almacena en un archivo de registro por el demonio rsyslog en Linux de modo que será posible acceder a este y validar en detalle quién, cuándo y el estado del inicio de sesión permitiendo una tarea de auditoría y control mucho más completa.
Solvetic te explicará en este tutorial la forma para visualizar este archivo y determinar quién ha intentado o ha iniciado sesión en el equipo.
1. Instalar SSH en Linux
Para este ejemplo hemos usado Ubuntu 19 y CentOS 8, recordemos que al acceder mediante SSH podremos trabajar de forma integral en el equipo:
2. Usar el comando grep para ver inicios de sesión fallidos en Linux
La forma más simple para determinar y visualizar los intentos de inicio de sesión es ejecutando lo siguiente:
grep "Failed password" /var/log/auth.log
Podemos ver detalles como:
- Usuario que intento iniciar sesión
- Dirección IP
- Puerto usado para el intento de inicio de sesión
Este mismo resultado lo encontramos con el comando cat:
cat /var/log/auth.log | grep "Failed password"
En caso de desear obtener información adicional sobre los inicios de sesión SSH fallidos en Linux debemos ejecutar lo siguiente. Como vemos los detalles son mucho más completos.
egrep "Failed|Failure" /var/log/auth.log
egrep "Failed|Failure" /var/log/secure
Vemos que los registros se guardan con detalles completos incluyendo nombres registrados de sesión (correctos o no). Otra opción para visualizar los inicios de sesión SSH fallidos en CentOS es usando alguna de las siguientes líneas:
grep "Failed" /var/log/secure grep "authentication failure" /var/log/secure
Para desplegar la lista de las direcciones IP que intentaron acceder, pero fueron intentos fallidos, debemos usar el siguiente comando:
grep "Failed password" /var/log/auth.log | awk ‘{print $11}’ | uniq -c | sort -nr
En las distribuciones de Linux más actuales (como Ubuntu 19), es posible acceder al archivo de registro de tiempo de ejecución el cual administra Systemd con el comando journalctl, si deseamos ver los registros fallidos de inicio de sesión SSH, usaremos el comando grep para filtrar los resultados así:
journalctl _SYSTEMD_UNIT=ssh.service | egrep "Failed|Failure" (Ubuntu) journalctl _SYSTEMD_UNIT=sshd.service | egrep "Failed|Failure" (RHEL, CentOS)
journalctl _SYSTEMD_UNIT=sshd.service | grep "failure" journalctl _SYSTEMD_UNIT=sshd.service | grep "Failed"
Podemos ver la forma para visualizar cada intento fallido de inicio de sesión SSH y en base a esto tomar las medidas de seguridad pertinentes para conservar la disponibilidad de los servicios.