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

32

Ich möchte die Aktivitäten aller Benutzer auf meinem Server überwachen.

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

Ich habe das Tool acct überprüft, aber es werden nicht alle Befehle aufgelistet. (Bitte korrigieren Sie mich, wenn ich einige Optionen verpasst habe, die dies bereits tun).

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

Supratik
quelle
1
. Man Script (1)
30.
Eine nette Referenz 8gwifi.org/docs/linux-monitor-commands.jsp
anish

Antworten:

32

Fügen Sie diese Zeile zu Ihrer Pam-Konfiguration hinzu, die für die Anmeldung verantwortlich ist (die Systemauthentifizierung auf Distributionen, die auf Red Hat basieren).

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 dabei ist, dass es ein bisschen 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 gesamte Sitzung aufzuzeichnen.

Bearbeiten: Oh und Sie können Aureport verwenden, um eine Liste zu generieren, 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>
Matthew Ife
quelle
Danke für die Details. Ich verwende Ubuntu 10.04 LTS. Wenn ich den Ordner / lib / security / überprüfe, ist das Modul nicht vorhanden, aber für dieses Modul ist eine Manpage vorhanden. Ich glaube, ich bin auf diesen Fehler gestoßen. Bugs.launchpad.net/ubuntu/+source/pam/+bug/588547 Kann ich das Modul auf andere Weise installieren?
Supratik
Der Fehlerbericht schlägt vor, dass ein Fix und ein Update verteilt wurden.
Matthew Ife
@Mlfe Ich habe den PAM-Quellcode kompiliert und die .so-Datei in / lib / security / kopiert, und es hat funktioniert. Danke noch einmal.
Supratik
1
@CameronKerr: Das Kennwortproblem wurde behoben: redhat.com/archives/linux-audit/2013-May/msg00007.html
Yohann
3
Beachten Sie, dass der auditdDämon zuerst aktiviert werden muss, damit das oben Genannte funktioniert (bei meiner CentOS 6.7-Installation war dies nicht die Standardeinstellung). Um den Daemon zu starten, verwenden Sie: service auditd startund um diese Änderung (nach einem Neustart) persistent zu machen, verwenden Sie chkconfig auditd on Source: access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/… und access.redhat.com/documentation/en-US/ Red_Hat_Enterprise_Linux /…
jonny
8

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

Sie können dieses Lernprogramm auch überprüfen. Es liegt zwar nicht im Rahmen Ihrer Frage, zeigt jedoch, wie das Auditsystem funktioniert.

Vladimir Blaskov
quelle
2

Sie könnten snoopy verwenden .

Es ist eine einfache Befehlsprotokollierungsbibliothek und keine richtige Überwachungslösung (die leicht umgangen werden kann). Offenlegung: Ich bin aktueller Snoopy Betreuer.

Bostjan Skufca
quelle
2

Ein weniger bekannter Trick, aber der einfachste ist, einfach die eingebauten Audit-Funktionen von zu nutzen sudo. Sudo wird mit einem sudoreplayBefehl ausgeliefert, der das Abspielen von Sessions vereinfacht. Es werden sogar vimSitzungen weitergeleitet (wie Sie vorschlagen).

So verwenden Sie es in wenigen einfachen Schritten:

  1. Installieren Sie sudoshauf Ihrem System; Dies ist ein Shell-Wrapper um den sudoBefehl, der einen Benutzer sudoselbst (nicht root) macht und als Systemanmeldeshell verwendet werden kann
  2. Aktivieren Sie die sudoProtokollierung. 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 hinzu /etc/shells, um Anmeldungen zuzulassen: /usr/bin/sudosh

    Tipp : Um zu verhindern, dass Benutzer sich mit anderen Shells anmelden, entfernen Sie diese anderen Shells von /etc/shells.

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

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

Erik Osterman
quelle
1

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.

Alle von einem bestimmten Benutzer aufgerufenen Befehle auflisten ...

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

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

Med Ali Difallah
quelle
3
In der Frage wurde gesagt: 'acct listet nicht die vollständigen Befehle auf'.
Putnik