Kann OpenSSH den öffentlichen Schlüssel protokollieren, der für die Authentifizierung verwendet wurde?


27

Ich habe ein Produktionssystem, in dem sich mehrere unterschiedliche Personen bei einem einzigen Konto anmelden dürfen - das Konto ist für die Anwendung und nicht für die Person bestimmt, da wir keine persönlichen Konten auf Produktionsservern haben.

Zu Prüfungszwecken möchte ich wissen, wer sich zu welchem ​​Zeitpunkt angemeldet hat, und da wir SSH-Schlüssel zum Anmelden verwenden, erscheint es logisch, dies zu verfolgen (da es keine andere zu verfolgende Kennung gibt).

Wenn SSH einen Benutzer authentifiziert, protokolliert es den Benutzernamen im Sicherheitsprotokoll des Systems, protokolliert jedoch nicht, welcher der autorisierten öffentlichen Schlüssel bei der Anmeldung verwendet wurde. Ist es möglich, dass OpenSSH auch meldet, welcher öffentliche Schlüssel verwendet wurde, oder vielleicht nur der Kommentar zu diesem Schlüssel?

Das verwendete Betriebssystem ist CentOS 5.6, aber ich würde auch gerne hören, ob es auf anderen Betriebssystemen möglich ist.

Antworten:


33

Wenn Sie den LogLevel in / etc / sshd / sshd_config auf VERBOSE erhöhen, wird der Fingerabdruck des öffentlichen Schlüssels protokolliert, der zur Authentifizierung des Benutzers verwendet wird.

LogLevel VERBOSE

dann bekommst du solche nachrichten

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

Sie können verwenden

 ssh-keygen -lf /path/to/public_key_file

um den Fingerabdruck eines bestimmten öffentlichen Schlüssels zu erhalten.


2
Vielen Dank! Ich muss die Schlüsselfingerabdrücke für die authorized_keysDatei bestätigen, daher habe ich dieses kleine Skript erstellt, um die Fingerabdrücke autorisierter Schlüssel (p="$(mktemp)";cat ~/.ssh/authorized_keys|while IFS="$(printf "\n")" read key; do echo $key > $p; ssh-keygen -lf $p; done; rm -f $p)
Guss,

Ich habe festgestellt, dass SSH den Schlüssel jetzt zweimal für jede Anmeldung protokolliert - eine Idee, warum und / oder wie es dazu gebracht wird, ihn einmal zu protokollieren?
Guss

Das ist eine Detailebene, mit der ich nicht vertraut bin. Kannst du damit aufhören, wahrscheinlich nicht, ohne mit dem Quellcode herumzustöbern.
User9517 unterstützt GoFundMonica

2
Dieser Thread sieht relevant aus. Es findet den passenden Schlüssel zweimal: einmal, um festzustellen, ob der Schlüssel akzeptabel ist oder nicht, dann ein zweites Mal, um die vom Client bereitgestellte Signatur zu überprüfen.
MPONTILLO

3

Wenn Ihre Mitarbeiter ssh-agent verwenden, können Sie dies in Ihre .bashrc-Datei einfügen:

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

Leider ist es eine gute Idee, dass ich dies protokollieren möchte, weil ich authorised_keys-Befehle für die Benutzer verwende, die ich protokollieren möchte, und sie normalerweise keine Bash-Shell erhalten.
Guss

0

Versuchen Sie, mit dem LogLevelParameter in herumzuspielen sshd_config. Einzelheiten finden Sie unter man sshd_config


0

3
Willkommen bei Server Fault! Im Allgemeinen möchten wir, dass die Antworten auf der Website für sich selbst stehen - Links sind großartig, aber wenn dieser Link jemals bricht, sollte die Antwort genügend Informationen enthalten, um weiterhin hilfreich zu sein. Bitte überlegen Sie, Ihre Antwort zu bearbeiten, um weitere Details zu erhalten. Weitere Informationen finden Sie in den FAQ .
Slm
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.