25.1.2.2.1. /etc/sysconfig/selinux 設定ファイル
Red Hat Enterprise Linux では、SELinux を設定するのに二つの方法があります: セキュリティレベル設定ツール (system-config-selinux) の使用、又は、手動で設定ファイル (/etc/sysconfig/selinux) を編集する方法です。
/etc/sysconfig/selinux ファイルは SELinux を有効/無効にする為の、 そしてシステムでどのポリシーを強制するか、及びどのように強制するかを設定する 主要設定ファイルです。
/etc/sysconfig/selinux には、実際の設定ファイル、 /etc/selinux/config へのシンボリックリンクが含まれています。
以下に設定において利用できるオプションのサブセットを説明しています:
SELINUX=enforcing|permissive|disabled — システム上の SELinux の最上レベルの状態を定義します。
enforcing — SELinux セキュリティポリシーは強制されます。
permissive — SELinux システムは警告を表示しますが、 ポリシーは強制しません。
これは、デバグやトラブルシューティング目的で便利です。容認(permissive)モードでは、 サブジェクトが、強制(enforcing)モードでは否定されるようなアクションを継続することが できる為、より多くの否定をログすることになります。例えば、容認モードでディレクトリツリーを 移動することは、全てのディレクトリレベルの読み込みで avc: denied のメッセージを発生させます。強制モードでは、SELinux は最初の移動で 停止して、それ移行の否定メッセージの発生を止めることになります。
disabled — SELinux は完全に無効になります。SELinux hooks は カーネルから離脱して、擬似ファイルシステムは登録が消えます。
SELinux が無効の時に作成されたアクションは、正しいセキュリティコンテキストを持たない ファイルシステムの原因となります。これはポリシーによって定義されたセキュリティコンテキスト のことです。ファイルシステムのラベル変えの最善の方法はフラグファイル:/.autorelabel を作成して、マシンを再起動することです。これにより、プロセスがシステム上で実行される前に ラベル変えがブートプロセスの非常に早期に起こることになります。この手順を使用すると、プロセスは 誤って間違えたコンテキストのファイルを作成することもなく、間違ったコンテキストで開始することも なくなることになります。
SELinux を有効にする前に fixfiles relabel コマンドを使用して、 ファイルシステムをラベル変えすることができます。しかしこれが完了した後にでも、 システム上で間違えたコンテキストでプロセスが実行されている可能性がある為、この方法は 推奨できません。これらのプロセスは、間違えたコンテキストのままのファイルを作成する 可能性があります。
設定行の最後の追加の空白、又は、ファイルの最後の余分な行としての空白は予期できない動作の 原因になる可能性があります。予防の為に不用な空白を削除して下さい。
SELINUXTYPE=targeted|strict — SELinux が強制するポリシーを指定します。
targeted — ターゲットのネットワークデーモンのみが 保護されます。
以下のデーモンはデフォルトのターゲットポリシー: dhcpd, httpd (apache.te)、 named、 nscd、 ntpd、 portmap、 snmpd、 squid、 syslogd で 保護されています。システムのその他の機能は unconfined_t ドメインで 実行されます。このドメインはセキュリティコンテキストを持ったサブジェクトとオブジェクトが 標準の Linux セキュリティを使用して運用できるようにします。
これらのデーモン用のポリシーファイルは /etc/selinux/targeted/src/policy/domains/program に収納されています。これらの ファイルは Red Hat Enterprise Linux の新しいバージョンがリリースされると変更される可能性があります。
これらのデーモン用のポリシー強制は、 セキュリティレベル設定ツール (system-config-selinux) で制御されるブーリアン値でオンかオフに変更できます。
目標のデーモン用にブーリアン値を 0 (ゼロ)にするとそのデーモンの ポリシー移動を無効にします。例えば、dhcpd_disable_trans を 0 にして、init が unconfined_t ドメインから dhcpd.te に指定してあるドメインに dhcpd を 移動することを防止することができます。
getsebool -a コマンドを使用すると、全ての SELinux ブーリアン値を 一覧表示します。以下に SELinux ブーリアン値を設定する為の setsebool コマンドを使用した例を表示します。-P オプションを使用すると、変更が 固定されます。このオプションが無いと、ブーリアン値は再起動時に 1 に リセットされます。
setsebool -P dhcpd_disable_trans=0
strict — 全てのデーモン用の完全 SELinux 保護。 セキュリティコンテキストは全てのサブジェクトとオブジェクト用に定義され、 そして各アクションはポリシー強制サーバーによってプロセスされます。
SETLOCALDEFS=0|1 — ローカルの 定義(ユーザーとブーリアン)が設定される方法を制御します。この値を 「1」にセットすると、 これらの定義は /etc/selinux/<policyname> 内のファイルの load_policy で制御され、「0」にセットすると、 それらは semanage で制御されるようになります。
変更がどのようなインパクトを与えるか完全に理解していない限りは、このデフォルト値 (0) を 変更すべきではありません。