Frage So verfolgen Sie Superuser-Aktivitäten


Ich würde gerne wissen, was die besten Ansätze zum Verfolgen von Superuser-Aktivitäten in einer Linux-Umgebung sind.

Insbesondere suche ich nach diesen Features:

  • A) Protokollierung von Tastenanschlägen auf einen gesicherten Syslog-Server
  • B) Fähigkeit, Shell-Sessions wiederzugeben (so etwas wie Skript-Wiedergabe)
  • C) Idealerweise sollte dies etwas unmöglich (oder ziemlich schwierig) sein, ohne physischen Zugang zum Server zu haben.

Bedenken Sie dies aus einer Sicherheits- / Auditing-Perspektive, in einer Umgebung, in der verschiedene Systemadministratoren (oder sogar Dritte) privilegierte Operationen auf einem Server durchführen müssen.

Jeder Administrator hat sein eigenes nominales Konto und jede interaktive Sitzung sollte vollständig protokolliert werden, mit der Möglichkeit, sie bei Bedarf erneut abzuspielen (wenn jemand zum Beispiel mc zum Löschen oder Ändern kritischer Dateien verwendet hat, reicht das nicht aus weiß, dass diese Person den Befehl mc ausgegeben hat, es muss eine Möglichkeit geben, genau zu sehen, was nach dem Start von mc gemacht wurde.

Zusätzliche Bemerkungen:

  1. Wie Womble gezeigt hat, wäre es vielleicht die beste Option, wenn sich Benutzer nicht mit Root-Rechten anmelden, um Änderungen auf Servern durchzuführen, sondern stattdessen über ein Konfigurationsmanagementsystem. So Stellen wir uns eine Situation vor, in der wir nicht über ein solches System verfügen, und wir müssen auf demselben Server Root-Zugriff auf verschiedene Personen gewähren.
  2. Ich bin überhaupt nicht daran interessiert, dies heimlich zu tun: Jeder, der sich bei einem Server mit root-Rechten anmeldet, wäre sich vollkommen bewusst, dass die Sitzung aufgezeichnet wird (so wie zum Beispiel Call-Center-Betreiber wissen, dass ihre Gespräche sind) aufgezeichnet werden)
  3. Niemand würde ein generisches Superuser-Konto ("root") verwenden
  4. Ich bin mir bewusst, dass ttyrpld und es scheint zu tun, wonach ich suche. Aber bevor ich diesen Weg gehe, würde ich gerne wissen, ob dies mit einem unmodifizierten Kernel gelöst werden kann. Ich möchte wissen, ob es irgendwelche Werkzeuge speziell für Debian (oder Linux im Allgemeinen) gibt, die eine vollständige Überwachung von Superuser-Accounts erlauben, ohne die Shell oder den Kernel zu patchen.

21
2017-08-06 00:58


Ursprung


(ergreift Stuhl und Popcorn) sollte das gut sein ... - Avery Payne
+1 ... dachte genau dasselbe. LOL - KPWINC
Beachten Sie auch diese verwandte Frage: serverfault.com/questions/46614/ ... - sleske
Ich denke immer noch, dass Sie ein Konfigurationsmanagementsystem verwenden sollten. (puppet / cfengine / koch / systemimager / koch / etc ...) - KevinRae
Kevin, ich stimme dir zu. Siehe zum Beispiel meinen Kommentar zu Womble's Antwort: serverfault.com/questions/50710/.... Leider ist dies in dieser Umgebung keine Option, und deshalb habe ich ein Szenario angenommen, in dem ein Konfigurationsmanagementsystem nicht verfügbar ist. Trotzdem möchte ich Ihnen für Ihr Feedback zu diesem Thema danken. - mfriedman


Antworten:


In Umgebungen mit mehreren Administratoren sollten Sie root - ever möglichst nicht verwenden.

Verwenden Sie sudo für alles - sudo ist extrem konfigurierbar und leicht zu loggen.

Loggen Sie alle / alle Logins oder Su's ein, um sie zu rooten und untersuchen Sie sie, während jemand Ihre festgelegten Regeln umgeht.


8
2017-08-06 01:49



