第2章 Targeted ポリシー

Red Hat Enterprise Linux で使用されるデフォルトの SELinux ポリシーは Targeted ポリシーになります。Targeted ポリシーを使用すると、対象となるプロセスは制限ドメイン内で実行され、対象外のプロセスは未制限のドメイン内で実行されます。例えば、デフォルトではログインしたユーザーは unconfined_t ドメイン内で実行され、init で開始されたシステムプロセスは initrc_t ドメイン内で実行されます。 いずれも未制限のドメインです。
SELinux は、実行するサービスに必要な最小限レベルのアクセスに基づいています。サービスの実行手段は複数あるため、サービスをどのように実行するのかを SELinux に指示する必要があります。これを行なうため、Boolean を使用します。Boolean を使用すると、SELinux ポリシーの記述方法などの知識が全くなくても、ランタイム時の SELinux ポリシーを部分的に変更することができます。たとえば、サービスによる NFS ファイルシステムへのアクセスを許可するなど、Boolean を使用することで、SELinux ポリシーの再読み込みや再コンパイルを行なうことなく、各種の変更を行なうことができるようになります。Boolean 設定については事例をあげて詳細に説明していきます。
サービス用のファイル群の格納にデフォルト以外のディレクトリを使用する、 デフォルト以外のポート番号でサービスが実行するよう変更するなど、 その他の変更には、 policycoreutils-python パッケージで提供している semanage コマンドなどのツールを使ったポリシー設定の更新が必要になります。 このコマンドについては設定事例をあげて詳細に説明していきます。

2.1. Type Enforcement

Type Enforcement が SELinux の targeted ポリシーで使用されるメインのパーミッション制御になります。全ファイルおよびプロセスにタイプのラベルが付けられます。ファイルの場合はタイプ、プロセスの場合はドメインを定義します。任意のタイプにアクセスするドメインなのか、 別のドメインにアクセスするドメインなのかなど、SELinux のポリシールールではタイプによって互いがアクセスしあう方法を定義します。アクセスを許可する特定の SELinux ポリシールールが存在する場合にのみ、そのアクセスが許可されます。