Das Linux-Kernel-Subsystem "audit" kann das tun, was Sie brauchen.
zB wenn Sie diese Befehle ausführen:
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve
Dann wird jedes Ausführungsereignis protokolliert und es werden viele Informationen dazu bereitgestellt
zB das ist die Ausgabe von mir läuft tail /var/log/audit/audit.log
exit=0 a0=7f0e4a21e987 a1=7f0e4a21e6b0 a2=7f0e4a21e808 a3=8 items=2 ppid=906 pid=928 auid=500 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=1 comm="tail" exe="/usr/bin/tail" subj=kernel key=(null)
type=EXECVE msg=audit(1543671660.203:64): argc=2 a0="tail" a1="/var/log/audit/audit.log"
type=CWD msg=audit(1543671660.203:64): cwd="/home/sweh"
type=PATH msg=audit(1543671660.203:64): item=0 name="/usr/bin/tail" inode=266003 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PATH msg=audit(1543671660.203:64): item=1 name="/lib64/ld-linux-x86-64.so.2" inode=273793 dev=fd:03 mode=0100755 ouid=0 ogid=0 rdev=00:00 obj=unlabeled objtype=NORMAL cap_fp=0000000000000000 cap_fi=0000000000000000 cap_fe=0 cap_fver=0
type=PROCTITLE msg=audit(1543671660.203:64): proctitle=7461696C002F7661722F6C6F672F61756469742F61756469742E6C6F67
Es gibt einige interessante Werte, die gesehen werden können; Beispiel: "auid" ist 500, was meine Login-ID ist, obwohl "uid" Null ist (weil ich unter laufe su
). Auch wenn der Benutzer möglicherweise das Konto gewechselt hat su
oder sudo
wir dennoch auf seine "Audit-ID" zurückgreifen können
Jetzt gehen diese auditctl
Befehle bei einem Neustart verloren. Sie können sie in eine Konfigurationsdatei einfügen (z. B. im /etc/audit/rules.d/
Verzeichnis unter CentOS 7). Der genaue Speicherort hängt von Ihrer Betriebssystemversion ab. Die auditctl
Handbuchseite soll hier helfen.
Beachten Sie jedoch, dass dadurch viele Protokollnachrichten generiert werden. Stellen Sie sicher, dass Sie genügend Speicherplatz auf der Festplatte haben!
Bei Bedarf können die Regeln auf einen bestimmten Benutzer oder einen bestimmten Befehl beschränkt werden.
Und auch Vorsicht; Wenn ein Benutzer das Kennwort in die Befehlsausführung eingibt (z. B. mysql --user=username --password=passwd
), wird dies protokolliert.
auditd
die Befehlszeilenargumente sowie das ausgeführte Programm aufzuzeichnen? serverfault.com/questions/765179/…