【エスイーリナックス】

SELinux とは?

💡 万が一の侵入でも被害を最小限に食い止めるボディガード
📌 このページのポイント
SELinux — 強制アクセス制御(MAC) httpd httpd_t SELinux ポリシー ラベル(コンテキスト)で判定 /var/www/ httpd_sys_content_t /etc/shadow shadow_t → 拒否 DAC(従来のパーミッション) root なら全アクセス可能 → root 奪取で全滅 MAC(SELinux) ポリシーで許可された操作のみ → root でも制限される Enforcing ポリシー強制 Permissive ログのみ(テスト用) Disabled 無効 getenforce / setenforce / restorecon で管理
SELinux のポリシー適用のイメージ
ひよこ ひよこ

SELinuxってよく「無効にしろ」って書いてあるけど、何が大変なの?

ペンギン先生 ペンギン先生

SELinuxはプロセスごとに「何のファイルにアクセスできるか」を厳密に制御するんだ。だから正しく設定しないとアプリが動かなくなることがある。でも「とりあえず無効」は最悪の対処法だよ。

ひよこ ひよこ

通常のパーミッション(rwxとか)と何が違うの?

ペンギン先生 ペンギン先生

通常のパーミッション(DAC)はユーザーベースの制御だけど、SELinux(MAC)はプロセスベースの制御なんだ。たとえばWebサーバーが乗っ取られても、SELinuxのポリシーでWebサーバーがアクセスできるファイルが限定されていれば、被害をそのプロセスの範囲に封じ込められるよ。

ひよこ ひよこ

Permissiveモードって何に使うの?

ペンギン先生 ペンギン先生

ポリシー違反を検出してログに記録するけど、実際にはブロックしないモードだよ。新しいアプリを導入するときに、まずPermissiveで動かしてどんなアクセスが必要か調査し、ポリシーを調整してからEnforcingに切り替えるのが正しい手順なんだ。

ひよこ ひよこ

トラブルが起きたときはどうデバッグするの?

ペンギン先生 ペンギン先生

/var/log/audit/audit.log にSELinuxの拒否ログが記録されるから、ausearchやsealertコマンドで分析するよ。audit2allowを使えば、拒否されたアクセスを許可するポリシーモジュールを自動生成できる。確かにSELinuxは学習コストが高いけど、PCI DSSなどのセキュリティ基準ではMACが求められるし、本当にサーバーを守りたいなら避けて通れない技術だよ。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SELinux」って出てきたら「Linuxの強制アクセス制御で被害を最小化する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Security-Enhanced Linux」 = セキュリティ強化Linux
💬 アメリカ国家安全保障局(NSA)が開発に関わったセキュリティ機能だよ
← 用語集にもどる