SELinuxについて
今回のコラムでは、Linuxのカーネルに備わっているセキュリティ機構「SE Linux」について紹介します。【連載コラム:Linuxを学ぼう(27)】
SELinuxは、Linuxのカーネルに備わっているセキュリティ機構です。SELinuxは分かりにくいと敬遠されがちですが、最近のLinuxディストリビューションでは標準でSELinuxの機能が有効になっているため、しっかりと理解しておく必要があります。
SELinuxの役割
SELinuxは、Linux上で動作するプロセスからファイルなどのリソースに対するアクセスを制御するのが主な機能です。通常のLinuxシステムではユーザーやグループのファイルに対するアクセス権で制御されますが、rootユーザーは特権ユーザーとしてすべてのファイルなどにアクセスすることができます。
これに対して、SELinuxは「強制アクセス制御」(MAC:Mandatory Access Control)と呼ばれる方式を採っています。MACはrootユーザーに対しても、設定されたアクセス制御を超えた特権を与えることがありません。多くのセキュリティ攻撃がroot権限を奪取することを第一の目的とし、その後の攻撃に繋げていることを考えると、セキュリティ対策として必要な機能といえます。
SELinuxの有効化と無効化
SELinuxは現状デフォルトで有効になっていることがほとんどです。機能自体を完全に切ることもできますが、セキュリティの観点から推奨されていません。それでも、システム動作の不具合を解決するために一時的に機能を無効化することは必要となるので、状態の確認と設定変更のコマンドを確認しておきましょう。
まず状態を確認するのはgetenforceコマンドです。
$ getenforce
Enforcing
これはSELinuxが有効となっており、MACによるアクセス制御が強制(Enforcing)されていることを表します。
それでは、一時的にSELinuxの機能を無効化します。setenforceコマンドを使用します。引数として0を指定することで無効化されます。
$ sudo setenforce 0
$ getenforce
Permissive
設定がPermissiveになると、SELinuxの強制アクセス制御は無効化されます。ただし、アクセス制御に触れる動作があった場合、ログに書き込まれるようになります。ログについては次回動作確認時に解説します。
- 筆者紹介
宮原 徹 氏
Linux標準教科書、Linuxサーバー構築標準教科書などの監修者。LinuCレベル1/レベル2 Version10.0の改訂作業にも協力。また、幅広いOSSに関する情報提供の場として「オープンソースカンファレンス(OSC)」の企画運営も。
バックナンバー
第26回:Webサーバーのログ設定の内容を確認する
第25回:Webサーバーのログ設定を確認する
第23回:WebサーバーでPHPを動かす
第22回:WEBサーバーにコンテンツを配置する