LinuCレベル3 セキュリティスペシャリスト アクセスおよび権限制御の強化 問6
アクセスおよび権限制御の強化/SELinux による強制アクセス制御RHEL 9系で、SELinuxが原因と思われる動作不良があるのに、/var/log/audit/audit.log に type=AVC の拒否ログが記録されない。ポリシーの dontaudit ルールで隠れている拒否を確認する手順として適切なものはどれか。
当サイトのオリジナル問題(LinuCレベル3 セキュリティスペシャリストの出題範囲「アクセスおよび権限制御の強化」に対応。実際の試験問題ではありません)
- Aaudit2allow -M mypol でモジュールを作り、semodule -i mypol.pp で読み込む
- Bsetenforce 0 でpermissiveにし、audit.log の type=AVC をすべて確認する
- Crestorecon -RF / でファイルシステム全体のコンテキストを既定値に戻す
- Dsemodule -DB でdontauditルールを無効化してポリシーを再構築し、再現させる
正解:D
解説
SELinuxポリシーには、害が無いのに頻発する拒否をログに残さないための dontaudit ルールが多数含まれています。これに該当する拒否はenforcing・permissiveのどちらでもログに出ないため、semodule -DB(-D: dontauditを除く、-B: 再構築)で一時的に無効化してから現象を再現させ、AVCを確認します。調査が終わったら semodule -B で元に戻します。反対に auditallow は、許可したアクセスもログに記録させるためのルールです。
選択肢ごとの解説
- A誤り。audit2allowは記録された拒否ログから許可ルールを作るツールです。拒否が記録されていない状態では材料が無く、根拠の無い許可を追加することにもなります。
- B誤り。permissiveモードでも dontaudit に該当する拒否はログに出ません。モードを変えても隠れた拒否は見えません。
- C誤り。restoreconはファイルのコンテキストを定義どおりに戻す操作で、ラベルが原因なら解決することはあっても、dontauditで隠れた拒否を可視化するものではありません。
- D正しい。semodule -DB でdontauditを外すと、それまで隠れていた拒否がAVCとして記録されます。調査後は semodule -B で戻します。