SELinuxは正しく設計すれば非常に強力ですが、 設計を誤ると「無効化したくなる存在」になります。
本記事では、現場で繰り返されてきた SELinuxポリシー設計のアンチパターンを紹介し、 なぜそれが危険なのかを解説します。
目次
アンチパターン① とりあえず setenforce 0
概要
障害が出た瞬間に enforcing を無効化する。
なぜ危険か
- 原因が永遠に分からない
- セキュリティ低下
- 戻し忘れ事故
正しい考え方
まず AVC ログを確認し、原因を特定する。
アンチパターン② audit2allowの無差別適用
概要
AVCログを全部ポリシー化する。
なぜ危険か
- 不要な権限まで許可
- 意図しない挙動
- ポリシーがブラックボックス化
正しい考え方
必要な1行だけを精査して適用。
アンチパターン③ chconの常用
概要
すべて chcon で解決しようとする。
なぜ危険か
- 再起動で消える
- restoreconで壊れる
- 設定履歴が残らない
正しい考え方
恒久対応は semanage fcontext。
アンチパターン④ 標準サービスに独自ポリシーを足す
概要
httpd や mysqld に独自 allow を追加。
なぜ危険か
- 設計思想と乖離
- アップデート耐性なし
- 再現性がない
正しい考え方
Boolean・ポート・コンテキストで解決。
アンチパターン⑤ 権限を広げすぎる
概要
必要以上のタイプを付与。
なぜ危険か
- 攻撃面積拡大
- 事故時の影響が大きい
正しい考え方
最小権限の原則を守る。
アンチパターン⑥ 設計ドキュメントがない
概要
誰が何を許可したか分からない。
なぜ危険か
- 属人化
- 保守不能
正しい考え方
ポリシーの意図を必ず残す。
アンチパターン⑦ 運用前提を考えていない
概要
再起動・再デプロイを想定していない。
なぜ危険か
- 障害が再発
- 夜間対応増加
正しい考え方
再起動しても壊れない設計。
アンチパターン⑧ SELinuxを理解していないまま有効化
概要
「とりあえず有効」にする。
なぜ危険か
- トラブル時に詰む
- 結局無効化される
正しい考え方
設計 → 検証 → 本番の順。
安全なSELinux設計のチェックリスト
- 標準機能で解決できるか
- 恒久設定になっているか
- 最小権限か
- 説明できるか
まとめ
SELinuxは「難しい」のではなく、 雑に扱うと壊れるだけです。
アンチパターンを避けるだけで、 SELinuxは「頼れる守り」になります。
あわせて読みたい


SELinux enforcing環境でよくある障害事例集【原因と正しい対処】
SELinuxを enforcing のまま運用していると、 「原因不明の通信エラー」「権限はあるはずなのに動かない」 といった障害に必ず直面します。 本記事では、現場で頻発する…
あわせて読みたい


SELinux enforcing環境でWebアプリを動かす設計注意点【本番運用向け】
SELinuxを enforcing のままWebアプリを運用するのは、 セキュリティ的には正解ですが、設計を誤ると 「通信できない」「ファイルにアクセスできない」といった トラブ…
あわせて読みたい


SELinuxのAVCログを読めるようになる実践ガイド【denyの意味が分かる】
SELinuxトラブル対応で最も重要なのが AVCログ です。 「AVC denied が出ているのは分かるが、何をどう直せばいいか分からない」 という状態では、SELinuxは一生怖い存…
