仕事メモ for auditd

inotify()が無いRHEL4でファイルアクセスの統計を取るのにauditdを使ったんだが、これがまた使えないことこのうえない。auditdのログは/var/log/audit/audit.logに出力されるんだが、ログを出力するauditdの動作そのものがログに出力されるので、極端に言うと他に一切プロセスが走ってなくてもどんどんログに出力される罠。いや、syscall全体を監視しようとするのが悪いとも言えるんだけど…。仕方が無いので、auditctlの-Fオプションにaudit.logファイルのinodeを除外する設定をしてみた。

-a exit,always -S open -F inode!=3687742

kernel-2.6.13以前だとdnotify()があるのだけれど、こいつは監視するinode毎にファイルデスクリプタを消費するらしく、使い物にならない。で、ふとLinux Security Moduleがやっていることを思い出して、auditdに行き着いたというわけ。

auditdのソースをちょっと変更してみたりもしたけど、上のinodeを除外するワークアラウンドの方が短時間で結果が得られるので、逃げてみた(^^ゞ

inotify()のパッチをRHEL4カーネルに適用することも考えたけど、2.6.13でマージされたソースを見て、こりゃ大事だなと諦めた。

ちなみに、auditdのマッチポンプな仕様はその後のバージョンでは修正されている模様。自分で確認してないけど。

どうもうまくないので、systemtapにスイッチしてみることにした。