現在位置: ホーム / みらくるブログ / 最近の SELinux は無効化の仕様が違う

最近の SELinux は無効化の仕様が違う

SELinux はラベルベースの強制アクセス制御(MAC: Mandatory Access Control)を提供してくれるセキュリティ機能ですが、最近ではOSの起動後に無効化するための機能が削除されています。

LSMとは? LSM と SELinux の関係

Linux カーネルには LSM(Linux Security Module) という複数のセキュリティモデルをサポートするフレームワークが用意されています、LSM で利用できるモジュールは複数の種類があり、カーネルのビルド時などにどのモジュールを有効にするのかということを選択することができます。選択できるモジュールの中で最も有名な実装は SELinux(Security-Enhanced Linux) というモジュールです。SELinux はラベルベースの強制アクセス制御(MAC: Mandatory Access Control)を提供してくれます。(他のモジュールは違う仕組みを提供することがあります、例えば AppArmor はパスベースの強制アクセス制御を提供します)

近年の無効化の仕様

さて、この SELinux ですが 最近の Fedora や RHEL では 設定ファイルから完全に無効化することはできなくなっています、正確にはOSの起動後に無効化するための機能が削除されています。
この変更の詳細は Fedora の wiki のページに詳しく書かれています。 https://fedoraproject.org/wiki/Changes/Remove_Support_For_SELinux_Runtime_Disable

簡単にいえば、OSの起動後に SELinux を動的に無効化できるようにしておくのは、セキュアではないためこの機能を削除しようということです。この変更は取り入れられており、カーネルコンフィグにおいて、 ’CONFIG_SECURITY_SELINUX_DISABLE’ は 設定されなくなりました。また いわゆるバニラカーネルにも SELinux の 起動後の disable は非推奨(‘deprecated’)と表示する警告が出るようになる変更が入っています。
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=89b223bfb8a89731bea4c84982b5d2ad7ba460e3
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43b666622c60bc001f2f8a19f5f97946ff53a5cc

もちろんセキュリティ面から見ればこの変更はより安全になるように考慮された物です、しかしもし完全にSELinuxを無効化した状態で使いたい場合は、SELinux の設定ファイル(‘/etc/selinux/config’)を1行書き換えるのではなく、起動時のカーネルパラメーターを変更する必要があるため、設定する対象がブートローダーに変わります。(grubby というコマンドから変更するのが推奨です、具体的なコマンドは ‘ /etc/selinux/config’ のコメントに記述があります)

設定ファイルを書き換える方法も残ってはいますが、こちらから disable にする方法では SELinux 自体はOSの起動時に一度初期化されます。(ただし ポリシーが読み込まれないため、表面上 無効化されたように見えるかもしれません、’getenforce’ コマンドからも無効化されたように見えます)


ただし、そもそも SELinux などのセキュリティ機能を無効化して運用することは意図的に不安全な状態にしていることを考慮して実行を行ってください。無効化することが必須ではなく、デバッグやSELinux ポリシーのテストに用いる場合は Permissive モードを使うことを強く検討してください。SELinux のように、歴史ある機能でもこのように一定の変更が入ることからわかるように、将来的には無効化に関する仕様は変化していき日和見的には運用できなくなるかもしれません。

 

タグ: