Protokollieren einer Personenaktivität unter Linux

11

Ich habe also viele der diesbezüglichen Beiträge gelesen und bin nur verwirrter als zuvor aufgetaucht. Es gibt Empfehlungen für verschiedene Tools, einschließlich ttyrec, snoopy, acct, rootsh, sudosh, ttyrpld, Unix-Auditing und mehr.

In meinem Fall möchte ich alle auf einem System ausgeführten Befehle protokollieren können (z. B. Verlauf mit aktivierten Zeitstempeln), aber ich möchte auch wissen, wer was getan hat? Wir melden uns jedoch alle über ssh bei derselben kleinen Teilmenge von Benutzerkonten an (je nachdem, was wir tun). Wie kann ich ein Befehlsprotokoll mit den Informationen erhalten, die mir ein "Wer" (in Bezug auf die Verbindung) gibt, damit ich die Aktion auf eine bestimmte Person zurückführen kann, die nur einem generischen "Benutzer" zugeordnet ist?

Ashimema
quelle
Snoopy sollte dazu in der Lage sein und wahrscheinlich viele andere Alternativen.
3molo
2
Systemaufrufe, Sudo, Shell-Verlauf, Dateisystemänderungen? Nicht alle Benutzerprozesse werden notwendigerweise über Login-Shells gestartet.

Antworten:

9

Das auditdPaket ist dafür konzipiert. Sie können PAM verwenden, um jedem Login eine Sitzungs-ID zuzuweisen, sodass Sie die Aktivität eines Kontos auf das ursprüngliche Login zurückverfolgen können (und dann das Login-Log überprüfen, um festzustellen, von wo aus sich diese Person angemeldet hat) und verwenden Der ausearchBefehl zum Auffinden der Ereignisse, an denen Sie interessiert sind. Sie können hier eine ziemlich umfassende Anleitung lesen , obwohl einige der feineren Details geändert werden müssen, um sie an Ihre Verteilung anzupassen. Redhat hat eine Website mit einem FAQ und einige andere Dokumente hier .

Da dies nicht auf dem Versuch beruht, in Shells eingegebene Befehle zu protokollieren oder den Befehlsverlauf der Benutzer aufzuzeichnen, sollten Dinge wie das Öffnen von vi (was möglicherweise über X oder in erfolgen kann screen) und das Schreiben eines Skripts (möglicherweise ein Zeichen an einem) protokolliert werden Zeit mit den Befehlen zum Ausschneiden / Einfügen von vi und einigen Durchläufen :.!/usr/games/fortune, um einige Quelldaten abzurufen, die Sie möglicherweise nicht protokollieren können. Führen Sie dann den :%!/bin/bashBefehl aus.

DerfK
quelle
Dies ist die vielversprechendste Antwort ... Mit Audit können Sie die Aktionen eines Benutzers vom Anmelden bis zum Abmelden konsistent verfolgen, unabhängig davon, welche Identitäten dieser Benutzer annehmen kann, indem Sie Audit-IDs verwenden, die beim Anmelden erstellt und an einen untergeordneten Prozess des Benutzers weitergegeben werden ursprünglicher Anmeldevorgang. Ich lese jetzt etwas mehr, um herauszufinden, wie ich es tatsächlich implementieren kann. Vielen Dank, dass Sie die Auswahl eingegrenzt haben!
Ashimema
Entschuldigung, dass es so lange gedauert hat, diese Antwort als akzeptiert zu markieren. Ich habe es ausprobiert! Funktioniert ein Traum .. Prost Jungs!
Ashimema
4

Es stehen Ihnen bereits eine Vielzahl von Tools zur Verfügung, auf die Ihre Frage (und diese Antworten) hinweisen, z. B. Verlauf, Snoopy, Auditd, Sudo-Protokolle usw. Wenn Sie jedoch eine "Teilmenge von Konten" haben, die von den Benutzern verwendet wird, gibt es eine Auf dem Server kann man nicht sagen, wer was getan hat. Sie können nur dann genau feststellen, wer dies getan hat, wenn Benutzer über eigene Computer verfügen, die sie speziell verwenden, und Keylogger verwenden, um festzustellen, was sie physisch auf dieser Tastatur eingegeben haben.

Wann immer Sie Konten teilen, können Sie nicht sagen, was tatsächlich vor sich ging, da Sie weitere Nachweise benötigen, wer Ihr Root-Konto oder Bob-Konto verwendet hat oder was auch immer Ihre Leute getan haben. Wenn Sie versuchen zu untersuchen, was in einem bestimmten Vorfall passiert ist, müssen Sie möglicherweise Ihre Zugriffsrichtlinien und -verfahren sowie Ihre Wiederherstellungsverfahren überprüfen und Ihre Mitarbeiter bewerten und / oder gegebenenfalls eine Umschulung durchführen (oder deren Vertrauenswürdigkeit mit sensiblen Konten) als sich direkt darauf zu konzentrieren, herauszufinden, wer etwas getan hat, da es möglicherweise mehr Ressourcen verbraucht, als Sie gewinnen können, um die Person zu finden, die es getan hat.

Andernfalls sollten Sie sich mit forensischen Untersuchungstechniken befassen, um festzustellen, was passiert ist (Laufwerksabbildung, Protokollverfolgung usw.). Wenn Sie einen Vorfall nicht untersuchen, sollten Sie Ihre Richtlinien überprüfen und eine bessere Nachverfolgung und Kontobestätigung einleiten (nur Sie haben dies getan root, nur Bob verwendet sein Konto mit sudo, um Zugriff auf höhere Berechtigungen zu erhalten, auditd zu installieren und zu überwachen usw.) und achten Sie darauf, dass sich Ihr vertrauenswürdiger Kreis nicht so anfühlt, als würden sie unter einem Mikroskop gehalten, oder Sie könnten die Versuchenden entfremden um ihre Arbeit zu erledigen (oder sie daran zu hindern, ihre Arbeit zu erledigen).

Bart Silverstrim
quelle
2

Mit Linux auditd ( http://people.redhat.com/sgrubb/audit/ ) können Sie am besten beobachten, wer was getan hat. Mehr dazu in der Antwort von DerfK.

Es wird Ihnen jedoch nichts darüber sagen, wer sich als Webadmin angemeldet hat, ob es n Personen gibt, die Zugriff auf das Webadmin-Konto haben. Ich würde vorschlagen, benannte Konten für jeden Benutzer zu verwenden und dann entweder su - oder sudo zu verwenden, um Befehle vom Konto "function" auszuführen.

Paweł Brodacki
quelle