Ja, Sudo hat eine großartige Protokollierung - all diese "womble ran / bin / sh als root" -Einträge sind echt hilfreich. Ohne Config-Management werden Leute immer root, um Admin-Aufgaben zu erledigen, und jemand, der etwas ruchloses tun wollte, konnte sein Ding in derselben Root-Sitzung wie eine gültige Aufgabe ausführen. Die perfekte Deckung. - womble♦
Die Politik muss davon abraten, einfach als root auszugeben, damit dies natürlich gut ist, und Sie werden nicht in der Lage sein zu wissen, was sie getan haben, wenn sie die Reservierung verlassen haben, aber sie verengt die Liste der Verdächtigen ... - dmckee
Richtlinie: "sudo / bin / sh" = gefeuert / untersucht. Ziemlich klare, ziemlich einfache Lösung. - Karl Katzke
Es gibt so viele Möglichkeiten, eine Shell von Programmen zu erhalten, die Leute legitim ausführen müssen (zB von sudo vi), dass es wenig Sinn hat, 'sudo /bin/sh' einfach zu blockieren ... unless, Sie können sicher sein, dass Sie haben blockiert jede mögliche Methode, Sie würden nur eine Herausforderung, um mehr obskure Wege zu finden. in jedem Fall: a) manchmal sudo / bin / sh ist notwendig, und b) es ist ein Management-Problem, nicht Tech. - cas
Chris macht einen tollen Punkt: Management-Problem, nicht Tech-Problem. - Karl Katzke


Zum einen, für welche Art von Root-Benutzerzugriff möchten Sie überwachen? Dumme Adminfehler oder bösartiger Insider? Ersteres - Sie werden eine gute Konfigurationsmanagement-Lösung benötigen, wie bereits vorgeschlagen. Letztere - wenn sie wissen, was sie tun, können Sie nur hoffen, genug zu fangen, um anzuzeigen, dass etwas passiert ist, das es wert ist, untersucht zu werden. Sie möchten nur wissen, dass irgendeine Art von nicht autorisierter Aktivität gestartet wurde, und auf diese Tatsache aufmerksam gemacht werden. Wenn sie schlau sind, werden sie den Großteil der von Ihnen erstellten Protokollierung deaktivieren (indem Sie den Serverstatus ändern oder eigene Tools einbringen), aber hoffentlich können Sie den Anfang des Vorfalls erkennen.

Davon abgesehen, schlage ich ein paar Tools vor, die Sie verwenden können. Beginnen Sie zunächst mit einer guten sudo-Richtlinie (die bereits vorgeschlagen wurde). Zweitens, checken Sie sudoshell aus, wenn Sie diesen Admins Root Shell-Zugriff gewähren müssen. Drittens, wahrscheinlich Ihre beste Wette (obwohl am intensivsten), schauen Sie sich Linux-Kernel-Auditing an.


2
2017-08-06 04:00



+1 Danke, dass Sie sudoshell vorgeschlagen haben und speziell für das Überwachungssystem des Linux-Kernels - das könnte eine hervorragende Ergänzung für das sein, was ich erreichen möchte. - mfriedman


Was Sie tun könnten, ist zu verwenden diese  Bibliothek für Sudo, geben Sie jedem einen eigenen Benutzeraccount und setzen Sie sudo -i in everyones Profil. Auf diese Weise haben sie sofortigen Root-Zugriff und jeder Befehl wird protokolliert.


2
2017-08-06 08:44



+1 Ich wusste nichts über diese Bibliothek. Ich danke Ihnen für das Teilen! - mfriedman


Sie haben Wurzel. Das Beste, auf das Sie hoffen können, ist, zumindest zu sehen, wann sie sich entschieden haben, aus Ihrer kleinen Überwachungsutopie auszubrechen, aber darüber hinaus ist das, was sie getan haben, ratlos.

Die "beste" Option, die ich mir vorstellen kann, besteht darin, den Einsatz von pervasiver Konfigurationsautomatisierung und -verwaltung vorzuschreiben und Ihre Manifeste mithilfe eines Versionskontrollsystems zu verwalten und Updates dafür bereitzustellen. Verhindern Sie dann tatsächliche Root-Logins auf den Servern. (Notfall "Oh nein, ich habe etwas kaputt gemacht" Zugriff kann durch ein nicht-verteilt-und-geändert-nach-jeder-Verwendung Passwort oder SSH-Schlüssel zur Verfügung gestellt werden, und jeder sieht den Systemadministrator, der vermasselt, um sicherzustellen, dass sie es nicht tun etwas ändern).

Ja, das wird unpraktisch und ärgerlich sein, aber wenn Sie paranoid genug sind, um die Aktionen von jedem in diesem Ausmaß zu überwachen, schätze ich, dass Sie sich in einer Umgebung befinden, die auf andere Weise unbequem und nervig genug ist Es scheint kein großes Problem zu sein.


1
2017-08-06 01:25



Ich muss dir zustimmen. Die beste Option wäre, wenn sich Benutzer nicht mit root-Rechten anmelden, um Änderungen auf Servern durchzuführen, sondern stattdessen über ein Konfigurationsmanagementsystem. Ich finde Ihre Kommentare hilfreich für die Verfeinerung und Klärung meiner Frage. - mfriedman


