我想在我的 GNU/Linux 机器上部署专注于一些更复杂场景的审计,例如执行 touch -m 'faketime' somefile 之类的命令。我对 exec 进行了跟踪,发现了普通触摸和带有时间戳修改标志的触摸之间的区别。它们分别是:
utimes("/proc/self/fd/0", NULL) = 0
utimes("/proc/self/fd/0", {{1364383142, 0}, {1364383160, 875693}}) = 0
因此,捕获 utimes 系统调用的可疑事件似乎很容易;它的第二个 (a1) 参数必须为 NULL。我尝试设置以下审计规则:
-a 退出,总是 -F arch=b32 -S utimes -F a1!=0 -k TIMESTAMP_TAMPERING
但是它没有接听电话。auditd 在 a1-4 参数中不接受值(NULL)的文本表示,至少我在尝试实现它时遇到了麻烦。有什么建议么?提前致谢。