Der Trend zu Bring your own Device hat sich nicht selten zu einem Albtraum für IT-Abteilungen entwickelt. Zwar sind die Devices oft smart und einfach in der ... (mehr)

Logging für Systemaufrufe

Möchten Sie eine Regel für das Loggen von Syscalls schreiben, sieht die allgemeine Syntax wie folgt aus:

-a Aktion, Liste -S Systemcall -F Feld=Wert -k Key

Mit "-a" teilen Sie der Rule Engine mit, dass sie eine Regel an die bestehende Regel-Kette anhängen möchten. Als mögliche Werte können hier "always" und "never" zum Einsatz kommen. Wobei "always" in jedem Fall ein Log-Event erzeugt, wenn die Match-Kriterien stimmen, während "never" das aufgetretende Event ignoriert und somit kein Log-Eintrag erzeugt wird. Mittels "-S" lässt sich der zu überwachende Syscall angeben und "-F" bestimmt ein Regelfeld. Hiervon existieren mehrere Dutzende, die in der Manpage zu "auditctl" sehr gut beschrieben sind. Ein mögliches Regelfeld wäre beispielsweise "auid", womit sich der zu überwachende Syscall an einen bestimmten Account binden lässt.

Die folgende Regel loggt alle Events, bei denen ein Benutzer mit der Login-UID 1000 einen "open"-Systemcall ausführt. Üblicherweise erfolgt dies beim Öffnen einer Datei:

-a exit,always -S open -F auid=1000 -k user-actions

Grundsätzlich lassen sich alle vorhandenen Systemcalls loggen. Eine Übersicht zeigt die Manpage zu "syscalls".

Sollen einige der automatisch geloggten Event-Typen, wie etwa ein User-Login, nicht geloggt werden, können Sie hierfür Regeln in die "exclude"-Liste schreiben:

-a exclude,always -F msgtype=SYSTEM_BOOT

So bekommt der Audit-Daemon mitgeteilt, den Event-Typ "SYSTEM_BOOT" nicht zu protokollieren. Eine Übersicht aller vorhandenen Event-Typen zeigt der folgende Befehl an:

ausearch -m 2>&1 | tr ' ' '\n' | grep '[A-Z]$' | sort

Anzeigen von Log-Dateien

Das Tool "ausearch" kann ebenfalls dazu genutzt werden, die Log-Daten aus der Datei anzuzeigen. Um gezielt nach bestimmten Events zu suchen, können Sie eine Vielzahl von Filtern einsetzen. So zeigt beispielsweise das Listing "Einfache Suche" den Aufruf, um das Log nach User-Login-Events zu durchsuchen und diese dann anzuzeigen.

Listing: Einfache Suche



# ausearch -m USER_LOGIN
----
time->Sat Jun 28 20:14:10 2014
type=USER_LOGIN msg=audit(1403979250.412:116733): pid=31587 uid=0 auid=1000 ses=1445 subj=system_u:system_r:sshd_t:s0-s0:c0.c1023 msg='op=login id=1000 exe="/usr/sbin/sshd" hostname=localhost addr=::1 terminal=/dev/pts/9 res=success'

Über die Option "-ts" suchen Sie hierbei nach User-Logins ab einem bestimmten Zeitpunkt, "-te" hingegen beschränkt die Suche bis zu einem Zeitpunkt. Möchten Sie Log-Einträge sehen, die auf Basis der zuvor vorgestellten Datei-Zugriffsregeln generiert wurden, verwenden Sie hierfür die Option "-k".

Das Listing "Kombinierte Suche" zeigt ein Beispiel mit einigen anderen Optionen kombiniert. Hier zeigt "ausearch" alle Zugriffe auf die Datei an, die mit dem Key "hosts-file" verbunden ist. Eine entsprechende Regel wurde zuvor mittels "auditctl" eingerichtet. Zusätzlich erhält "ausearch" die Anweisung, die Ausgabe auf Events vom heutigen Tage und auf Zugriffe des Benutzers mit der Login-UID 1000 zu beschränken.

Listing: Kombinierte Suche



# ausearch -k hosts-file -ts today -ul 1000
----
time->Tue Jul 1 16:36:00 2014
type=PATH msg=audit(1404225360.791:124138): item=0 name="/etc/hosts" inode=2755966 dev=fd:02 mode=0100644 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:net_conf_t:s0 nametype=NORMAL type=CWD msg=audit(1404225360.791:124138): cwd="/home/tscherf"
type=SYSCALL msg=audit(1404225360.791:124138): arch=c000003e syscall=2 success=yes exit=3 a0=7fff67b1e9fc a1=0 a2=1fffffffffff0000 a3=3109e85ad0 items=1 ppid=7144 pid=11992 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts6 ses=1748 comm="cat" exe="/usr/bin/cat" subj=staff_u:staff_r:staff_t:s0-s0:c0.c1023 key="hosts-file"
comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023