20.15. パススルー認証での PAM の使用
多くのシステムでは、Unix ユーザーおよび Linux ユーザー用の認証メカニズムがすでに含まれています。最も一般的な認証フレームワークの 1 つは、プラグ可能な認証モジュール (PAM) です。多くのネットワークではすでに既存の認証サービスを利用できるため、管理者はこれらのサービスを引き続き使用したいことがあります。PAM モジュールは、Directory Server に対して LDAP クライアントに既存の認証ストアを使用するように指示するように設定できます。
Red Hat Directory Server における PAM パススルー認証は、PAM パススルー認証プラグインを使用します。これにより、Directory Server は PAM サービスと通信して LDAP クライアントを認証できます。
図20.3 PAM パススルー認証プロセス
注記
PAM パススルー認証は、適切なマッピング方法 (ENTRY) が使用されていることを前提に、ユーザーを認証する際にアカウントの無効化と連動します。ただし、PAM パススルー認証では、パスワードは Directory Server ではなく PAM モジュールで設定され保存されるため、グローバルまたはローカルに設定されたパスワードポリシーに照らしてパスワードを検証することはできません。
20.15.1. PAM パススルー認証設定オプション
PAM パススルー認証は、PAM パススルー認証プラグインコンテナーエントリーの下にある子エントリーで設定されます。複数の PAM パススルー認証ポリシーがあり、接尾辞内の異なる接尾辞やエントリーに適用されます。
PAM パススルー用に設定できるエリアはいくつかあります。
- PAM パススルー認証プラグインによって制御される接尾辞。ここでは、除外する接尾辞および含める接尾辞と、欠落した接尾辞の処理方法を説明します。
- 認証設定のターゲットである、設定された接尾辞内の個々のエントリー。デフォルトでは、接尾辞内のすべてのエントリーが認証スコープに含まれますが、複数の異なる PAM パススルー認証プラグインインスタンスを設定し、異なるユーザーに異なるプラグイン設定を適用することが可能です。
- PAM 属性マッピング。Directory Server に提示された認証情報は、何らかの方法で LDAP エントリーにマッピングされ、さらに PAM サービスの認証情報に戻される必要があります。これは、マッピングメソッドを定義し、任意で認証情報と一致させるために使用する LDAP 属性を定義します。
- TLS 接続の使用や、使用する PAM サービス、および PAM 認証に失敗した場合の LDAP 認証へのフォールバックなど、一般的な設定。
注記
PAM パススルー認証プラグインの複数の設定インスタンスが存在する可能性があります。PAM パススルー認証プラグインのインスタンスは、
pamFilter
属性を使用して、プラグインで使用する特定のエントリーを検索するよう LDAP フィルターを設定することで、ユーザーエントリーのサブセットに適用できます。
設定可能な属性の一覧は、『Red Hat Directory Server の設定、コマンド、およびファイルリファレンス』 の 『PAM パススルー認証プラグインの属性』 セクションを参照してください。
20.15.1.1. PAMPTA のターゲットとなる接尾辞の指定
PAM PTA プラグインは、明示的に除外されない限り、デフォルトですべての接尾辞にグローバルに適用されます。接尾辞を除外して組み込むと、ディレクトリーのエリアが LDAP 認証ではなく PAM 認証を使用する場合に役立ちます。
注記
PAM パススルー認証エントリーのターゲットは、任意のサブツリーではなく接尾辞でなければなりません。「接尾辞の作成および維持」 で説明されているように、userRoot に関連するルート接尾辞 dc=example,dc=com に関連する cn=config など、特定のバックエンドデータベースに関連付けられるサブツリーです。
pamExcludeSuffix
属性は接尾辞を除外します。デフォルトでは、設定サブツリー (cn=config) のみが除外されます。別の方法では、PAM PTA プラグインは pamIncludeSuffix
属性の接尾辞に適用することもできます。これらの属性はいずれも多値で設定されます。
include 属性が設定されている場合、他の接尾辞はすべて自動的に除外されます。同様に、除外属性が設定されている場合、他のすべての接尾辞は自動的に含まれます。
pamExcludeSuffix: cn=config
pamIncludeSuffix
を使用すると、指定した接尾辞のみが含まれ、その他は自動的に除外されます。この属性は多値であるため、接尾辞を明示的にリスト表示することで、PAM 評価に複数の接尾辞を追加できます。
pamIncludeSuffix: ou=Engineering,dc=example,dc=com pamIncludeSuffix: ou=QE,dc=example,dc=com
pamMissingSuffix
属性は、指定された接尾辞 (include または exclude) が存在しない場合に失敗を処理する方法をサーバーに指示します。IGNORE に設定すると、接尾辞が存在しない場合は、プラグインはその接尾辞を省略し、次の試行を試みます。
pamMissingSuffix: IGNORE pamIncludeSuffix: ou=Engineering,dc=example,dc=com pamIncludeSuffix: ou=Not Real,dc=example,dc=com
20.15.1.2. 異なるエントリーへの異なる PAM パススルー認証設定の適用
デフォルトでは、PAM パススルー認証ポリシーは指定の接尾辞内のすべてのエントリーに適用されます。ただし、
pamFilter
属性で LDAP フィルターを指定することができます。これは、PAM パススルー認証ポリシーを適用する接尾辞内の特定のエントリーを識別します。
これは、複数の PAM パススルー認証ポリシーを使用して、異なる PAM 設定やマッピング方法を異なるユーザータイプに適用する場合に便利です。
20.15.1.3. PAM PTA マッピングの設定
LDAP アイデンティティーを PAM アイデンティティーに接続する方法が必要です。最初に定義するのは、エントリーのマッピングに使用する 方法 です。DN、RDN、および ENTRY の 3 つのオプションがあります。ENTRY はエントリーでユーザー定義の属性を使用します。
複数のマッピング方法を、スペースで区切って順番に並べて指定することができます。プラグインは、認証が成功するまで、またはリストの最後に到達するまで、リスト表示される順序で各マッピングメソッドの使用を試行します。
例えば、このマッピング方法では、まず RDN メソッドをマッピングし、そのメソッドの順に ENTRY、次に DN がマッピングされます。
pamIDMapMethod: RDN ENTRY DN
異なるマッピングメソッドが、表20.4「PAM 認証のマッピングメソッド」 に一覧表示されます。
注記
Directory Server ユーザーアカウントは、ENTRY マッピング方法を使用してのみ検証されます。RDN または DN では、アカウントが非アクティブの Directory Server ユーザーでも、サーバーに正常にバインドされます。
マッピング | 説明 |
---|---|
RDN | このメソッドは、バインド DN の左端にある RDN から値を使用します。このメソッドのマッピングは、Directory Server で定義されます。指定がない場合は、これがデフォルトのマッピングメソッドになります。 |
ENTRY | このメソッドは、バインド DN エントリーのユーザー定義の属性から PAM アイデンティティーの値をプルします。identity 属性は pamIDAttr 属性で定義されます。例: pamIDAttr: customPamUid |
DN | このメソッドは、バインド DN からの完全な識別名を使用します。このメソッドのマッピングは、Directory Server で定義されます。 |
20.15.1.4. 汎用 PAM PTA 設定の設定
PAM 認証には、一般的な 3 つの設定を設定できます。
- PAM (pamService) に送信するサービス名。これは、
/etc/pam.d
で使用する設定ファイルの名前です。 - セキュアな接続 (pamSecure) を必要とするかどうか。
- PAM 認証に失敗した場合の LDAP 認証にフォールバックするかどうか (pamFallback)
pamFallback: false pamSecure: false pamService: ldapserver
20.15.2. PAM パススルー認証の設定
注記
Pluggable Authentication Module (PAM) パススルー認証には、複数の設定インスタンスが存在する場合があります。PAM パススルー認証のインスタンスは、
pamFilter
属性を使用して、プラグインで使用する特定のエントリーを検索するよう LDAP フィルターを設定することで、ユーザーエントリーのサブセットに適用できます。
PAM パススルー認証は、コマンドラインで設定されます。
- PAM サービスが完全に設定されていることを確認してください。
- pam_fprintd.so モジュールを PAM 設定ファイルから削除します。重要pam_fprintd.so モジュールは、PAM パススルー認証プラグイン設定の
pamService
属性によって参照される設定ファイルにすることはできません。PAM の fprintd モジュールを使用すると、Directory Server は最大ファイル記述子制限に到達し、Directory Server プロセスが中止する可能性があります。 - PAM パススルーの認証プラグインを有効にします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin set "PAM Pass Through Auth" --enabled on
- PAM パススルー認証設定エントリーを作成します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth pam-config "Admin PAM PTA Config" add --exclude-suffix="cn=config" --id_map_method="RDN ENTRY" --id-attr="customPamUid" --filter="(manager=uid=example_user,ou=people,dc=example,dc=com pamFallback: FALSE" --secure="TRUE" --service="ldapserver"
- インスタンスを再起動します。
# dsctl instance_name restart
20.15.3. Active Directory をバックエンドとして PAM パススルー認証の使用
PAM パススルー認証では、Directory Server から PAM サービスに認証情報を転送します。1 つのオプションとして、Directory Server 専用の PAM モジュールを設定できます。また、インフラストラクチャーによっては、より再現性が高く便利な方法として、SSSD (System Security Services Daemon) を使用して PAM を設定する方法もあります。SSSD はさまざまなアイデンティティーストアを使用できるため、Active Directory などの認証情報を提供するのに多くの異なるサーバーやサービスを使用できます。
SSSD を介してパススルー認証を使用することはサービスのデイジーチェーンです。PAM PTA プラグインは通常通りに設定されます。使用する特定の PAM サービスファイルを指します。このサービスファイルは SSSD によって管理され、SSSD は複数のプロバイダーであっても必要なアイデンティティープロバイダーに接続するように設定されます。
図20.4 SSSD による PAM パススルー認証
Active Directory で PAM パススルー認証を設定するには、以下を行います。
- Active Directory サーバーを ID プロバイダーの 1 つとして使用するように SSSD を設定します。この設定については、『RHEL システムと Windows Active Directory の直接統合』 の 『SSSD を使用した RHEL システムと AD の直接接続』 セクションを参照してください。
- 次のように PAM パススルー認証プラグインを有効にします。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin set "PAM Pass Through Auth" --enabled on
- 次のように、PAM パススルー認証設定エントリーを作成します。
# dsconf -D "cn=Directory Manager" ldap://server.example.com plugin pass-through-auth pam-config "AD PAM PTA Config" add --id_map_method="ENTRY" --id-attr="uid" --service="login" --include-suffix="ou=people,dc=example,dc=com" --missing-suffix="ERROR"
この例では、uid LDAP
属性を Active Directory に渡すユーザー名として使用し、この設定を people OU に対してのみ有効にしています。 - Directory Server インスタンスを再起動して、設定をロードします。
# dsctl instance_name restart