auditについて(2)
普通のSELinuxでフルパス情報出力
SELinuxのログにフルパスが出ない問題だが、
Fedoraの普通のSELinuxにも当てはまることが判明。
フルパスのログは、context->dummyが1だと、取らないようにされている。
auditのルールを何も登録しないと、context->dummyが1となるようだ。
Fedoraでは、デフォルトでは、auditのルールを何も登録していない。
なので、context->dummyに1がセットされ、
フルパス情報のログ取りが行われない。
適当に
#auditctl -a exit,always -S chdir -F obj_type=syslogd_t
のようにどうでもいいルールを登録すると
フルパス情報のログが出るようになる。
が、フルパス情報のログを取ろうとすると、オーバーヘッドが発生するので注意。
解決方法の整理
MLにRFCしなきゃな。整理せねば。。
- やりたいこと
- SELinuxのフルパスログをauditのtype=PATHで得たい
- そのためには、system call auditを1に、context->dummyを0にする必要がある。
- 現状、これを実現するには、 auditctl -e 1、およびauditctlでダミーのauditルールを登録する必要がある
- 問題点1
- 組込みでは不便。フルパスログ取りのためだけに、auditctlを組込みに移植するのは面倒、無駄。
- 問題点2
- 「フルパスログが欲しい」という目的のために、auditctlでダミーのauditルールを登録するのは不自然
- SELinuxのフルパスログをauditのtype=PATHで得たい
- 案1:全部カーネルでやる
- 1) audit.hに以下の関数を公開
- a) context->dummyのゼロ/非ゼロ切り替え
- b)system call auditをenable/disableする
- 2) a)b)切り替えのインターフェース
- /selinuxfs/auditで、a)b)を呼ぶようにする
- CAP_AUDIT_CONTROLをチェックしなきゃな
- 1) audit.hに以下の関数を公開