Website-Suche

Lernen Sie die Linux-Systemüberwachung mit dem Auditd-Tool unter CentOS/RHEL


Unter Systemauditierung versteht man einfach die eingehende Analyse eines bestimmten Zielsystems: Ein Audit besteht aus einer Untersuchung der verschiedenen Teile, aus denen dieses System besteht, mit kritischer Bewertung (und ggf. Tests) in verschiedenen Interessenbereichen.

Lesen Sie auch: Lynis – Sicherheitsüberwachungs- und Scan-Tool für Linux-Systeme

Eines der kritischen Subsysteme auf RHEL/CentOS, dem Linux-Prüfsystem, das allgemein als auditd bekannt ist. Es implementiert eine Möglichkeit, sicherheitsrelevante Informationen auf einem System zu verfolgen: Es verwendet vorkonfigurierte Regeln, um große Mengen an Informationen über Ereignisse, die auf dem System stattfinden, zu sammeln und diese in einer Protokolldatei aufzuzeichnen, wodurch ein Prüfversuch erstellt wird.

Es kann Informationen wie Datum und Uhrzeit, Art und Ergebnis eines Ereignisses aufzeichnen; Benutzer, die das Ereignis verursacht haben, alle an Dateien/Datenbanken vorgenommenen Änderungen; Verwendung von Systemauthentifizierungsmechanismen wie PAM, LDAP, SSH und anderen.

Auditd registriert außerdem alle an den Audit-Konfigurationsdateien vorgenommenen Änderungen oder alle Versuche, auf Audit-Protokolldateien zuzugreifen, sowie alle Versuche, Informationen in das oder aus dem System zu importieren oder zu exportieren, sowie viele andere sicherheitsrelevante Informationen.

Warum ist das Linux Audit System wichtig?

  1. Es erfordert keine externen Programme oder Prozesse, um auf einem System ausgeführt zu werden, wodurch es eigenständig ist.
  2. Es ist hochgradig konfigurierbar und ermöglicht Ihnen daher die Anzeige aller gewünschten Systemvorgänge.
  3. Es hilft bei der Erkennung oder Analyse potenzieller Kompromittierungen eines Systems.
  4. Es ist in der Lage, als unabhängiges Erkennungssystem zu arbeiten.
  5. Es kann mit Intrusion Detection Systemen zusammenarbeiten, um die Erkennung von Einbrüchen zu ermöglichen.
  6. Es ist ein wichtiges Instrument zur Prüfung forensischer Untersuchungen.

Die Komponenten des Linux-Prüfsystems

Das Auditsystem besteht aus zwei Kernkomponenten, nämlich:

  • User-Space-Anwendungen und Dienstprogramme/Tools und
  • Kernelseitige Systemaufrufverarbeitung – diese akzeptiert Systemaufrufe von User-Space-Anwendungen und leitet sie durch drei Arten von Filtern, nämlich: Benutzer, Aufgabe, Exit< oder ausschließen.

Der wichtigste Teil ist der user-space-Audit-Daemon (auditd), der auf der Grundlage vorkonfigurierter Regeln Informationen vom Kernel sammelt und Einträge in einer Protokolldatei generiert: dem Das Standardprotokoll ist /var/log/audit/audit.log.

Darüber hinaus ist der audispd (Audit Dispatcher Daemon) ein Ereignismultiplexer, der mit auditd interagiert und Ereignisse an andere Programme sendet, die in Echtzeit ausgeführt werden möchten Ereignisverarbeitung.

Es gibt eine Reihe von User-Space-Tools zum Verwalten und Abrufen von Informationen aus dem Audit-System:

  • auditctl – ein Dienstprogramm zur Steuerung des Audit-Systems des Kernels.
  • aussearch – ein Dienstprogramm zum Durchsuchen von Audit-Protokolldateien nach bestimmten Ereignissen.
  • aureport – ein Dienstprogramm zum Erstellen von Berichten über aufgezeichnete Ereignisse.

So installieren und konfigurieren Sie das Audit-Tool in RHEL/CentOS/Fedora

