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でのアプリケーション実行の可否 |
---|---|---|---|---|---|
|
|
いいえ |
はい |
いいえ |
いいえ |
|
|
sudo |
はい |
はい |
はい |
|
|
はい |
はい |
はい |
はい |
|
|
いいえ |
はい |
はい |
はい |
|
|
いいえ |
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ポリシー・ルールによってシステムがより適切に保護されるようにする必要があります。
-
明示的なSELinuxユーザー・マッピングがないユーザー・アカウントがSELinuxの
user_u
ユーザーに限定されるようにデフォルトのユーザー・マッピングを変更するには、次を実行します。sudo semanage login -m -s user_u -r s0 __default__
- 次を実行して、
__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ポリシーのカスタマイズ」を参照してください。