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


13

できます

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もオプションではないことに注意してください)


4
OMG、OMG、OMG、ステファン尋ねる質問が...(私はタイトル、思考からここに来たstrace -s知っていたすぐに求めていた^^その後私のこぎりと「彼はすでにそれを知っている!」)...ステファン、することができます多分:1)psの「ツリー」オプションを使用してpidのリストを作成し、2)ツリーにリストされているすべてのpidでauditctl(s)を起動しますか?(つまり、複数の "pid = ...."?または複数のauditctlをそれぞれ1つにできますか?)または "dumb"の方法:auditctlすべて、および "pid | pid | pid"にある種のegrep (各行に表示されますか?)(注意:linux atmにアクセスできないため、情報がどのように表示されるかわかりません)
Olivier Dulac 14年

あなたが使うかもしれないトリック(もう一度、私はauditdの詳細を知らず、今のところ試せません):最上位の親を起動するときに特定の環境変数を指定し、この変数が設定されているすべてのプロセスを監査しますか?
オリビエデュラック14年

@OlivierDulac、何らかの方法でプロセスをマークする(それは子供に継承されます)ことを念頭に置いています。しかし、監査ルールが一致する可能性のあるもののリストは非常に薄い(sid、pgidさえも...)。たぶんSELinuxのものかもしれませんが、私はSELinuxについて最初に知っていることはありません。多分名前空間を処理しますか?
ステファンシャゼル14年

最上位の親は独自のプロセスグループに属することができますか?(en.wikipedia.org/wiki/Process_group
オリヴィエデュラック

2
それがあなたのためのオプションであるならば、私は多分あなたのプログラムを特定のコンテナで実行すると思った。このバグスレッドを正しく理解しいれば、カーネル≥3.13で動作するはずです。それ以外は、SELinuxと監査UID以外の方法はありません。AUIDはユースケースに適用されますか?
ジル「SO-悪であるのをやめる」14年

回答:


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

もちろん、ps -T "$pid"Linuxで動作しない場合は、Linuxの同等のものに置き換えてください(または、「pstree -p」の出力をawkして検索すると、pidが括弧の間になります)


2
感謝しますが、それは「未来の」子供を対象とせず、ループ内で実行しても短命のプロセスを対象としないことがよくあります。また、pidの再使用も問題を引き起こします。
ステファンシャゼラス14年

すべての有効なポイント...そして、あなたが望むものはおそらく「最重要指名手配」機能であり、したがってすでにauditctlレベルに存在する可能性があると信じています(しかし、それは確かに現在マンページに表示されません):将来のバージョンのために提案(または...)される予定です。私はプロセスの「ツリーをたどる」方法を思い出しません...しかし、1)いくつかのスクリプトに通常の「ps -T」同等物を実行させ、2)別のスクリプトがすぐに最初のものを殺すかもしれませんpidは3)1)からのpidのリストが変更されるたびに、それらのpidのauditctlを追加/削除しますか?(やることはそれほど難しくない)
オリビエデュラック14年

1
(私の最後のコメントは、非常に短命なプロセスのpbを解決しません...これには、カーネルレベル自体で何かが必要な場合があります。カーネルメーリングリスト)
オリビエデュラック14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.