Stellen Sie zunächst sicher, dass das Audit-Tool auf Ihrem System installiert ist, indem Sie den Befehl rpm und das Dienstprogramm grep wie folgt verwenden:

rpm -qa | grep audit

Wenn Sie die oben genannten Pakete nicht installiert haben, führen Sie diesen Befehl als Root-Benutzer aus, um sie zu installieren.

yum install audit

Überprüfen Sie als Nächstes, ob auditd aktiviert ist und ausgeführt wird, und geben Sie die folgenden systemctl-Befehle auf dem Terminal ein.

--------------- On CentOS/RHEL 7 --------------- 
systemctl is-enabled auditd
systemctl status auditd
systemctl start auditd   [Start]
systemctl enable auditd  [Enable]

--------------- On CentOS/RHEL 6 --------------- 
service auditd status
service auditd start     [Start]
chkconfig auditd on      [Enable]

Jetzt werden wir sehen, wie man auditd mithilfe der Hauptkonfigurationsdatei /etc/audit/auditd.conf konfiguriert. Mit den Parametern hier können Sie steuern, wie der Dienst ausgeführt wird, z. B. den Speicherort der Protokolldatei, die maximale Anzahl von Protokolldateien, das Protokollformat, den Umgang mit vollen Festplatten, die Protokollrotation und viele weitere Optionen festlegen.

vi /etc/audit/auditd.conf

Aus der Beispielausgabe unten sind die Parameter selbsterklärend.

Audit-Regeln verstehen

Wie bereits erwähnt, verwendet auditd Regeln, um spezifische Informationen vom Kernel zu sammeln. Bei diesen Regeln handelt es sich grundsätzlich um auditctl-Optionen (siehe Manpage), die Sie in der Datei /etc/audit/rules.d/audit.rules vorkonfigurieren können (unter CentOS). 6, verwenden Sie die Datei /etc/audit/audit.rules), damit sie beim Start geladen werden.

Es gibt drei Arten von Überwachungsregeln, die Sie definieren können:

  • Kontrollregeln – diese ermöglichen die Änderung des Verhaltens des Auditsystems und einiger seiner Konfigurationen.
  • Dateisystemregeln (auch als Dateiüberwachungen bezeichnet) – ermöglichen die Überwachung des Zugriffs auf eine bestimmte Datei oder ein Verzeichnis.
  • Systemaufrufregeln – ermöglicht die Protokollierung von Systemaufrufen, die von jedem Programm durchgeführt werden.

Öffnen Sie nun die Hauptkonfigurationsdatei zur Bearbeitung:

vi /etc/audit/rules.d/audit.rules

Beachten Sie, dass der erste Abschnitt dieser Datei Kontrollregeln enthalten muss. Fügen Sie dann im mittleren Abschnitt Ihre Prüfregeln (Dateiüberwachungs- und Systemaufrufregeln) hinzu, und schließlich enthält der letzte Abschnitt Unveränderlichkeitseinstellungen, die auch Kontrollregeln sind.

Beispiele für Auditd-Kontrollregeln

-D		#removes all previous rules
-b  3074	#define buffer size
-f 4		#panic on failure 
-r 120		#create at most 120 audit messages per second

Beispiele für Auditd-Dateisystemregeln

Mit dieser Syntax können Sie Dateiüberwachungen definieren:

-w /path/to/file/or/directory -p permissions -k key_name

Wo die Option:

  • w – wird verwendet, um eine Datei oder ein Verzeichnis anzugeben, das überwacht werden soll.
  • p – zu protokollierende Berechtigungen, r – für Lesezugriff, w – für Schreibzugriff, x – für Ausführungszugriff und a – für die Änderung des Datei- oder Directorattributs.
  • -k – ermöglicht Ihnen das Festlegen einer optionalen Zeichenfolge zur Identifizierung, welche Regel (oder ein Regelsatz) einen bestimmten Protokolleintrag erstellt hat.

Diese Regeln ermöglichen es der Überwachung, Ereignisse zu überwachen, die Änderungen an diesen kritischen Systemdateien vornehmen.

