Mein Team meldet sich bei einem Entwicklungsserver mit demselben Root-Passwort an. Wir haben keine separaten Benutzerkonten eingerichtet.
Ich versuche jetzt, ein Protokoll der Dateiänderungen zu erstellen und möchte zwischen verschiedenen Autoren unterscheiden, aber ausearch gibt immer den Namen des Benutzers zurück (also immer „root“), selbst wenn ich die Regel übergebe name_format=numeric
, die statt „root“ die IP-Adresse anzeigen sollte.
Antwort1
HINWEIS: Diese Frage wurde vom OP auch an einer anderen Stelle im Internet gestellt. Dies ist eine bearbeitete Version meiner Antwort an dieser anderen Stelle. Die Unratsamkeit mehrerer Benutzer, die sich direkt als Root anmelden, wurde dort bereits angesprochen und muss nicht erneut behandelt werden.
So wie ich es verstehe, fragen Sie, wie Sie die Prüfprotokolle so einrichten können, dass sie zeigen, von welcher IP-Adresse jede protokollierte Aktion stammt. Sie sind frustriert, weil die meisten Prüfzeilen nicht einmal hostname
und addr
-Felder haben und die wenigen, die welche haben, meist so aussehen:
node=192.168.33.9 type=USER_START msg=audit(1422241281.664:263): pid=5912 uid=0 auid=1001 ses=18 msg='op=PAM:session_open acct="root" exe="/usr/bin/sudo" hostname=? addr=? terminal=/dev/pts/4 [...]
dh mit unbekannten hostname
und addr
Werten.
Das Linux-Audit-Subsystem füllt seine Einträge nicht automatisch mit den zugehörigen Hostnamen-/IP-Informationen. Daemons wie sshd müssen sie auditd auf irgendeine Weise explizit zur Verfügung stellen (im Fall von sshd durch PAM-Aufrufe):
node=192.168.33.9 type=CRED_ACQ msg=audit(1422240837.085:202): pid=5441 uid=0 auid=501 ses=18 msg='op=PAM:setcred acct="ratb" exe="/usr/sbin/sshd" hostname=canton.local addr=192.168.33.36 terminal=ssh res=success'
Befehle auf Benutzerebene wie Ihr bevorzugter Editor tun dies überhaupt nicht, da es ihnen egal ist, woher Sie kommen.
Da sich jeder direkt als derselbe Benutzer anmeldet, müssen Sie einzelne ses
("Sitzungs-") Nummern aus demUSER_STARTAudit-Meldungen, die sshd über PAM ausgibt, und korrelieren Sie diese dann mit den ses
IDs derSYSCALLNachrichten für die Aktivität, die Sie verfolgen möchten. Dies war beispielsweise der Prüfpfad für echo hi > tmp/testing.txt
dieselbe SSH-Sitzung wie oben und hat daher dieselbe ses
ID (18):
node=192.168.33.9 type=PATH msg=audit(1422241924.835:341): item=1 name="tmp/testing.txt" inode=2631940 dev=08:22 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=CREATE
node=192.168.33.9 type=PATH msg=audit(1422241924.835:341): item=0 name="tmp/" inode=2621477 dev=08:22 mode=040755 ouid=0 ogid=0 rdev=00:00 nametype=PARENT
node=192.168.33.9 type=CWD msg=audit(1422241924.835:341): cwd="/root"
node=192.168.33.9 type=SYSCALL msg=audit(1422241924.835:341): arch=c000003e syscall=2 success=yes exit=3 a0=bc62a8 a1=241 a2=1b6 a3=10 items=2 ppid=5913 pid=5921 auid=1001 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts4 ses=18 comm="bash" exe="/bin/bash" key=(null)