Ich stimme den Kommentaren von disableopelopard zur Verwendung von sudo für alles zu. Es macht die Dinge sicherlich ein wenig einfacher zu loggen.

Ich würde auch hinzufügen, die Bash-Verlaufsdatei regelmäßig zu sichern. Scheinbar oft übersehen, kann aber manchmal eine gute Informationsquelle sein ... fragen Sie einfach Goldman Sachs. ;-)

http://www.guardian.co.uk/business/2009/jul/12/goldman-sachs-sergey-aleynikov


0
2017-08-06 02:10



Ich habe ein .bash_logout-Skript, das eine mit Zeitstempel versehene Kopie des Verlaufs nach /var/lib/history/$user.$tty-or-IP.$yymmddhhss erstellt, wenn ich mich mehr darum kümmerte, würde ich die Prozessbuchhaltung einrichten oder ordnungsgemäß Auditing-Tools ... aber es ist nicht wirklich für die Sicherheit, es ist so, dass ich herausfinden kann, wer etwas Dummes getan hat und ihnen sagen, a) es nicht wieder zu tun und b) wie man es richtig macht. Es ist viel problematischer, den Anhaltspunkt von Junioren zu erhöhen als Vertrauen. - cas
Erinnert mich an die Geschichte, in der ein Junior-Verkäufer den Millionen-Dollar-Deal bläst. Er erwartet, dass der Chef ihn feuert und der Chef sagt: "Nein, nein! Es hat mich nur eine Million Dollar gekostet, um dich zu trainieren!" Ich kann fühlen, dass die "Anhaltspunkte" der Junioren zunehmen, wenn wir sprechen. ;-) - KPWINC


Das wäre schwierig ...

root kann sorgfältig getestete Skripts ausführen, die alle Sicherheitsmaßnahmen verletzen (Überwachungsprozesse killen), Protokolldateien zerlegen / zuschneiden usw. Aber dennoch ...

Angenommen, mehrere Admins mit root-Privilegien arbeiten als Team. Und root kann auch jeden Überwachungsprozess beenden. Und leider wird dieses Login / Passwort öffentlich. Oder sie bekommen unerwünschte Gesellschaft.

Erstellen mehrerer Stammkonten mit UID 0, obwohl nicht empfohlen, möglicherweise hier anwendbar.

In / etc / ssh / sshd_config Ändern der Zeile zu: PermitRootLogin-Nr

ist empfohlen. Also, hier, ein Benutzer loggt sich mit seinem normalen Account ein (Datum-Zeit-Stempel wird mitprotokolliert (evtl. gefälschte IP-Adresse)) Dann wechselt er auf root. Verwenden des Befehls su

Und direkte Anmeldung als root wird so verhindert.

Wir müssen überlegen, was Wurzel hier nicht kann.

Sudo sollte gut sein. Backup / etc Verzeichnis Konfigurationsdateien sollten gut sein. / var / directory Protokolldateien sollten regelmäßig per E-Mail gesendet oder auf einem separaten NFS gespeichert werden.

Wie wäre es mit dem Schreiben von Skripten, die APIs von Mobile Gateway-Unternehmen integrieren, die SMS alle Mobilgeräte von root-Benutzern gruppieren, von denen einer außer Haus ist, um zu arbeiten. Ich weiß, das würde mich irritieren, aber trotzdem.

Das Brechen von SSH kommt meistens nicht in Frage.


0
2017-08-06 03:31





Wie andere gesagt haben, gibt es so gut wie keine Möglichkeit, Benutzer mit vollem Root-Zugriff auf eine Weise zu protokollieren, die sie nicht deaktivieren können, aber wenn Sie debian / ubuntu ausführen, werfen Sie einen Blick darauf schnüffeln, was ziemlich nah an dem ist, was Sie wollen

Snoopy ist nur eine gemeinsame Bibliothek, die   wird als Wrapper für die execve () verwendet   Funktion von libc zur Verfügung gestellt   Jeder Aufruf von syslog (authpriv).   Systemadministratoren finden möglicherweise Snoopy   nützlich in Aufgaben wie leicht / schwer   Systemüberwachung, andere verfolgen   Administratoraktionen sowie   ein gutes "Gefühl" für das, was geht   im System (zum Beispiel Apache   laufende cgi-Skripte).


0
2017-08-06 05:35



Danke für deine Antwort. Unterstützt es die Protokollierung von Tastatureingaben oder nur die Befehlsprotokollierung? - mfriedman