Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

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 ユーザーに限定する

  1. root で、SELinux user_u ユーザーにマッピングする新しい Linux ユーザー (useruuser) を作成します。
    ~]# useradd -Z user_u useruuser
  2. useruuseruser_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                   *
    
  3. 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.
    
  4. 現行セッションからログアウトし、Linux useruuser ユーザーとしてログインします。ログインすると、pam_selinux により、Linux ユーザーが SELinux ユーザー (この例では user_u) にマップされ、作成される SELinux コンテキストが設定されます。Linux ユーザーのシェルはこのコンテキストで起動します。以下のコマンドを入力して、Linux ユーザーのコンテキストを表示します。
    ~]$ id -Z
    user_u:user_r:user_t:s0
    
  5. Linux useruuser のセッションをログアウトし、アカウントで再度ログインします。Linux useruuser を使用しない場合は、root で次のコマンドを実行し、ホームディレクトリーとともに削除します。
    ~]# userdel -Z -r useruuser