Ist es möglich herauszufinden, mit welchem SSH-Schlüssel auf ein Konto zugegriffen wurde? Ich habe ein Konto auf einem Server, auf den mehrere (vertrauenswürdige!) Personen über ssh zugreifen können. Ich finde es nützlich zu wissen, wer wann angemeldet ist. Ich habe root-Zugriff, damit ich die Protokolle einsehen kann, aber es scheint nichts da zu sein. Gibt es einen Konfigurationsschalter, mit dem der Schlüssel in den Protokollen identifiziert werden kann?
ssh
logs
authentication
Loop Space
quelle
quelle
Antworten:
Wenn Sie (normalerweise
/etc/ssh/sshd_config
) in die sshd-Konfigurationsdatei gehen und die LogLevel-Direktive in VERBOSE ändern:... Sie können so etwas in den Protokollen sehen:
Von
man sshd_config
:quelle
sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;p;q}" /var/log/auth.log
sed
!q
Richtlinie, speichern Linie bis Ende der Datei ... sed Linie werden:sed -ne "/sshd.$PPID.:.*matching DSA key/{s/^.* //g;h};\${x;p}" /var/log/auth.log
. Auf jeden Fall: Ich liebe sed!Etwas ähnlich der Antwort von @ user37161 . Wenn auf dem gemeinsam genutzten Konto eine benutzerdefinierte Shell ausgeführt wird und die Shell wissen muss, welcher Benutzer sich dort befindet, ist die Ausführung des Skripts "wrapper" möglicherweise nicht ausreichend, da Informationen nur über Methoden an die benutzerdefinierte Shell weitergegeben werden, die Race verursachen können Bedingungen.
Stattdessen können Sie die
environment=
Option in authorized_keys-Datei verwenden, um eine Umgebungsvariable festzulegen, die von der benutzerdefinierten Shell gelesen werden kann.Stellen Sie in Ihrer
.ssh/authorized_keys
Datei jeder Zeile eine Umgebungsvariable voran, die wie folgt lautet:Dann kann die benutzerdefinierte Shell oder eines der verschiedenen rc-Skripte die
$REMOTEUSER
Variable lesen und die entsprechende Aktion ausführen.Beachten Sie jedoch, dass der angemeldete Benutzer die Datei ändern kann, wenn Sie eine Standard-Shell verwenden, um verschiedene Dinge zu verhindern. Es birgt auch einige Risiken, Benutzern das Festlegen von Umgebungsvariablen wie z
LDPRELOAD
. Siehe diesshd_config
Dokumentation zuPermitUserEnvironment
.quelle
Aktualisieren Sie 2016-10-31 über das Protokollformat
Einige Skripte zur korrekten Installation
Es gibt eine vollständig verwendbare Methode zum Verfolgen / Protokollieren von SSH-Verbindungen nach Schlüssel unter Berücksichtigung des Benutzernamens.
Einführung
Zusätzlich zu @Calebs Antwort möchte ich hier einige kleine Tricks vorstellen:
Nota: Ich arbeite an Debian 6.0 .
Server-Installation
SSHD-Protokollstufe
Stellen Sie zunächst sicher, dass die Serverkonfiguration über eine ausreichende Protokollierungsstufe verfügt:
Als root wird hiermit die ausführliche Protokollierung festgelegt und aktiviert:
Könnte geschrieben werden:
oder in einem sed script :
Welches könnte ausgeführt werden als:
Als für die Aktivierung dieses:
Syslog: Fingerabdrücke benutzerlesbar machen
Nehmen Sie nun Fingerabdrücke in einer vom Benutzer lesbaren Datei auf:
Versuchen Sie, sich von ssh aus (erneut) anzumelden, um sicherzustellen, dass eine neue Datei
sshdusers.log
erstellt wird (und etwas enthält)Verwendungszweck
Dadurch wird der Fingerabdruck der aktuellen Sitzung gedruckt:
Plug-in für
.bashrc
Und schließlich gibt es ein kleines Add-On , das Sie am Ende Ihres
/etc/bash.bashrc
oder des Benutzers anbringen können.bashrc
:Nach dem erneuten Anmelden von SSH sehen Sie:
Hinweis Bei einigen Installationen hat die autorisierte Schlüsseldatei möglicherweise einen anderen Namen, z. B.
$HOME/.ssh/authorized_keys2
...quelle
file
zu wissen , Dateitypen. Aber für Menschen, die Dateisysteme zu finden, Erweiterungen, die wie.pl
,.py
,.sh
,.awk
,.sed
,.tar.gz
, oder sogar.png.b64.gz
ist nützlich!Angenommen, die Benutzer "joe" und "deb" haben Zugriff auf das Konto "x". Dann
.ssh_authorized_keys
addieren Sie in Konto x die Zeilen:Auch im Wrapper-Skript können Sie alles tun, was Sie wollen, indem Sie
ssh
mit dem Befehl protokollieren, dass der private Schlüssel von joe zu einem bestimmten Datum und zu einer bestimmten Uhrzeit verwendet wurde$ORIGINAL_COMMAND
.quelle
Auf fedora 20+ werden die Anmeldeversuche und -erfolge in /var/log/audit/audit.log gespeichert. Dieses Protokoll speichert die Anmeldeversuche (Fehler und Erfolge) und der für den Anmeldeversuch verwendete Schlüsselfingerabdruck wird im Feld mit dem Namen fp gespeichert.
Sie können den Fingerabdruck des angemeldeten Schlüssels mit den Fingerabdrücken in den authorized_keys vergleichen, indem Sie ihn Zeile für Zeile durch ssh-keygen -l ausführen
Eine ausführliche Erklärung zu SSH-Anmeldungen und deren Sicherheit und Erkennung von Eindringlingen finden Sie hier: http://vpathak.tumblr.com/post/121343814158/fedora-audit-log-with-love-from-russia
quelle
Sie können dies versuchen:
quelle
ssh-add -L | awk 'NR==FNR { k=$2;next } /^#/{next} $2==k { print $3;exit} $3==k {print $4;exit} ' - ~/.ssh/authorized_keys
Neben @F. Hauri antworte, ich bereite nützliche "LoggedIn prompt" vor.
Eine zusätzliche Datei ist optional ($ HOME / .ssh / users):
Dieser Teil sollte in
/etc/profile
(für alle Benutzer) oder in eingefügt werden~/.bashrc
Ergebnis
quelle