【エスイーリナックス】

SELinux とは?

最終更新:
💡 権限に加えて、ラベルとポリシーでアクセスを制御

Linuxカーネルのセキュリティ機能。通常のファイル権限に加えて、プロセスや資源のラベルとポリシーに基づく強制アクセス制御(MAC)を行う。

📌 このページのポイント
通常の権限の後に、ポリシーを判定Webサーバーhttpd_tDAC通常の権限まず判定許可SELinuxラベル+ポリシーWeb用ファイル許可対象のラベル別サービスのデータ許可規則がない許可拒否Enforcing拒否を実施Permissive記録・拒否なしDisabledSELinux無効
Enforcingで通常の権限が許可した後の例。ラベルと規則により読み取りを許可・拒否します。DACが先に拒否した場合はSELinuxの判定には進みません。Permissiveでも通常の権限による拒否は残ります。
ひよこ ひよこ
SELinuxは何を制限するの?
ペンギン先生 ペンギン先生
プロセスがどの資源にどんな操作をしてよいかを、ラベルとポリシーで判断するよ。たとえばWebサーバーのhttpd_tという型と、Web用ファイルの型を組み合わせて許可を決める。適切な制限があれば、サーバーが侵害された場合のアクセス範囲を抑える助けになるんだ。
ひよこ ひよこ
通常のrwxの権限とは別なの?
ペンギン先生 ペンギン先生
追加の判定だよ。通常のユーザー・グループなどによる権限で拒否されれば、SELinuxはその操作を許可し直さない。通常の権限で許可された場合でも、EnforcingならSELinuxのポリシーが拒否できる。DACとMACの両方を通る必要があるんだ。
ひよこ ひよこ
rootならSELinuxも無視できる?
ペンギン先生 ペンギン先生
rootというユーザーIDだけで操作の許可は決まらないよ。制限を受ける実行ドメインなら、rootで動くプロセスにもポリシーが適用される。一方、RHEL 9では管理者を含むユーザーが既定でunconfined_uに対応付けられ、制限が少ない場合もある。実際のラベルやポリシーを確認しよう。
ひよこ ひよこ
Permissiveなら何でも通るの?
ペンギン先生 ペンギン先生
SELinuxによる拒否をせず、拒否されるはずのアクセスを記録するモードだよ。通常の権限など、ほかの仕組みによる拒否は残る。調査やポリシー開発に使えるけど、全体をPermissiveにすると制限が外れる範囲も大きい。RHELでは特定のドメインだけをPermissiveにする方法もあるよ。
ひよこ ひよこ
アプリが動かないときはどう調べるの?
ペンギン先生 ペンギン先生
まず通常の権限やSELinuxのモード、拒否ログを確認しよう。RHELではAuditが動いていれば/var/log/audit/audit.logをausearchやsealertで調べられる。ラベルの誤りやポート、booleanなどの設定を確かめ、必要に応じてrestoreconなどで直す。audit2allowで許可を増やすことを最初の対処にしないのが大切だよ。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SELinux」って出てきたら「通常の権限に加え、ラベルとポリシーでアクセスを制御する仕組み」と思えばだいたいOK!
📖 おまけ:英語の意味
「Security-Enhanced Linux」 = セキュリティを強化したLinux
💬 プロセスやファイルなどの資源に付いたラベルを使い、許可する操作をポリシーで決める機能だよ。

参考資料

← 用語集にもどる