Podsystem „audytu” jądra systemu Linux może wykonać to, czego potrzebujesz.
np. jeśli uruchomisz następujące polecenia:
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve
Następnie każde zdarzenie wykonania jest rejestrowane i wokół niego znajduje się wiele informacji
np. to jest wynik mojego działania 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
Istnieje kilka interesujących wartości, które można zobaczyć; np. „auid” to 500, co jest moim identyfikatorem logowania, mimo że „uid” wynosi zero (bo pod którym pracuję su
). Więc nawet jeśli użytkownik mógł zmienić konto su
lub sudo
nadal możemy wyśledzić jego „identyfikator kontroli”
Teraz te auditctl
polecenia zostaną utracone przy ponownym uruchomieniu. Możesz umieścić je w pliku konfiguracyjnym (np. W /etc/audit/rules.d/
katalogu na CentOS 7). Dokładna lokalizacja zależy od wersji systemu operacyjnego. Strona auditctl
podręcznika powinna tutaj pomóc.
Uważaj jednak ... spowoduje to wygenerowanie wielu komunikatów dziennika. Upewnij się, że masz wystarczająco dużo miejsca na dysku!
W razie potrzeby reguły można ograniczyć do określonego użytkownika lub określonego polecenia.
A także strzeżcie się; jeśli użytkownik wprowadzi hasło do wykonania polecenia (np. mysql --user=username --password=passwd
), zostanie ono zarejestrowane.
auditd
nagranie argumentów wiersza poleceń oraz uruchomienia programu? serverfault.com/questions/765179/…