Le sous-système «audit» du noyau Linux peut faire ce dont vous avez besoin.
par exemple, si vous exécutez ces commandes:
auditctl -a exit,always -F arch=b64 -S execve
auditctl -a exit,always -F arch=b32 -S execve
Ensuite, chaque événement d'exécution est enregistré et de nombreuses informations sont fournies à ce sujet.
par exemple, c'est la sortie de moi en cours d'exécution 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
Il y a des valeurs intéressantes qui peuvent être vues; Par exemple, "auid" est 500, qui est mon ID de connexion, même si "uid" est zéro ('car je cours sous su
). Ainsi, même si l'utilisateur a changé de compte su
ou que sudo
nous pouvons toujours retrouver son "ID d'audit"
Maintenant, ces auditctl
commandes seront perdues lors d'un redémarrage. Vous pouvez les mettre dans un fichier de configuration (par exemple dans le /etc/audit/rules.d/
répertoire, sur CentOS 7). L'emplacement exact dépendra de la version de votre système d'exploitation. La auditctl
page de manuel devrait aider ici.
Attention, cependant ... cela entraînera la génération de nombreux messages de journal. Assurez-vous d'avoir suffisamment d'espace sur le disque!
Si nécessaire, les règles peuvent être limitées à un utilisateur spécifique ou à une commande spécifique.
Et méfiez-vous également; si un utilisateur met le mot de passe dans l'exécution de la commande (par exemple mysql --user=username --password=passwd
), il sera enregistré.
auditd
enregistrer les arguments de la ligne de commande ainsi que l'exécution du programme? serverfault.com/questions/765179/…