2 SELinuxポリシーの管理

SELinuxポリシーは、すべてのユーザー、プログラム、プロセス、ファイルおよびこれらが動作するデバイスのアクセス権限を示します。SELinuxは、TargetedポリシーまたはMulti-Level Security (MLS)ポリシーを実装するように構成できます。この章では、SELinuxポリシーおよびその管理方法について説明します。

Targetedポリシー

targetedポリシーでは、システム上で攻撃対象となる可能性が最も高い限られた数のプロセスに、アクセス制御を適用します。ターゲット・プロセスは、攻撃者が悪用する可能性のあるファイルへのアクセスを制限する、制限されたドメインと呼ばれる独自のSELinuxドメインで実行されます。ターゲット・プロセスが制限されたドメイン外のリソースにアクセスを試みていることが検出された場合、SELinuxはこれらのリソースへのアクセスを拒否して、拒否を記録します。制限されたドメインでは、特定のサービスのみが実行されます。例として、httpdnamedsshdなど、ネットワーク上でクライアント・リクエストをリスニングするサービス、およびpasswdなど、ユーザーのかわりにタスクを実行するためにrootとして実行されるプロセスがあげられます。多くのユーザー・プロセスを含め、その他のプロセスは、DACルールのみが適用される制限されないドメインで実行されます。制限されていないプロセスが攻撃によって危険にさらされた場合、SELinuxはシステム・リソースおよびデータへのアクセスを防ぐことはできません。

次の表に、SELinuxドメインの例を示します。

ドメイン 説明

init_t

systemd

httpd_t

HTTPデーモン・スレッド

kernel_t

カーネル・スレッド

syslogd_t

journaldおよびrsyslogdロギング・デーモン

unconfined_t

Oracle Linuxユーザーによって起動されるプロセスは制限されていないドメインで実行されます

Multi-Level Securityポリシー

Multi-Level Security (MLS)ポリシーでは、各レベルのユーザー・アクセス・ルールが異なる複数レベルのプロセスに、アクセス制御を適用します。特定レベルでプロセスを実行するための適切な権限を持っていない場合、ユーザーは情報にアクセスできません。SELinuxでは、MLSはシステム・セキュリティにBell-LaPadula (BLP)モデルを実装します。このモデルでは、ファイル、プロセス、およびその他のシステム・オブジェクトにラベルを適用して、セキュリティ・レベル間の情報フローを制御します。一般的な実装では、セキュリティ・レベルのラベルは、最もセキュアなtop secretからsecretおよびclassified、最も安全でないunclassifiedまで多岐にわたります。たとえば、MLSで、top secretというラベルのファイルに書き込めるが、そこから読み取ることができないsecretというラベルのプログラムを構成できます。同様に、同じプログラムに対して、secretとラベル付けされたファイルについては読取りおよび書込みを構成するが、classifiedファイルやunclassifiedファイルについては読取りのみを構成するということができます。したがって、プログラムを通過する情報はセキュリティ・レベル階層の上方に流れることができますが、下方に流れることはできません。

ノート:

MLSポリシーを適用するには、selinux-policy-MLSパッケージをインストールする必要があります。

ノート:

Oracleでは、X Window Systemを実行しているシステムでMLSポリシーを使用することは推奨していません。

ノート:

SELinux拒否は、次の主な理由からMLSでより一般的になっています。

  • MLSは、無制限のポリシー・モジュールを無効にします。

  • MLSは感度レベルを利用します。

SELinuxポリシーの設定または切替え

ノート:

実行中のシステムのポリシー・タイプを変更することはできません。

/etc/selinux/configファイルを編集し、SELINUXTYPEディレクティブの値をtargetedまたはmlsに設定して、デフォルトのポリシー・タイプを構成できます。

ポリシー間で切り替える前に、SELinuxモードを許可モードに変更します。強制モード中にラベルを変更すると、制限されたドメインがファイルにアクセスできなくなる可能性があるため、システムが正しく起動できなくなることがあります。

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コマンドを使用して、特定のブールの値を表示および設定できます。

getsebool boolean
sudo setsebool boolean 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