Show Table of Contents
このページには機械翻訳が使用されている場合があります (詳細はこちら)。
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 ユーザーにほとんどすべてのアクセスを許可するポリシールールが存在します。SELinux ポリシーで unconfined_t
ドメインから自身の制限のあるドメインへの移行が可能だと定義されているアプリケーションを、制限のない Linux ユーザーが実行しても、この制限のない Linux ユーザーは制限のあるドメインの規定に拘束されます。ここでのセキュリティーの利点は、Linux ユーザーは制限なしで実行していてもアプリケーションには制限があることから、アプリケーションの欠点を悪用しようとしてもポリシーで制限できる、という点です。
注記
上記の点は、システムがユーザーから保護されるということではありません。ユーザーとシステムがアプリケーションの欠点による損害の可能性から守られるということです。
useradd
コマンドで Linux ユーザーを作成する場合は、-Z
オプションを使ってどの SELinux ユーザーにマッピングするかを指定します。以下の例では、新規の Linux ユーザー useruuser
を作成し、そのユーザーを SELinux user_u
ユーザーにマッピングしています。SELinux user_u
ユーザーにマッピングされた Linux ユーザーは、user_t
ドメインで稼働します。このドメインでは、(passwd
など) SELinux ポリシーが許可しない限り、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
このページには機械翻訳が使用されている場合があります (詳細はこちら)。