Permissive domainについてのDan Walshの記事を訳した

元記事:Dan Walsh's Blog - I would like to announce a big step forward in SELinux.
毎度のことながら超適当な訳文:Permissive Domainsによって、SELinuxはまた進歩した - 思考の道具箱 - Seesaa Wiki(ウィキ)
Permissive domainというのは、Fedora9の最新版、およびFedora10で使える機能で、システム全体としてはenforcingモードの時に、特定のプロセス(domain)だけをpermissiveモードで実行できる仕組み。以下のような利点があるようだ。

  • 特定のドメイン(プロセス)だけ、enforcingモードを解除したい場合、Fedora7まではDOMAIN_disable_transというスイッチ(boolean)があったが、この指定を受けたプロセスのドメイン、およびこのプロセスが作るファイルのラベルが整合性を欠くので廃止されていた。この機能の代用になる。
  • ポリシーのデバッグ中など、permissiveモードでAVCメッセージを収集したいときに、システム全体をpermissiveにしてセキュリティリスクを高めなくてすむ。

では、どうやって特定のドメインをpermissiveにするのか?(翻訳ページからまるまる転載)

あるドメインをpermissive modeにするには、以下のコマンドを実行すればよい

# semanage permissive -a DOMAIN

CGIスクリプトをpermissiveモードで実行したいなら、以下のようになる。

# semanage permissive -a httpd_sys_script_t

CGIスクリプトはpermissiveモードで実行されるが、それ以外のプロセスはenforcingモードのままである。CGIスクリプトがアクセス違反を起こしていれば、AVCメッセージは記録されるので、audit2allowのツールを使ってポリシーを修正できる。

ここで、semanageコマンドがやっていることは、permissive_httpd_sys_script_t.pp というポリシーを作成して、システムにインストールしている。
このポリシーの内容は以下のようになっている。

module permissive_httpd_sys_script_t 1.0;

require {
    type httpd_sys_script_t;
}

permissive httpd_sys_script_t;

現在permissive domainとして設定されているドメインのリストを表示したければ、次のコマンドを実行すればよい。

# semodule -l | grep permissive
permissive_httpd_sys_script_t 1.0

現在permissive domainとして設定されているある特定のドメインを削除したければ、次のコマンドを実行すればよい。

# semanage permissive -d httpd_sys_script_t

permissiveモードで適用してほしいポリシーを書く場合には、ドメイン名.te のファイルに以下の1行を付け足せばよい。

permissive DOMAIN;