
カーネルにパッチを適用せずにLinuxカーネル用のシグナルロガーを探しています。
ティンカリングに関する記事をたくさん見つけましたが、興味はありません。
私はデフォルトのUbuntu 13.04を実行しています。
# uname -a
Linux bt 3.8.0-26-lowlatency #18-Ubuntu SMP PREEMPT Tue Jun 25 22:36:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
必要なもの:pid、comm(発信者) - >信号(番号0-31) - > pid、comm(キャッチャー)
またよいです:
pidtree of sender ----- - - - - - receiver(cmd) ---- child1 of receiver, etc
/ \----child2---child1 of child2(cmd)
ppid(+cmd) ----child3(+cmd)
/ \__child4(+cmd)
ppid of ppid(cmd)
....
/
init
キャッチャーも同じだ。 +タイムスタンプ。
私が見つけたもの:
grsecurityパッチも同様の実装を持っています。
Ubuntuでこれを達成するには、簡単で簡単な方法が必要です。
答え1
部分的な解決策を提供します。
使用審査Linuxカーネルのサブシステム。監査サブシステムはコアダンプ信号を記録します。コアダンプ信号は次のとおりです。
- ABRT
- FPE
- 病気
- 辞める
- SEGV
- 罠
- システム
- 最初の反応者
- バス
- XCPU
- シンヒューズ
監査ログは /var/log/audit.log にあります。コアダンプ信号の監査ログは次のとおりです。
type=ANOM_ABEND msg=audit(1386433952.455:141): auid=1000 uid=1000 gid=1000 ses=2 pid=6664 comm="bash" reason="memory violation" sig=24
上記は、ユーザ UID 1000 の 6664 を処理するために SIGXCPU 信号を記録する例です。このログで「catcher」のcommとpidの詳細を確認できます。ログの理由フィールドが破損しています。このログを持っていても、私たちはまだ発信者について何も知りません。
構成の詳細を確認できます。ここ