it-swarm.com.de

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

Ich möchte alle Aktivitäten des Benutzers auf meinem Server überwachen.

Selbst wenn der Benutzer einen Shell-Befehl von einem Editor wie vim aus ausführt, möchte ich sie in der Protokolldatei sehen.

Ich habe das Tool-Konto überprüft, aber es listet nicht die vollständigen Befehle auf. (Bitte korrigieren Sie mich, wenn ich einige Optionen verpasst habe, die dies bereits tun).

Welches Linux-Tool sollte ich mir ansehen, um dieses Problem zu lösen?

34
Supratik

Fügen Sie diese Zeile zu Ihrer Pam-Konfiguration hinzu, die für die Anmeldung verantwortlich ist (die Systemauthentifizierung 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 folgt:

 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 dabei 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 alles.

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>
33
Matthew Ife

Die beste Lösung für Ihr Problem wäre das in Linux integrierte audit System. Verwenden man 8 auditd oder überprüfen Sie diese Seite für weitere Informationen: http://linux.die.net/man/8/auditd .

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

9

Sie könnten snoopy verwenden.

Es ist eine einfache Befehlsprotokollierungsbibliothek und keine geeignete Überwachungslösung (leicht zu umgehen). Offenlegung: Ich bin derzeit Snoopy Maintainer.

2
Bostjan Skufca

Ein weniger bekannter Trick, aber mit Sicherheit der großartigste, ist die Verwendung der integrierten Überwachungsfunktionen von Sudo. Sudo wird mit einem Befehl sudoreplay geliefert, der die Wiedergabe von Sitzungen vereinfacht. Es werden sogar vim Sitzungen weitergeleitet (wie Sie vorschlagen).

So verwenden Sie es in wenigen einfachen Schritten:

  1. Installieren Sie sudosh auf Ihrem System. Dies ist ein Shell-Wrapper um den Befehl Sudo, der einen Benutzer Sudo selbst macht (nicht root) und als Systemanmelde-Shell verwendet werden kann
  2. Aktivieren Sie die Sudo -Protokollierung. Bearbeiten /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 um Logins damit zuzulassen: /usr/bin/sudosh

    Tipp : Um zu verhindern, dass Benutzer andere Shells zum Anmelden verwenden, entfernen Sie diese anderen Shells aus /etc/shells.

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

Weitere Informationen finden Sie unter: https://github.com/cloudposse/sudosh/

2
Erik Osterman

hier ist eine magische Lösung: http://www.cyberciti.biz/tips/howto-log-user-activity-using-process-accounting.html

  • yum install psacct (redhat)
  • Sudo apt-get install acct

sie können Statistiken über Benutzerbefehle/Verbindungen usw. anzeigen.

Listen Sie alle Befehle auf, die von einem bestimmten Benutzer aufgerufen werden ...

Durchsuchen Sie die Abrechnungsprotokolle nach dem Befehlsnamen: $ lastcomm rm $ lastcomm passwd

und so weiter, für weitere Informationen besuchen Sie bitte den obigen Link ..

1