4 SELinuxユーザーの管理

SELinuxセキュリティ・コンテキストの管理で説明されているように、各SELinuxユーザー・アカウントは通常のOracle Linuxユーザー・アカウントを補完します。SELinuxは、すべてのOracle Linuxユーザーを、ユーザー・セッション内のプロセスのSELinuxコンテキストで使用されるSELinuxユーザーIDにマップします。

SELinuxユーザーはSELinuxポリシーの一部であり、特定のロール・セットおよび特定のMLS (Multi-Level Security)範囲に対する権限が与えられ、各Oracle Linuxユーザーはポリシーの一部としてSELinuxユーザーにマップされます。このため、Linuxユーザーは、SELinuxユーザーに設定されている制限やセキュリティ・ルールやメカニズムを継承します。ユーザーのロールやレベルを定義するために、マップされたSELinuxユーザーIDがセッション内のプロセスのSELinuxコンテキストで使用されます。

特に指定がないかぎり、デフォルトでは、ユーザーはその作成時にunconfined_u SELinuxユーザーにマップされます。この設定では、SELinuxは非制限容量で機能します。システム・セキュリティを向上させるために、デフォルトのユーザー・マッピングを変更し、システム上の様々なユーザー要件にあわせた様々なユーザー・マッピングの適用を開始できます。

制限付きSELinuxユーザーについて

SELinuxには、様々なセキュリティ・ドメインに限定されている、また、ユーザーが実行できる操作を制御するためのセキュリティ・ルールおよびメカニズムが事前定義されている、複数の制限付きユーザーが含まれています。SELinuxポリシーには、ユーザーが属することができる様々なロールに適用されるルールが含まれています。これらは、各SELinuxユーザーにどの操作を許可するかを強制するために使用されます。

慣例により、SELinuxユーザーの接尾辞は_uになります(user_uなど)。

Oracle Linuxには、システム・アクセスを即時に制限できるようにすでに設定されている複数のSELinuxユーザーが含まれています。

unconfined_u
ほぼ無制限のSELinuxユーザーが、多くの場合、制限の少ない環境を実現するために、新しいシステム上のシステム・ユーザー・アカウントに対するデフォルトのSELinuxユーザー・マッピングとして設定されます。堅牢な環境では、システム・ユーザー・アカウントをこのユーザーにマップする必要はありません。
root
rootアカウント用のSELinuxユーザー。
sysadm_u
直接的システム管理ロールが割り当てられたSELinuxユーザー。このユーザーは、管理以外のコマンドの実行を目的としていません。
staff_u
管理以外のコマンド(staff_rロールを使用)と管理コマンド(sysadm_rロールを使用)の両方を実行する必要があるユーザー用のSELinuxユーザー。
user_u
管理コマンドを実行する必要がない非特権アカウント用のSELinuxユーザー。
system_u
システム・サービス用のSELinuxユーザー。
xguest_u
システムへのゲスト・アクセス用のSELinuxユーザーであり、非常に限定されたアクセス権でプロビジョニングされます。

ユーザーは各自のSELinuxドメインに限定されます。また、ポリシーによって、システムで実行できる操作のタイプが制御されます。次の表に、事前定義された特定のセキュリティ・ルールが様々なユーザーに対してどのように機能するかを示します

SELinuxユーザー SELinuxドメイン suおよびsudoの実行の可否 ネットワーク・アクセスの可否 X Window Systemを使用したログインの可否 $HOMEおよび/tmpでのアプリケーション実行の可否

guest_u

guest_t

いいえ

はい

いいえ

いいえ

staff_u

staff_t

sudo

はい

はい

はい

system_u

ssystem_t

はい

はい

はい

はい

user_u

user_t

いいえ

はい

はい

はい

xguest_x

xguest_t

いいえ

Firefoxのみ

はい

いいえ

SELinuxユーザーは、SELinux内の標準のOracle Linuxシステム・ユーザーとは別に区別および管理されます。Oracle Linuxシステム・ユーザー・アカウントを様々なSELinuxユーザーにマップして、より制限の厳しいセキュリティ・ポリシー・フレームワークをシステム・ユーザー・アカウントに適用できます。

SELinuxの制限付きユーザーへのOracle Linuxユーザーのマッピング

特に指定がないかぎり、デフォルトでは、ユーザーはその作成時にunconfined_u SELinuxユーザーにマップされます。ユーザーは、次を実行することで各自のセキュリティ・コンテキストを確認できます。

id -Z

出力は次の例のようになります。

unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

システム管理者は、Oracle LinuxユーザーをSELinuxの制限付きユーザーにマップして、様々なアクセス・レベルを適用できます。たとえば、oracleユーザーをSELinuxのuser_uユーザーにマップするには、次のようにsemanageコマンドを使用します。

sudo semanage login -a -s user_u oracle

ユーザーを作成する場合は、useraddコマンドの実行時にSELinuxユーザー・マッピングを指定できます。たとえば、SELinuxのstaff_uユーザーにマップする、特権oracleadminユーザーを追加するには、次を実行します。

sudo useradd -Z staff_u oracleadmin

デフォルトのユーザー・マッピングの設定

新しくインストールされたシステムでは、ほとんどの場合、広く使用できるよう制限の少ない環境を実現するために、デフォルトのユーザー・マッピングはunconfined_u SELinuxユーザーに設定されます。セキュリティ技術導入ガイド(STIG)に準拠する場合など、厳格なポリシー施行が必要な一部の環境では、すべてのOracle Linuxユーザー・アカウントを適切な制限付きSELinuxユーザーにマップして、適用しているSELinuxポリシー・ルールによってシステムがより適切に保護されるようにする必要があります。

  1. 明示的なSELinuxユーザー・マッピングがないユーザー・アカウントがSELinuxのuser_uユーザーに限定されるようにデフォルトのユーザー・マッピングを変更するには、次を実行します。

    sudo semanage login -m -s user_u -r s0 __default__
  2. 次を実行して、__default__ユーザー・マッピングがunconfined_u SELinuxユーザーに設定されていないことを確認します。
    semanage login -l

なお、この変更後も、ユーザー・セッションまたはプロセスが新しいコンテキストで再起動されるまで、引き続き、制限なしのセキュリティ・コンテキストがユーザーに適用されます。この変更をシステム全体のレベルで適用するには、システムを再起動します。

ユーザーのアプリケーション実行動作の構成

不具合があるアプリケーションや悪質なアプリケーションによってユーザーのファイルが変更されることがないように、ブール値を使用して、ユーザーに各自のホーム・ディレクトリ階層や/tmpなどの書込みアクセス権があるディレクトリでのアプリケーション実行を許可するかどうかを指定できます。

guest_tおよびxguest_tドメイン内のOracle Linuxユーザーが、書込みアクセス権を持つディレクトリでアプリケーションを実行できるようにするには、次のようにします。

sudo setsebool -P allow_guest_exec_content on
sudo setsebool -P allow_xguest_exec_content on

次の例は、staff_tおよびuser_tドメイン内のユーザーが、書込みアクセス権を持つディレクトリでアプリケーションを実行できないようにする方法を示しています。

sudo setsebool -P allow_staff_exec_content off
sudo setsebool -P allow_user_exec_content off

詳細は、「SELinuxポリシーのカスタマイズ」を参照してください。