web-dev-qa-db-ja.com

プロセスとそのすべての子孫によって行われたすべてのシステムコールをauditdでログに記録する方法

できます

auditctl -a always,exit -S all -F pid=1234

Pid 1234によって実行されたすべてのシステムコールをログに記録するには、次のようにします。

auditctl -a always,exit -S all -F ppid=1234

その子供たちのために、しかし私はどのように孫と彼らの子供たち(現在と未来)もカバーするのですか?

変化する(e)uid /(e)gidは信頼できません。

straceの使用もオプションではないことに注意してください)

13

今すぐ試すことのできない提案をするだけです...投稿自体から推測するだけです

これが解決策の提案です:

最上位のプロセス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

もちろん、ps -T "$pid"をLinuxの同等のものに置き換えます。これがLinuxで機能しない場合(または「pstree -p」の出力をawk-ingして見つけると、pidは括弧内になります)

1
Olivier Dulac