-w /etc/passwd -p wa -k passwd_changes
-w /etc/group -p wa -k group_changes
-w /etc/shadow -p wa -k shadow_changes
-w /etc/sudoers -p wa -k sudoers_changes

Beispiele für Auditd-Systemaufrufregeln

Mit dem folgenden Formular können Sie eine Systemaufrufregel festlegen:

-a action,filter -S system_call -F field=value -k key_name

Wo :

  • Aktion – hat zwei mögliche Werte: immer oder nie.
  • Filter – gibt an, dass der Kernel-Regelanpassungsfilter (Aufgabe, Exit, Benutzer und Ausschluss) auf das Ereignis angewendet wird.
  • Systemaufruf – Name des Systemaufrufs.
  • Feld – gibt zusätzliche Optionen wie Architektur, PID, GID usw. an, um die Regel zu ändern.

Hier sind einige Regeln, die Sie definieren können.

-a always,exit -F arch=b64 -S adjtimex -S settimeofday -k time_change
-a always,exit -S sethostname -S setdomainname -k system_locale

Fügen Sie dann zuletzt die Unveränderlichkeitseinstellungen am Ende der Datei hinzu, zum Beispiel:

-e 1	#enable auditing
-e 2	#make the configuration immutable -- reboot is required to change audit rules
Beispielkonfigurationsdatei für Auditd-Regeln

So legen Sie Auditd-Regeln mit dem Dienstprogramm auditctl fest

Alternativ können Sie die Optionen während der Ausführung an auditd senden, indem Sie auditctl wie in den folgenden Beispielen verwenden. Diese Befehle können Regeln in der Konfigurationsdatei außer Kraft setzen.

Um alle aktuell geladenen Prüfregeln aufzulisten, übergeben Sie das Flag -l:

auditctl -l

Versuchen Sie als Nächstes, einige Regeln hinzuzufügen:

auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/group -p wa -k group_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes
auditctl -l

Grundlegendes zu Auditd-Protokolldateien

Alle Prüfmeldungen werden standardmäßig in der Datei /var/log/audit/audit.log aufgezeichnet. Um das Protokolleintragsformat zu verstehen, laden wir eine Regel und überprüfen den Protokolleintrag, der nach einem Ereignis generiert wird, das der Regel entspricht.

Vorausgesetzt, wir haben ein geheimes Backup-Verzeichnis, protokolliert diese Prüfregel alle Versuche, auf dieses Verzeichnis zuzugreifen oder es zu ändern:

auditctl -w /backups/secret_files/ -p rwa -k secret_backup

Versuchen Sie nun mit einem anderen Systemkonto, in das Verzeichnis oben zu wechseln und den Befehl ls auszuführen:

cd /backups/secret_files/
ls

Der Protokolleintrag sieht so aus.

Das obige Ereignis besteht aus drei Arten von Prüfdatensätzen. Der erste ist type=SYSCALL:

type=SYSCALL msg=audit(1505784331.849:444): arch=c000003e syscall=257 success=yes exit=3 a0=ffffffffffffff9c a1=8ad5c0 a2=90800 a3=0 items=1 ppid=2191 pid=2680 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts1 ses=3 comm="ls" exe="/usr/bin/ls" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="secret_backup"

Der zweite ist type=CWD.

type=CWD msg=audit(1505784331.849:444):  cwd="/backups/secret_files"

Und der letzte ist type=PATH:

type=PATH msg=audit(1505784331.849:444): item=0 name="." inode=261635 dev=08:01 mode=040755 ouid=0 ogid=0 rdev=00:00 obj=unconfined_u:object_r:default_t:s0 objtype=NORMAL

Eine vollständige Liste aller Ereignisfelder (wie msg, arch, ses usw.) und ihrer Bedeutung finden Sie in der Audit System Reference.

Das ist alles für den Moment. Im nächsten Artikel schauen wir uns an, wie man mit aussearch Audit-Log-Dateien abfragt: Wir erklären, wie man nach bestimmten Informationen aus den Audit-Logs sucht. Wenn Sie Fragen haben, erreichen Sie uns bitte über den Kommentarbereich unten.