第2章 SELinuxポリシーの管理
SELinuxポリシーは、すべてのユーザー、プログラム、プロセス、ファイルおよびこれらが動作するデバイスのアクセス権限を示します。 SELinuxは、TargetedポリシーまたはMultilevel Security (MLS)ポリシーを実装するように構成できます。 この章では、SELinuxのポリシーとその管理方法について説明します。
2.1 ターゲット・ポリシー
システム上で攻撃対象となる可能性が最も高い限られた数のプロセスに、アクセス制御を適用します。 ターゲット・プロセスは、攻撃者が悪用する可能性のあるファイルへのアクセスを制限する、制限されたドメインと呼ばれる独自のSELinuxドメインで実行されます。 ターゲット・プロセスが制限されたドメイン外のリソースにアクセスを試みていることが検出された場合、SELinuxはこれらのリソースへのアクセスを拒否して、拒否を記録します。 制限されたドメインでは、特定のサービスのみが実行されます。 例として、httpd、named、sshdなど、ネットワーク上でクライアント・リクエストをリスニングするサービス、およびpasswdなど、ユーザーのかわりにタスクを実行するためにroot
として実行されるプロセスがあげられます。 多くのユーザー・プロセスを含め、その他のプロセスは、DACルールのみが適用される制限されないドメインで実行されます。 制限されないプロセスが攻撃によって危険にさらされた場合、SELinuxはシステム・リソースおよびデータへのアクセスを防ぐことはできません。
次の表に、SELinuxドメインの例を示します。
ドメイン |
説明 |
---|---|
|
|
|
HTTPデーモン・スレッド |
|
カーネル・スレッド |
|
|
|
制限されないドメインで稼働中のOracle Linuxユーザーによって実行されるプロセス |
2.2 Multilevel Security (MLS)ポリシー
各レベルが異なるユーザー・アクセス・ルールを持つ複数レベルのプロセスに、アクセス制御を適用します。 特定レベルでプロセスを実行するための適切な権限を持っていない場合、ユーザーは情報にアクセスできません。 SELinuxでは、MLSはシステム・セキュリティにBell-LaPadula (BLP)モデルを実装します。このモデルでは、ファイル、プロセスおよびその他のシステム・オブジェクトにラベルを適用して、セキュリティ・レベル間の情報フローを制御します。標準的な実装では、セキュリティ・レベルのラベルの範囲はtop secret
からsecret
、classified
および最もセキュリティの低いunclassified
です。 たとえば、MLSでは、top secret
とラベル付けされたファイルへの書込みは可能であるが、このファイルからの読取りは可能でない、secret
とラベル付けされたプログラムを構成できます。 同様に、同じプログラムに対して、secret
とラベル付けされたファイルからの読取りおよびファイルへの書込みを許可し、classified
またはunclassified
ファイルの読取りのみを許可することができます。 すなわち、プログラムを通過する情報を、セキュリティ・レベル階層の上方に流すことはできますが、下方に流すことはできません。
MLSポリシーを適用するには、selinux-policy-mls
パッケージをインストールする必要があります。
2.3 SELinuxポリシーの設定
実行中のシステムのポリシー・タイプを変更することはできません。
/etc/selinux/config
ファイルを編集し、SELINUXTYPE
ディレクティブの値をtargeted
またはmls
に設定することによって、デフォルトのポリシー・タイプを構成できます。
2.4 SELinuxポリシーのカスタマイズ
一連のブール値のメンバーを有効または無効にすることで、SELinuxポリシーをカスタマイズできます。 変更内容はただちに有効になり、リブートは必要ありません。
すべてのブール値とその説明を表示するには、次のコマンドを使用します:
semanage boolean -l
SELinux boolean State Default Description
ftp_home_dir (off , off)
Determine whether ftpd can read and write files in user home directories.
smartmon_3ware (off , off)
Determine whether smartmon can support devices on 3ware controllers.
mpd_enable_homedirs (off , off)
Determine whether mpd can traverse user home directories.
...
getseboolおよびsetseboolコマンドを使用して、特定のブールの値を表示および設定できます。
getseboolboolean
sudo setseboolboolean
on|off
次の例では、ftp_home_dir
ブール値を表示および設定する方法を示します:
getsebool ftp_home_dir ftp_home_dir --> off sudo setsebool ftp_home_dir on getsebool ftp_home_dir ftp_home_dir --> on
ブール値の値を切り替えるには、次の例に示すように、toggleseboolコマンドを使用します:
sudo togglesebool ftp_home_dir
ftp_home_dir: inactive
リブート後にブール値を維持するには、次のようにsetseboolに-Pを指定します。
sudo setsebool -P ftp_home_dir on getsebool ftp_home_dir ftp_home_dir --> on