Ist es möglich, die ssh-Sitzung mit tty / pts-Informationen und dem Datum der Anmeldung und Abmeldung auf einem Client aufzulisten? Äquivalent des letzten Befehls auf einem Server.
Meine Benutzer verwenden eine Proxy-SSH, um eine Verbindung zu einem Server herzustellen. Vom Proxy-Server aus verwenden sie jedoch ein generisches Konto, um eine Verbindung zum Server herzustellen. Ich würde tty / pts id zwischen Client und Server vergleichen. Auf dem Server verwende ich dieses Skript, um diese Informationen für den aktuellen Tag abzurufen:
#!/bin/bash
today="$(date '+%a %b %e')"
last | awk -v pattern="$today" '$0 ~ pattern && /pts/ {print $0 "#line#"}'
exit 0
Vielen Dank
sudo
). Für den Pfad, den Sie abbilden möchten, müssen Sie die beiden Listen abgleichen, oder besser, um die ssh-Protokollierung zu aktivieren und diese beiden Listen abzugleichen. Sie haben jedoch keine 100% igen eindeutigen Übereinstimmungen.Antworten:
In wenigen Worten
Verwenden Sie die Protokolle von ssh auf beiden Maschinen: Sie erhalten die PID der erzeugten Shell. Dies sollte es Ihnen ermöglichen, die PID der Shell mit der Ausführung des Programms zu verbinden und eine bestimmte Übereinstimmung mit dem tty herzustellen. Für ein tieferes Audit können Sie ein Audit-Tool verwenden.
In mehr Worten
last
Mit dem einfachen
last
Sie können die Liste der Verbindungen anzeigen, die sich auf das verwendete tty beziehen.Sie können zwei Listen von Ihrem Proxy Maschine (ich möchte es Gateway, GW nennen) und die andere von Ihrem Server . Der Befehl
last
Standardmäßig geben Sie Ihren Benutzernamen, pts / tty, IP / Hostname an. Anmeldung Terminzeit, Ausloggen Terminzeit. Sie können das Format usw. ändern.Dann müssen Sie an den Überlagerungen der Periode arbeiten und raten, wer war.
Das Problem, das ich sehe, ist, dass Sie auf diese Weise ein Werkzeug (Skript) erstellen müssen, das Ihnen alle möglichen Übereinstimmungen bietet, und sie bereinigen, während Sie gute Übereinstimmungen finden. Trotzdem können Sie seltsame Situationen haben.
Lassen Sie uns eine Fallstudie durchführen. Ein erster Benutzer, sagen wir Nicolas, kann sich beim GW anmelden. Dann geht er einen Kaffee trinken oder beantwortet einen Anruf. Inzwischen einen zweiten Benutzer, sagen wir Hastur, loggen Sie sich in das GW ein und schneller als der 1 st Benutzerprotokolle beim Server. Gerade in diesem Moment ist Ihr Doppelprotokoll kompliziert. Jetzt hat Hastur das Bedürfnis nach einem Kaffee und Nicolas meldet sich beim Server an. Wer wird der erste sein, der den Kaffee zu Ende bringt und sich zuerst mit dem Programm verbindet?
/var/log/auth
(oder andere Protokolldatei von ssh) [ 1 ] ..Es gibt Protokolldateien, die zur Überwachung der Anmeldung und Abmeldung auf jedem System verwendet werden. Suchen Sie nach dem richtigen Pfad und Namen, je nach System. Mit
Sie erhalten ähnliche Zeilen wie
wo Sie die richtige Login-Zeit haben, und sogar die PID (
[9024]
) und die IP. Dieses Mal können Sie die Daten dieser Datei mit den von übereinstimmenlast
Befehl, um das tty zu kennen, oder Sie können die PID der Shell, die das Programm selbst aufgerufen hat, irgendwie im Programm protokolliert haben (es ist möglich, einen Systemaufruf der Shell auszuführen).Wenn Sie an diesen Dateien arbeiten, können Sie für jede Sitzung eine eindeutige Übereinstimmung finden. Für die analoge Protokolldatei auf dem Gateway haben Sie die ursprüngliche IP-Adresse und den Benutzernamen.
audit tools
[ 2 ], [ 3 ]Wenn Sie die Berechtigung dazu haben und dies legal ist, können Sie ein Überwachungstool verwenden und ein vollständiges Protokoll der Shell auf dem Host-Computer erstellen.
Verweise
quelle