Red Hat Training
A Red Hat training course is available for Red Hat Enterprise Linux
6.2. 新規 Linux ユーザーの制限: useradd
SELinux
unconfined_u
user にマッピングされた 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
ドメインで稼働します。このドメインでは、(passwd
など) SELinux ポリシーが許可しない限り、Linux ユーザーは setuid アプリケーションを実行できず、su
や sudo
も実行できないので、これらのコマンドで Linux root ユーザーになることを防いでいます。
- Linux root ユーザーで
useradd -Z user_u useruuser
コマンドを実行し、SELinuxuser_u
ユーザーにマッピングされる新規の Linux ユーザー (useruuser) を作成します。 - Linux root ユーザーで
semanage login -l
コマンドを実行し、Linuxuseruuser
ユーザーとuser_u
の間のマッピングを表示します。~]#
semanage login -l
Login Name SELinux User MLS/MCS Range __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 - Linux root ユーザーで
passwd useruuser
コマンドを実行し、Linux useruuser ユーザーにパスワードを割り当てます。~]#
passwd useruuser
Changing password for user useruuser. New UNIX password: Enter a password Retype new UNIX password: Enter the same password again passwd: all authentication tokens updated successfully. - 現行セッションから一旦ログアウトし、Linux useruuser ユーザーでログインし直します。ログインすると、pam_selinux がこの Linux ユーザーを SELinux ユーザーにマッピングし (このケースでは
user_u
)、SELinux コンテキストを設定します。その後は、このコンテキストで Linux ユーザーのシェルが起動されます。id -Z
コマンドを実行し、Linux ユーザーのコンテキストを表示します。~]$
id -Z
user_u:user_r:user_t:s0 - Linux useruuser のセッションからログアウトし、自分のアカウントでログインし直します。Linux useruuser ユーザーが不要な場合は、Linux root ユーザーで
userdel -r useruuser
コマンドを実行し、そのホームディレクトリーとともに削除します。