如何使用auditd记录进程及其所有后代所做的所有系统调用

Sté*_*las 15 linux audit linux-audit

我可以

auditctl -a always,exit -S all -F pid=1234
Run Code Online (Sandbox Code Playgroud)

记录所有由 pid 1234 完成的系统调用,并且:

auditctl -a always,exit -S all -F ppid=1234
Run Code Online (Sandbox Code Playgroud)

对于它的孩子,但我如何覆盖孙辈和他们的孩子(现在和未来)?

我不能依赖会改变的 (e)uid/(e)gid。

(请注意,使用strace也不是一种选择)

Oli*_*lac 1

只是提出一些建议,但现在没有任何方法可以尝试......但只是从帖子本身猜测

这是一个解决方案的建议:

假设最上面的进程ID在$pid中,并且在Linux上也ps -T给出了进程树(我现在无法访问Linux)

for eachpid in $(ps -T "$pid" | awk '{print $1}' | grep -v 'PID')
do
   auditctl -a always,exit -S all -F pid=$eachpid  >somelog_${eachpid}.log 2>&1
done
Run Code Online (Sandbox Code Playgroud)

当然,ps -T "$pid"如果那个在 Linux 上不起作用,请替换为 linux 的等效项(或者通过 awk-ing“pstree -p”输出找到它,pid 将位于括号之间)

  • 谢谢,但这并不涵盖“未来”的子进程,并且经常在循环中运行它不会涵盖短期进程。而且 pid 的重复使用也会导致问题。 (2认同)