Wie finde ich heraus, welcher Schlüssel für die Authentifizierung mit öffentlichem Schlüssel verwendet wurde?

7

Mehrere Entwickler, die ein freigegebenes Konto auf einem Testserver verwenden und die Authentifizierung mit öffentlichem Schlüssel verwenden. Gibt es eine Möglichkeit herauszufinden, welcher Schlüssel für die Authentifizierung verwendet wurde (z. B. der Schlüsselkommentar)?

Gyongyeee
quelle

Antworten:

5

Möchten Sie dies nach etwas herausfinden, das bereits geschehen ist (Forensik), oder möchten Sie es schaffen, damit Sie protokollieren können, wer was tut?

Für die Forensik: /var/log/secureEnthält auf meinem Fedora-System Aufzeichnungen über die Authentifizierung und den Benutzernamen jedes öffentlichen Schlüssels, gibt jedoch nicht an, welcher Schlüssel verwendet wurde. Sie haben hier wahrscheinlich kein Glück

Für zukünftige Überprüfbarkeit: Sie können die authorized_keysDatei verwenden, um die Befehle festzulegen , auf die jede Anmeldung beschränkt ist, und dann ein Programm ausführen, das die Authentifizierung protokolliert (und möglicherweise nachfolgende Befehle, die so etwas wie Sudoscript verwenden ):

Wenn die Optionsphrase am Anfang einer Zeile das Schlüsselwort command = "string" enthält, führt jede SSH-Verbindung, die sich mit diesem bestimmten Schlüssel authentifiziert, nur den angegebenen Befehl aus, selbst wenn in der Befehlszeile ein anderer Befehl angegeben wurde.

Es muss jedoch gesagt werden, dass es wahrscheinlich sinnvoller ist, mehrere Konten einzurichten und dann einen gemeinsamen Zugriffsbereich einzurichten ...

David Fraser
quelle
Vielen Dank für Ihre Antwort. Zum Glück brauche ich es für die Zukunft. Wird dieser Befehl anstelle der Anmeldeshell ausgeführt? Wie kann ich herausfinden, welche Anmeldeshell für den Benutzer konfiguriert ist, und diese starten, nachdem ich die wichtigsten spezifischen Aufgaben ausgeführt habe?
Gyongyeee
Ein triviales Stück getentund cutwird das für Sie lösen.
womble
Ja, es wird anstelle der Login-Shell ausgeführt - und die Antwort von womble sollte Ihnen dort helfen:getent passwd $USER | cut -d: -f 7
David Fraser
5

... mit einem gemeinsamen Konto ...

Vielen Dank, dass Sie uns ein perfektes Beispiel gegeben haben, um zu erklären, warum dies eine schlechte Idee ist. ;-);

Im Ernst, wollen Sie wollen, kann nicht afaik getan werden. Und wenn mit "Schlüsselkommentar" der Kommentar gemeint ist, der sich in der Datei id_rsa nach dem Schlüssel befindet, ist dies ebenfalls ein No-Go. Es ist ein Kommentar, der nicht an den Server auf der anderen Seite gesendet wird.

Ja wirklich. Richten Sie mehrere Konten ein.

wzzrd
quelle
Es ist nicht in Ordnung, zu mehreren Konten zu wechseln. Bitte überprüfen Sie den verknüpften Kommentar für eine sichere Einrichtung eines freigegebenen Kontos: serverfault.com/questions/14012/…
Gyongyeee
In diesem Kommentar wird beschrieben, wie Sie mit AuthorizedKeys besonders sichere Dinge tun können, nicht mit einem freigegebenen Konto.
wzzrd
4

Wenn Sie sshd so einstellen, dass es ausführlich genug protokolliert, wird der Fingerabdruck des zum Anmelden verwendeten Schlüssels gedruckt. Füllt Ihre Protokolle jedoch furchtbar schnell.

womble
quelle
Es ist keine Option, aber danke
Gyongyeee
1

Aus Gründen der Überprüfbarkeit und 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
Willem
quelle