【エスイーリナックス】
SELinux とは?
最終更新:
💡 権限に加えて、ラベルとポリシーでアクセスを制御
Linuxカーネルのセキュリティ機能。通常のファイル権限に加えて、プロセスや資源のラベルとポリシーに基づく強制アクセス制御(MAC)を行う。
📌 このページのポイント
- 通常の権限(DAC)で許可された操作も、SELinuxのポリシーで拒否されることがある
- Enforcingはポリシーを強制し、PermissiveはSELinuxによる拒否をせず記録する。Disabledは無効
- 制限の範囲はポリシーや実行ドメインによる。rootだから全操作が許可されるとも、必ず強く制限されるとも言えない
- アクセス拒否はログ・ラベル・設定を調べる。ログから許可規則を足す前に原因を確認する
SELinuxは何を制限するの?
通常のrwxの権限とは別なの?
追加の判定だよ。通常のユーザー・グループなどによる権限で拒否されれば、SELinuxはその操作を許可し直さない。通常の権限で許可された場合でも、EnforcingならSELinuxのポリシーが拒否できる。DACとMACの両方を通る必要があるんだ。
rootならSELinuxも無視できる?
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
💬 プロセスやファイルなどの資源に付いたラベルを使い、許可する操作をポリシーで決める機能だよ。