Registrar accesos SSH mediante el fingerprint de la llave de usuario

En entornos donde varios usuarios acceden a una misma cuenta con su juego de claves SSH particular, es especialmente importante poder registrar quienes y desde donde acceden. Por defecto solo se tiene información sobre qué ip a accedido a una determinada cuenta del sistema mediante llave SSH, pero no se sabe qué llave ha utilizado. Por ejemplo para descubrir qué llave privada ha sido vulnerada.

Para saber qué clave SSH establece una sesión SSH con el servidor, es necesario realizar este cambio en la configuración del servidor sshd para utilizar unos logs algo más informativos. De esta manera se tiene constancia de qué clave accede (mediante su fingerprint) y desde donde.

Editar el fichero de configuración de sshd /etc/ssh/sshd_config.

#LogLevel INFO
LogLevel VERBOSE

Logs de SSH con LogLevel INFO.

May  1 21:45:23 nagios sshd[20578]: Accepted publickey for root from 97.278.213.139 port 63181 ssh2

Logs de SSH con LogLevel VERBOSE.

May  3 03:16:53 nagios sshd[12951]: Found matching RSA key: dd:fa:64:0d:3e:be:a3:b0:50:af:80:66:8e:2e:2a:a2
May  3 03:16:53 nagios sshd[12951]: Accepted publickey for root from 97.278.213.139 port 61515 ssh2

NOTA: Usando “PermitUserEnvironment” en SSHD y configurando a medida las variables de entorno de los usuarios que acceden, se podría conseguir un resultado similar e incluso más informativo y personalizable. Pero el uso de variables de entorno con ssh, el cual viene denegado por defecto, tiene ciertos riesgos de seguridad (variable LD_PRELOAD) y no se recomienda su uso.