最初に無効化する方法を説明します。その後にSELinuxの特徴について簡単に説明します。これはSELinuxを無効化することのリスクなど、自分が何をしているのか理解するためにです。
SELinuxを無効化する
一時的および恒久的に無効化する方法を紹介します。
動作モードの確認
まずは動作モードの確認方法から。 SELinuxの動作モードはgetenforceコマンドで確認できます。
# getenforce Enforcing
より詳しい内容を確認するには、sestatusコマンドを使います。
# sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31
SELinuxの動作モードには次の3つのがあります。
- Enforcing
- SELinuxは有効
- Permissive
- SELinuxは警告モードで有効にされている。アクセス制御は実施しないが、ログは記録されている
- Disabled
- SELinuxは無効
一時的な動作モードの変更
動作モードがDisabled以外のときであれば、setenforceコマンドを使って動作モードをEnforcingまたはPermissiveに変更できます。
# setenforce Enforcing # setenforce Permissive
これは一時的な変更なので、再起動すると元へ戻ります。
恒久的な動作モードの変更
恒久的な動作モードの変更、つまり起動時の動作モードを変更するには/etc/selinux/configファイルを編集します。 SELinuxを無効化するには次のようにSELINUXパラメータをdisabledに設定します。
SELINUX=disabled
EnforcingまたはPermissiveに設定するにはそれぞれ次のように記述します。
SELINUX=enforcing SELINUX=permissive
SELinuxの特徴
ここではSELinuxについて簡単に概要を説明します。SELinuxを無効化することによるリスクなどの理解の助けになればと思います。
従来のLinuxのセキュリティリスク
SELinuxはSecure OSの1つでセキュリティが従来のLinuxに比べてセキュリティが強化されている。 まずは、SELinuxの特徴を見る前に従来のLinuxに存在するセキュリティリスクについて考えてみます。
- すべての権限を有するrootユーザーの存在
- rootユーザーはすべての権限を持っています。つまりrootユーザーであれば何でもできてしまうということです。このroot権限を悪人に奪取されてしまったら、マシンの持つセキュリティ機能はすべて無力化されたも同然です。SELinuxではrootユーザーの権限にも制限を加えることができるため、奪取された場合の影響範囲を限定することもできます。
- 任意アクセス制御
- 従来のLinuxはファイル(やディレクトリ)について、所有者、グループ所有者、その他の3者について読み・書き・実行のアクセス権の機構があります。しかし、このアクセス権はファイルの所有者が自由に設定できてしまいます。これを任意アクセス制御と言います。SELinuxでは強制アクセス制御を使用してセキュリティを強化しています。<
SELinuxの特徴
次にどのようにセキュリティが強化されているか、SELinuxの特徴を見ていきましょう。
- ロールベースのアクセス制御
- アクセス権が設定されたロール(role)をrootユーザを含むすべてのアカウントに対して割り当てることによってアクセス制御を実施します。
- 強制アクセス制御
- ディレクトリやファイルに対するアクセス制御は個々のユーザーが行うのではなく、「セキュリティポリシーファイル」と呼ばれる設定ファイルで一元的に管理します。これは強制アクセス制御(Mandatory Access Control)と呼ばれます。システム全体のアクセス権をセキュリティポリシーファイルで一元管理するため、アクセス権の管理が容易になります。
- Type Enforcement
- Type Enforcementはプロセスに対してファイルなどのシステム資源へのアクセスを制限します。これによりプロセスを乗っ取られた場合でも被害の範囲を限定的にできます。
簡単にSELinuxの概要を見ていきましたがいかがだったでしょうか。 確かにセキュリティは強化されますが、実際に現場で使うにはいくつか課題がありそうです。 まずはセキュリティは正しく設計・運用してはじめて機能します。 これにはSELinuxに精通した人の確保が必要になります。 また設計のパラダイムも変わるため工数の増大も考えられます。 アプリケーションを開発する場合にも同様に人や工数が課題になりそうです。 SELinuxを使うか使わないかはこれらを総合的に判断して決める必要がありそうです。