Protokollieren Sie alle Root-Aktivitäten mit dem ursprünglichen Benutzernamen, der zu root verklagt wurde

11

Was ist die bevorzugte Methode, um zu verfolgen, wer in den Protokollen als Root fungiert, wenn die Root-Anmeldung deaktiviert ist (SSH), Benutzer jedoch ausgeführt werden können sudo -ioder su -Root werden können? Ich möchte jedem Befehl auch den ursprünglichen Benutzernamen folgen. RHEL 6 oder ein beliebiges Linux-Rsyslog usw.

Gregg Leventhal
quelle

Antworten:

7

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.rulesDatei 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.

freb
quelle
Wenn Sie nach etwas suchen, das auditd ersetzt und die Korrelation der Rohereignisse für Sie
übernimmt
3

In Red Hat-Distributionen verwenden Sie normalerweise das /var/log/secureProtokoll, um zu identifizieren, wer sich sudoauf einem Fedora / CentOS / RHEL-System angemeldet oder verwendet hat.

Beispiele

Sudo Beispiel
$ sudo -Es

Protokoll Ergebnis:

1. September 19:32:51 greeneggs sudo: saml: TTY = pts / 2; PWD = / home / saml; USER = root; BEFEHL = / bin / bash

su Beispiel
$ su -

Protokoll Ergebnis:

1. September 19:34:49 greeneggs su: pam_unix (su-l: session): Sitzung für Benutzer root von saml geöffnet (uid = 1000)

slm
quelle
3

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.

Fred der magische Wunderhund
quelle