Il sottosistema "audit" del kernel Linux può fare ciò di cui hai bisogno.
ad esempio se si eseguono questi comandi:
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve
Quindi viene registrato ogni evento di esecuzione e vengono fornite molte informazioni al riguardo
ad esempio questo è l'output di me che corro 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
Ci sono alcuni valori interessanti che possono essere visti; ad esempio "auid" è 500, che è il mio ID di accesso, anche se "uid" è zero (perché sto correndo sotto su
). Pertanto, anche se l'utente può aver cambiato account su
o sudo
è ancora possibile risalire al proprio "ID di controllo"
Ora quei auditctl
comandi andranno persi al riavvio. Puoi inserirli in un file di configurazione (ad es. Nella /etc/audit/rules.d/
directory, su CentOS 7). La posizione esatta dipenderà dalla versione del tuo sistema operativo. La auditctl
pagina di manuale dovrebbe aiutare qui.
Attenzione, però ... questo causerà la generazione di molti messaggi di registro. Assicurati di avere abbastanza spazio sul disco!
Se necessario, le regole possono essere limitate a un utente specifico o a un comando specifico.
E anche attenzione; se un utente inserisce la password nell'esecuzione del comando (ad es. mysql --user=username --password=passwd
), questo verrà registrato.
auditd
registrare gli argomenti della riga di comando e il programma eseguito? serverfault.com/questions/765179/…