PAM フレームワークを使用することにより、いくつかの認証サービスの中から選択できます。LDAP とともに pam_unix(5) または pam_ldap(5) を使用できます。
より高い柔軟性とより強力な認証方式をサポートしていること、およびアカウント管理を使用できることから、pam_ldap の使用をお勧めします。
pam_unix(5)
pam.conf(4) ファイルを変更していない場合、デフォルトディレクトリ pam_unix(5) が有効になっています。pam_unix(5) は従来の UNIX 認証モデルに従い、次のように動作します。
クライアントは、ネームサービスからユーザーの暗号化されたパスワードを取得します。
ユーザーは、パスワードの入力を求められます。
ユーザーのパスワードが暗号化されます。
クライアントは、暗号化された 2 つのパスワードを比較して、ユーザーを認証するかどうかを決定します。
pam_unix(5) を使用する場合、次の 2 つの制限が存在します。
パスワードは、平文を含む他の暗号化方式ではなく、UNIX crypt 形式で格納する必要がある
userPassword 属性は、ネームサービスから読み取り可能でなければならない
たとえば、資格レベルを匿名に設定する場合、すべてのユーザーに対してuserPassword 属性を読み取り可能にする必要があります。同様に、資格レベルを proxy に設定する場合、userPassword 属性の読み取りをプロキシユーザーに許可する必要があります。
pam_unix(5) は、sasl 認証方式 digest-MD5 と互換性がありません。これは、Sun ONE Directory Server 5.1 では、digest-MD5 を使用するためにパスワードを平文で格納する必要があるのに対し、pam_unix ではパスワードを crypt 形式で格納する必要があるためです。
pam_ldap(5)
pam_ldap(5) を使用する場合、ユーザーはpam_ldap の serviceAuthenticationMethod パラメータに定義された認証方式を使用して LDAP サーバーにバインドします (このパラメータが存在する場合)。それ以外の場合、authenticationMethod がデフォルトで使用されます。
pam_ldap(5) を使用して、ユーザーの識別情報および指定されたパスワードをサーバーにバインドできればユーザーが認証されたことになります。
pam_ldap(5) は userPassword 属性を読み取りません。このため、 pam_unix(5) を使用する他のクライアントが存在しない限り、userPassword 属性の読み取りアクセス権を付与する必要はありません。pam_ldap(5) は、認証方式 none をサポートしません。このため、クライアントが pam_ldap(5) を使用できるように、serviceAuthenticationMethod 属性または authenticationMethod 属性を定義する必要があります。
認証方式 simple を使用する場合、第三者がネットワーク上で userPassword 属性を読み取ることができます。
詳細については、pam_ldap に対応した pam.conf ファイルの例 を参照してください。
以下の表に、pam_unix と pam_ldap の主な相違点を示します。
表 13–5 pam_unix と pam_ldap
|
pam_unix |
pam_ldap |
---|---|---|
パスワードの送信 |
passwd サービス認証方式を使用 |
passwd サービス認証方式を使用 |
新規パスワードの送信 |
暗号化する |
暗号化しない (TLS を使用しない場合) |
新規パスワードの格納 |
crypt 形式 |
Sun ONE DS 5.1 でのデフォルト passwd 格納スキーマによる定義に従う |
パスワードの読み取り |
必須 |
任意 |
パスワード変更後の sasl/digest—MD5 の互換性 |
なし。パスワードは平文では格納されない。ユーザーを認証できない |
あり。デフォルトのストレージスキーマが平文 (clear) に設定されていれば、ユーザーを認証できる |
パスワードの変更には、passwd(1) を使用します。パスワードを変更するには、userPassword 属性をユーザーから書き込み可能にする必要があります。passwd-cmd 用の serviceAuthenticationMethod が、この操作の authenticationMethod を無効にすることに留意してください。使用する認証によっては、現行のパスワードの暗号化解除がネットワーク上で行われる場合があります。
pam_unix(5) の場合、UNIX crypt 形式を使用して新規 userPassword 属性が暗号化されタグ付けされてから、LDAP への書き込みが行われます。このため、新規パスワードは、サーバーへのバインドに使用される認証方式に関係なく、ネットワーク上で暗号化されます。
pam_ldap の場合、パスワードの変更時に新規パスワードの暗号化解除が行われます。このため、機密性を保つために TLS を使用する必要があります。TLSを使用しない場合、userPassword が漏洩する危険性があります。
Sun ONE Directory Server 5.1 で、pam_ldap(5) を使用してパスワードを設定する場合、パスワードは passwordStrorageScheme (タグ付けされていない状態) を使用して暗号化されます。passwordStorageScheme 属性の詳細については、『iPlanet Directory Server 5.1 管理者ガイド』のユーザーアカウントの管理に関する章を参照してください。
passwordStorageScheme 属性を設定する際、以下の点を考慮する必要があります。pam_unix を使用する NIS、NIS+、または他のクライアントがリポジトリとして LDAP を使用する場合、 passwordStorageScheme に対して crypt を実行する必要があります。また、Sun ONE Directory Server 5.1 で sasl/digest-MD5 に対して pam_ldap を使用する場合、passwordStorageScheme を平文に設定する必要があります。詳細は、次の節を参照してください。
Sun ONE Directory Server を digest-MD5 で使用する場合は、パスワードを変更するユーザーが何らかのパスワード管理上の理由で変更に失敗すると、変更後のパスワードを使用してログインできなくなります。
たとえば、サーバーでパスワード履歴が有効である場合、ユーザーが以前に使用していたパスワードに変更しようとすると、制約違反 (この場合は以前に使用していたパスワードを使用すること) のために pam_ldap はパスワードの変更に失敗します。pam は pam_ldap を無視して、pam_unix に行き着きます。結果として、パスワードが平文ではなく、暗号化形式で格納されます。このため、次にユーザーが変更後のパスワードを使用してログインを試みると、ログインは失敗します。
pam_ldap が pam_unix に行き着くことを防ぐには、すべてのクライアントの pam.conf ファイルで次の構成を使用する必要があります。
other password required pam_dhkeys.so.1 other password requisite pam_authtok_get.so.1 other password requisite pam_authtok_check.so.1 other password binding pam_authtok_store.so.1 server_policy |
上記の構成には、pam_ldap.so.1 が存在しないことに留意してください。server_policy は、pam_authtok_store.so.1 が常に LDAP アカウントの平文テキストをディレクトリサーバーに送信することを指定し、サーバーが独自のパスワード暗号化スキーマに従ってパスワードを格納することを許可します。ただし、上記の構成を使用する場合、これと適合した認証構成も必要になります。たとえば、次の構成を使用します。
login auth binding pam_unix_auth.so.1 server_policy login auth required pam_ldap.so.1 |
および
passwd auth binding pam_passwd_auth.so.1 server_policy passwd auth required pam_ldap.so.1 |
同じディレクトリネーミングドメイン内のすべてのクライアントが、上記の構成を使用するようにしてください。 1 つのクライアントで別の pam.conf を使用している場合でも、ユーザーがそのシステム上でパスワードを変更すると、残りのクライアントでログイン認証が失敗します。