前回までに試したように、SELinuxによってアクセスが拒否されて初めてSELinuxが役に立っていると分かるケースが大半です。そこで、今回から、アクセス拒否が起こる前に、SELinuxの効果を知る方法を紹介していきます。

 SELinuxが何をやっているのか知るためには、セキュリティポリシーがどうなっているのかを分析する必要があります。今回は、分析の前提知識として、セキュリティポリシーの構成要素を解説します。

 第2回で説明したように、SELinuxの最も主要な機能はTEとMCSです。MCSについては、大ざっぱには、「ドメインはカテゴリーが一致するタイプにアクセス許可」という設定だけなので、特に設定を分析する必要はありませんし、コンテナーや仮想マシンの分離に使われているのみです。

 残りのSELinuxの働きは、TEです。SELinuxを理解するには、どのようにTEがセキュリティポリシーに設定されているのかを理解する必要があります。

 TEでは、セキュリティポリシーに次のような三つの設定が施されています。(1)プロセスに「ドメイン」を付与、(2)リソースに「タイプ」を付与します。そして、セキュリティポリシーで明示的に許可されたアクセス以外はすべて拒否されるため、(3)ドメインがタイプにどのようなアクセスを許すのか、を設定していきます。

 以下、これら三つの設定要素について、順を追って説明していきます。

(1)ドメインを付与する

 SELinuxで、プロセスにドメインを割り当てるために使っているのが「ドメイン遷移」という設定です。SELinuxのデフォルトでは、プロセスを新たに実行した場合、親プロセスのドメインをそのまま引き継ぎますが、ドメイン遷移設定をした場合、新たにドメインを割り当てることができます。次のような設定要素で、ドメイン遷移を設定します。

type_transition <親プロセスのドメイン> <実行ファイルのタイプ> : process <起動時に割り当てるドメイン>;

 システムブート後から、ドメイン遷移を繰り返すことで、各プロセスにドメインが割り当てられていきます。例えば、httpdデーモンにhttpd_tが割り当てられるまでには、図1のような手順を経ます。

図1●httpdデーモンにhttpd_tドメインを割り当てる仕組み
[画像のクリックで拡大表示]

 システムブート時、カーネルのプロセスにはデフォルトでkernel_tというドメインが割り当てられています。カーネルがsystemdを実行すると(実行ファイルのタイプはinit_exec_t)、(1)に従いsystemdにはinit_tドメインが割り当てられます。次に、systemdがhttpdを実行すると(実行ファイルのタイプはhttpd_exec_t)、(2)の設定に従って、httpdにはhttpd_tドメインが割り当てられます。このようなドメイン遷移を繰り返すことで、システム上の各プロセスにドメインが割り当てられていきます。

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら