6.2. 新規の Linux ユーザーの制限: useradd
SELinux
unconfined_u
ユーザーにマッピングされた Linux ユーザーは、unconfined_t
ドメインで実行します。これは、unconfined_u
にマッピングされた Linux ユーザーとしてログインしながら id -Z を実行すると確認できます。
~]$
id -Z
unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Linux ユーザーが
unconfined_t
ドメインで実行している場合は、SELinux ポリシールールが適用されますが、unconfined_t
ドメインで実行している Linux ユーザーのほぼすべてのアクセスを許可するポリシールールが存在します。制限のない Linux ユーザーが、unconfined_t
ドメインから自身の制限のあるドメインに移行できるものとして SELinux ポリシーが定義するアプリケーションを実行すると、制限のない Linux ユーザーは制限のあるドメインの制限を引き続き受けます。セキュリティー上の利点は、Linux ユーザーが制限されていなくても、アプリケーションは制限されたままになるため、アプリケーションの欠陥の悪用はポリシーにより制限される可能性があることです。
注記
これにより、システムがユーザーから保護されることはありません。その代わりに、ユーザーとシステムは、アプリケーションの欠陥による潜在的な不具合から保護されています。
useradd コマンドで Linux ユーザーを作成する場合は、
-Z
オプションを使用して、マッピング先の SELinux ユーザーを指定します。以下の例では、新しい Linux ユーザー useruuser
を作成し、そのユーザーを SELinux user_u
ユーザーにマップしています。SELinux user_u
ユーザーにマッピングされた Linux ユーザーは、user_t
ドメインで実行します。このドメインでは、SELinux ポリシーで setuid アプリケーションが許可 (passwd
など) されていない限り、Linux ユーザーは setuid アプリケーションを実行できず、su コマンドまたは sudo コマンドを実行できないため、これらのコマンドで root ユーザーになることができません。
手順6.1 新しい Linux ユーザーを user_u
SELinux ユーザーに限定する
- root で、SELinux
user_u
ユーザーにマッピングする新しい Linux ユーザー (useruuser
) を作成します。~]#
useradd -Z user_u useruuser useruuser
とuser_u
との間のマッピングを表示するには、root で以下のコマンドを実行します。~]#
semanage login -l Login Name SELinux User MLS/MCS Range Service __default__ unconfined_u s0-s0:c0.c1023 * root unconfined_u s0-s0:c0.c1023 * system_u system_u s0-s0:c0.c1023 * useruuser user_u s0 *- root で、Linux
useruuser
ユーザーにパスワードを割り当てます。~]#
passwd useruuser Changing password for user useruuser. New password: Enter a password Retype new password: Enter the same password again passwd: all authentication tokens updated successfully. - 現行セッションからログアウトし、Linux
useruuser
ユーザーとしてログインします。ログインすると、pam_selinux
により、Linux ユーザーが SELinux ユーザー (この例ではuser_u
) にマップされ、作成される SELinux コンテキストが設定されます。Linux ユーザーのシェルはこのコンテキストで起動します。以下のコマンドを入力して、Linux ユーザーのコンテキストを表示します。~]$
id -Z user_u:user_r:user_t:s0 - Linux
useruuser
のセッションをログアウトし、アカウントで再度ログインします。Linuxuseruuser
を使用しない場合は、root で次のコマンドを実行し、ホームディレクトリーとともに削除します。~]#
userdel -Z -r useruuser