33 votes

Est-il possible de faire en sorte qu'OpenSSH enregistre la clé publique utilisée pour l'authentification ?

J'ai un système de production où plusieurs personnes différentes sont autorisées à se connecter à un seul compte - le compte est pour l'application et non pour la personne, car nous n'avons pas de comptes personnels sur les serveurs de production.

À des fins d'audit, je veux pouvoir dire qui s'est connecté et à quelle heure, et comme nous utilisons des clés SSH pour nous connecter, il semble logique de suivre cela (puisqu'il n'y a pas d'autre identifiant à suivre).

Lorsque SSH authentifie un utilisateur, il enregistre le nom de l'utilisateur dans le journal de sécurité du système, mais il n'enregistre pas la clé publique autorisée qui a été utilisée lors de la connexion. Est-il possible de faire en sorte qu'OpenSSH indique également quelle clé publique a été utilisée, ou peut-être seulement le commentaire associé à cette clé ?

Le système d'exploitation utilisé est CentOS 5.6, mais j'aimerais savoir si c'est possible sur d'autres systèmes d'exploitation.

40voto

user9517 Points 113163

Si vous relancez le LogLevel a VERBOSE dans votre fichier de configuration ( /etc/sshd/sshd_config ou similaire), il enregistrera l'empreinte de la clé publique utilisée pour authentifier l'utilisateur.

LogLevel VERBOSE

Vous recevez alors des messages comme celui-ci :

Jul 19 11:23:13 centos sshd[13431]: Connection from 192.168.1.104 port 63529
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13432]: Postponed publickey for user from 192.168.1.104 port 63529 ssh2
Jul 19 11:23:13 centos sshd[13431]: Found matching RSA key: 54:a2:0a:cf:85:ef:89:96:3c:a8:93:c7:a1:30:c2:8b
Jul 19 11:23:13 centos sshd[13431]: Accepted publickey for user from 192.168.1.104 port 63529 ssh2

Vous pouvez utiliser :

 ssh-keygen -lf /path/to/public_key_file

pour obtenir l'empreinte d'une clé publique particulière.

3voto

inazaruk Points 37760

Si vos collaborateurs utilisent ssh-agent, vous pouvez mettre ceci dans votre .bashrc :

SSH_KEY_NAME=$(ssh-add -L | cut -d' ' -f 3 || 'unknown')
if [[ ! $SSH_KEY_NAME ]]; then SSH_KEY_NAME="no agent"; fi
echo `/bin/date` $SSH_KEY_NAME >> ~/.login.log

0voto

Sven Points 95985

Essayez de jouer avec l'option LogLevel paramètre dans sshd_config . Pour plus de détails, voir man sshd_config

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X