GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie protokolliere ich jeden von einem Benutzer ausgeführten Befehl?

Lösung 1:

Fügen Sie diese Zeile zu Ihrer pam-Konfiguration hinzu, die für Anmeldungen verantwortlich ist (ihre System-Authentifizierung auf Redhat-basierten Distributionen)

session    required     pam_tty_audit.so enable=*

Um herauszufinden, was getan wurde, können Sie verwenden.

ausearch -ts <some_timestamp> -m tty -i

Dies erzeugt eine Ausgabe wie diese:

 type=TTY msg=audit(11/30/2011 15:38:39.178:12763684) : tty pid=32377 uid=root
 auid=matthew major=136 minor=2 comm=bash data=<up>,<ret>

Der einzige Nachteil davon ist, dass es etwas schwierig zu lesen sein kann, aber es ist viel besser als die meisten vorgeschlagenen Lösungen, da es theoretisch verwendet werden könnte, um eine ganze Sitzung aufzuzeichnen, warzen n alle.

Bearbeiten:Oh, und Sie können aureport verwenden, um eine Liste zu erstellen, die hilfreicher sein kann.

# aureport --tty
...
12. 11/30/2011 15:50:54 12764042 501 ? 4294967295 bash "d",<^D>
13. 11/30/2011 15:52:30 12764112 501 ? 4294967295 bash "aureport --ty",<ret>
14. 11/30/2011 15:52:31 12764114 501 ? 4294967295 bash <up>,<left>,<left>,"t",<ret>

Lösung 2:

Die beste Lösung für Ihr Problem wäre das eingebaute Prüfsystem von Linux. Verwenden Sie man 8 auditd oder besuchen Sie diese Seite für weitere Informationen:http://linux.die.net/man/8/auditd.

Sie können auch dieses Tutorial überprüfen - obwohl es etwas außerhalb des Bereichs Ihrer Frage liegt, zeigt es, wie das Audit-System funktioniert.

Lösung 3:

Sie könnten snoopy verwenden.

Es ist eine einfache Bibliothek zur Befehlsprotokollierung und keine richtige Audit-Lösung (leicht zu umgehen). Offenlegung:Ich bin derzeitiger Snoopy-Maintainer

Lösung 4:

Ein weniger bekannter Trick, aber der genialste ist, einfach die eingebauten Audit-Funktionen von sudo zu verwenden . Sudo wird mit einem sudoreplay ausgeliefert Befehl, der das Wiedergeben von Sitzungen vereinfacht. Es wird sogar vim weiterleiten Sitzungen (wie Sie vorschlagen).

So verwenden Sie es in wenigen einfachen Schritten:

  1. Installieren Sie sudosh auf Ihrem System; dies ist ein Shell-Wrapper um sudo Befehl, der einen Benutzer zu sudo macht selbst (nicht root ) und kann als System-Login-Shell verwendet werden
  2. Aktivieren Sie sudo Protokollierung. Bearbeiten Sie /etc/sudoers.d/sudosh : Defaults log_output Defaults!/usr/bin/sudoreplay !log_output Defaults!/sbin/reboot !log_output

  3. Fügen Sie diesen Befehl zu /etc/shells hinzu um Anmeldungen damit zuzulassen: /usr/bin/sudosh

    Tipp :Um Benutzer daran zu hindern, sich mit anderen Shells anzumelden, entfernen Sie diese anderen Shells aus /etc/shells .

  4. Aktualisieren Sie den Benutzer foobar um den sudosh zu verwenden Schale. chsh -s /usr/bin/sudosh foobar

Nähere Informationen finden Sie unter:https://github.com/cloudposse/sudosh/


Linux
  1. Wie protokollieren Sie jeden eingegebenen Befehl?

  2. So verwenden Sie sudo, um einem Nicht-Root-Benutzer die Ausführung eines bestimmten Befehls zu ermöglichen

  3. So protokollieren Sie jeden Shell-Befehl in Linux

  4. sudo-Befehlsbeispiele in Linux

  5. So beschränken Sie Benutzerbefehle in Linux

So erstellen Sie einen Sudo-Benutzer unter Debian

So löschen Sie Benutzer auf Ubuntu

So erstellen Sie einen Sudo-Benutzer unter Ubuntu

So erstellen Sie einen Sudo-Benutzer unter CentOS

So erstellen Sie einen Sudo-Benutzer unter Debian

So erstellen Sie einen Sudo-Benutzer unter CentOS