Überwachen Sie die Shell-Aktivität eines Benutzers auf Ihrem Unix-System?

7

Vertrauen, aber überprüfen.

Angenommen, ich möchte jemanden als Systemadministrator einstellen und ihm Root-Zugriff auf mein Unix-System gewähren. Ich möchte X-Fenster für sie deaktivieren und nur die Verwendung der Shell zulassen (möglicherweise über SSH), damit alle Operationen, die sie ausführen, über die Shell ausgeführt werden (keine Mausoperationen).

Ich benötige ein Tool, das alle von ihnen ausgegebenen Befehle auf einem Remote-Server protokolliert, sobald sie ausgegeben werden. Selbst wenn sie eine Hintertür installieren und ihre Spuren verwischen, wird dies remote protokolliert.

  • Wie deaktiviere ich alles außer dem Shell-Zugriff?
  • Gibt es ein Tool zum sofortigen Protokollieren von Befehlen aus der Ferne, sobald diese ausgegeben werden?
Joseph Turian
quelle
9
Zu Ihrer Information - Wenn Sie ihnen root geben, können sie / install / X ... also würde ich mich darauf konzentrieren, entweder Ihren Sysadmins zu vertrauen oder keine zu haben
Matt Simmons
2
Stimme Matt zu. Wenn Sie dieser Person nicht vertrauen. Stelle sie nicht ein.
Bryan
Warum? Wenn dies ein Server ist, den ich automatisch in der Cloud bereitstelle, spielt das keine Rolle. Aber ich möchte die Person trotzdem überwachen können. Und ja, sie können alles installieren, aber dieser Befehl wird remote protokolliert.
Joseph Turian
1
Wenn Sie ihnen root gegeben haben, wie können Sie möglicherweise garantieren, dass sie den vorhandenen Protokollierungsmechanismus nicht umgangen haben, und dies soll auf einem Cloud-basierten Server geschehen?
Jim B
Jeder könnte ein Terrorist sein, traue nicht !!! 11 !! oneeleven Oder ein Roboter ... xkcd.com/329
Tie-Fighter

Antworten:

7

Gib ihnen keine Wurzel. Geben Sie ihnen ein individuelles Konto und legen Sie es in Sudoers. Jeder Befehl, den sie mit sudo starten, wird in das Protokoll aufgenommen. Mit sudo power können sie das Protokoll jedoch weiterhin bereinigen und sich als root anmelden sudo su -.

Die Lösung besteht darin, das Protokoll auf einem anderen Server mit so etwas wie syslog-ng zu trennen . Sie können es ausschalten, aber wenn sie dies getan haben, wird es aufgezeichnet und sollte eine große rote Fahne sein. Wie wird su -. Ich vermute, Sie können das bei Sudoern mit ein wenig Nachdenken blockieren .

jldugger
quelle
4

Gibt es ein Tool zum sofortigen Protokollieren von Befehlen aus der Ferne, sobald diese ausgegeben werden?

Sudosh2 ( http://sourceforge.net/projects/sudosh2/ ) wird einige der gewünschten Aktionen ausführen . Hier ist eine Beschreibung von ihrer Website:

sudosh ist ein Überwachungs-Shell-Filter und kann als Login-Shell verwendet werden. Sudosh zeichnet alle Tastenanschläge und Ausgaben auf und kann die Sitzung wie einen Videorecorder wiedergeben.

Der Benutzer führt einen Befehl wie 'sudo sudosh2' aus und hat dann sudo.

sudosh2 ist eine sudo-Shell, die alle Tastenanschläge aufzeichnet und alles aus der Benutzersitzung (Eingabe, Ausgabe, Fehler usw.) protokolliert. Sie können eine Benutzersitzung erneut abspielen. Dies kann sehr praktisch sein.

sudosh2 unterstützt syslog, und Sie können diese Ausgabe an einen Remote-Server senden.

Dies kann nicht alles tun, was Sie brauchen, aber es könnte helfen. Einige Leute benutzen auch Rootsh , aber ich verstehe nicht, wie das mit Sudosh verglichen wird.

Stefan Lasiewski
quelle
2

Theoretisch können Sie einen SSH-Proxy (auf einem System, das die Person nicht kontrolliert) verwenden, um den gesamten Datenverkehr zwischen dem Host und dem System zu protokollieren. Wenn Sie an das System senden, protokollieren Sie dort alle Daten und leiten die Verbindung an den Zielserver weiter. Ein lokaler Protokollierungsdämon verstößt gegen das Grundprinzip, einem Benutzer keinen Administratorzugriff auf die Systeme zu gewähren, von denen erwartet wird, dass sie ihn einschränken.

In der Praxis ist es mehr oder weniger unmöglich, ein Befehlsprotokoll zu lesen und herauszufinden, ob der Typ etwas Schlechtes getan hat oder nicht. Wenn Sie Ihren Systemadministratoren nicht vertrauen können, sind Sie fertig. Ich würde es nicht versuchen.

pehrs
quelle
2

Ich stimme Matt zu. Wenn Sie ihnen nicht vertrauen können, sollten sie keine Wurzel haben.

Für einen Audit-Trail kann rootsh verwendet werden. Sie können nur zulassen, dass sie zu rootsh sudo. In Kombination mit dieser und der Remote-Protokollierung wäre es etwas schwieriger zu stoppen als nur Sudo.

Warner
quelle
2

Um alles zu protokollieren, was jemand in Ihre Konsole eingibt, ist pam_tty_audit genau das, wonach Sie suchen . Ich bin mir ziemlich sicher, dass es die Ausgabe über Syslog protokolliert, sodass Sie dieses Protokoll einfach auf einen anderen Syslog-Server pumpen können.

NB, dies protokolliert alles, Tastenanschläge (nach oben, unten, Strg usw.) und protokolliert auch Passwörter, wenn sie in Passwortfelder eingegeben werden.

Dave Wongillies
quelle
0

Wie viele Leute gesagt haben. Wenn jemand root hat, hat er die Box. Vertrauen ist hier König. Bis zu einem gewissen Grad können Sie jedoch mit sudo das gewünschte Verhalten erzielen. Der Administrator meldet sich als normaler Benutzer an und kann dann verschiedene Befehle ausführen, indem er sudo / path / to / command ausführt. Das ist wahrscheinlich das Beste, was Sie bekommen werden, ohne viele Spiele zu spielen.

Richard June
quelle