Question
Comment trouver quel utilisateur supprime les fichiers sous un répertoire particulier sous Linux ?
Solution
Vous pouvez utiliser le service auditd pour enregistrer une notification lorsqu'une modification est apportée à un fichier ou un répertoire particulier. Vous trouverez ci-dessous un exemple qui enregistrera toute modification apportée à n'importe quel fichier sous le répertoire /tmp/dir.
1. Exécutez la commande ci-dessous pour ajouter la règle d'audit :
# auditctl -a always,exit -F dir=/tmp/dir/ -F perm=war -k file_del
Vérifiez les règles d'audit configurées :
# auditctl -l -w /tmp/dir// -p rwa -k file_del
2. Supprimez un fichier sous le répertoire /tmp/dir/ puis vérifiez le fichier audit.log :
$ date > /tmp/dir/when $ rm /tmp/dir/when
3. Vous pouvez vérifier le fichier audit.log en le suivant :
# tail -f /var/log/audit/audit.log ... type=SYSCALL msg=audit(1515697690.586:2237): arch=c000003e syscall=2 success=yes exit=3 a0=251a9f0 a1=90800 a2=251a9c0 a3=a items=1 ppid=12424 pid=12425 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="bash" exe="/bin/bash" key="file_del" type=CWD msg=audit(1515697690.586:2237): cwd="/home/test" type=PATH msg=audit(1515697690.586:2237): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=PROCTITLE msg=audit(1515697690.586:2237): proctitle="-bash" type=SYSCALL msg=audit(1515697690.861:2238): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=f2f0c0 a2=0 a3=100 items=2 ppid=12425 pid=12519 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="rm" exe="/bin/rm" key="file_del" type=CWD msg=audit(1515697690.861:2238): cwd="/home/test" type=PATH msg=audit(1515697690.861:2238): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=PATH msg=audit(1515697690.861:2238): item=1 name="/tmp/dir/when" inode=913056 dev=f9:00 mode=0100664 ouid=501 ogid=501 rdev=00:00 nametype=DELETE type=PROCTITLE msg=audit(1515697690.861:2238): proctitle=726D002F746D702F6469722F31
4. Alternativement, le fichier journal peut être recherché à l'aide de l'outil ausearch :
# ausearch -k file_del ---- time->Thu Jan 11 19:08:10 2018 type=PROCTITLE msg=audit(1515697690.586:2237): proctitle="-bash" type=PATH msg=audit(1515697690.586:2237): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL type=CWD msg=audit(1515697690.586:2237): cwd="/home/test" type=SYSCALL msg=audit(1515697690.586:2237): arch=c000003e syscall=2 success=yes exit=3 a0=251a9f0 a1=90800 a2=251a9c0 a3=a items=1 ppid=12424 pid=12425 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="bash" exe="/bin/bash" key="file_del" ---- time->Thu Jan 11 19:08:10 2018 type=PROCTITLE msg=audit(1515697690.861:2238): proctitle=726D002F746D702F6469722F31 type=PATH msg=audit(1515697690.861:2238): item=1 name="/tmp/dir/when" inode=913056 dev=f9:00 mode=0100664 ouid=501 ogid=501 rdev=00:00 nametype=DELETE type=PATH msg=audit(1515697690.861:2238): item=0 name="/tmp/dir/" inode=912888 dev=f9:00 mode=040777 ouid=0 ogid=0 rdev=00:00 nametype=PARENT type=CWD msg=audit(1515697690.861:2238): cwd="/home/test" type=SYSCALL msg=audit(1515697690.861:2238): arch=c000003e syscall=263 success=yes exit=0 a0=ffffffffffffff9c a1=f2f0c0 a2=0 a3=100 items=2 ppid=12425 pid=12519 auid=0 uid=501 gid=501 euid=501 suid=501 fsuid=501 egid=501 sgid=501 fsgid=501 tty=pts0 ses=332 comm="rm" exe="/bin/rm" key="file_del"Remarque :Ce système d'audit ne peut pas empêcher un accès indésirable. Seule une entrée de piste d'audit peut être effectuée. Audit des modifications et de l'exécution des fichiers sous Linux