Die robustesten Methoden scheinen auditd zu sein:
http://blog.ptsecurity.com/2010/11/requirement-10-track-and-monitor-all.html
Auditd fängt grundsätzlich alle Systemaufrufe ab und vergleicht sie mit Ihren Regeln. In Ihrer /etc/audit/audit.rules
Datei hätten Sie also ungefähr Folgendes:
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320
# Feel free to add below this line. See auditctl man page
-a always,exit -F euid=0 -F perm=wxa -k ROOT_ACTION
Die letzte Regel ist die einzige nicht standardmäßige Regel.
Der Hauptnachteil dieses Ansatzes (und der Grund, warum ich diese Frage bei der Suche nach Alternativen gefunden habe) ist, dass die Rohprotokolldateien ziemlich kryptisch sind und erst nach dem Ausführen des Abfrageprogramms für die Rohprotokolldatei hilfreich sind: ausearch
Eine Beispielabfrage für diese Regel wäre:
ausearch -ts today -k ROOT_ACTION -f audit_me | aureport -i -f
Eine vernünftige Lösung wäre wahrscheinlich, ein Cron zu erstellen, das Ihre unformatierten Auditd-Protokolle abfragt und sie dann an Ihre Protokollierungslösung sendet.
In Red Hat-Distributionen verwenden Sie normalerweise das
/var/log/secure
Protokoll, um zu identifizieren, wer sichsudo
auf einem Fedora / CentOS / RHEL-System angemeldet oder verwendet hat.Beispiele
Sudo BeispielProtokoll Ergebnis:
su BeispielProtokoll Ergebnis:
quelle
Wenn Sie kooperierende Benutzer haben, können Sie rootsh so einrichten, dass alles, was der Root-Benutzer eingibt, in syslog protokolliert wird.
http://linux.die.net/man/1/rootsh
rootsh rpms sind in EPEL verfügbar.
Die Version von sudo unter RHEL6 kann auch stdout für jede sudo-Sitzung in einer Datei protokollieren. Schauen Sie in die Manpage sudo_plugins.
Keiner dieser Ansätze ist vollständig kugelsicher.
quelle