我已经auditd
在 64 位 Ubuntu 12.04 上安装了它,以追踪一些意外删除(关于 auditd 的很好的讨论)。这是我的规则(使用关键字标记删除deletes
):
-a exit,always -F arch=b64 -S unlink -S rmdir -k deletes
auditctl -l
表明已经配置好了:
LIST_RULES: exit,always arch=3221225534 (0xc000003e) key=deletes syscall=rmdir,unlink
这非常有效:
# mkdir xyx
# rmdir xyz
# ausearch -k deletes|grep 'xyz'
type=PATH msg=audit(1406147794.737:1880): item=1 name="xyz" inode=12386307 dev=08:04 mode=040755 ouid=0 ogid=0 rdev=00:00
但事实并非如此:
# touch xyx
# rm xyx
# ausearch -k deletes|grep 'xyz'
我可以看到记录了所有其他类型的删除。我遗漏了什么?
答案1
我遇到了同样的问题,刚刚找到了解决方案。您将需要使用unlinkat
系统调用跟踪:
-a exit,always -F arch=b64 -S unlink -S rmdir -S unlinkat
因为rm
没有使用unlink
。谢谢泰利恩为了答案发布在 SuperUser 上:
答案2
如果这
-a exit,always -F arch=b64 -S unlink -S rmdir -k deletes
您的命令是在哪里告诉它记录的rm
?我认为它会记录rmdir
,但根本不会记录rm
(从您的 2 个示例可以看出,情况似乎如此)。
查看 auditd 布局我假设您需要类似以下内容:
-a exit,always -F arch=b64 -S unlink -S rm -S rmdir -k delete