PAM フレームワークを使用すると、pam_unix_*、pam_krb5、および pam_ldap_* モジュールを含む複数の認証サービスから選択できます。
ユーザー別の認証を使用するには、pam_krb5 を有効にする必要があります。ただし、ユーザー別の資格レベルを割り当てていない場合でも、pam_krb5 認証を使用できます。proxy または anonymous 資格レベルを使用してディレクトリサーバーデータにアクセスする場合は、ディレクトリデータへのアクセスをユーザーごとに制限できません。
anonymous または proxy の認証を選択する場合は、同等の pam_unix_* モジュールではなく、pam_ldap モジュールを使用してください。pam_ldap モジュールは柔軟性が高く、より強固な認証方法をサポートし、アカウント管理を実行できます。
serviceAuthenticationMethod 属性が定義されている場合、ユーザーが LDAP サーバーにバインドする方法はこれによって決まります。定義しない場合は、authenticationMethod 属性が使用されます。pam_ldap モジュールがユーザーの識別情報およびパスワードを持つサーバーに正常にバインドすると、モジュールがユーザーを認証します。ユーザーがディレクトリサーバーからの認証なしでログインしているときでも、アカウント管理を実行し、ユーザーのアカウントステータスを取得できます。
ディレクトリサーバーでの制御は 1.3.6.1.4.1.42.2.27.9.5.8 です。この制御は、デフォルトで有効になっています。デフォルトの制御構成を変更するには、ディレクトリサーバー上で ACI を追加します。例:
dn: oid=1.3.6.1.4.1.42.2.27.9.5.8,cn=features,cn=config objectClass: top objectClass: directoryServerFeature oid:1.3.6.1.4.1.42.2.27.9.5.8 cn:Password Policy Account Usable Request Control aci: (targetattr != "aci")(version 3.0; acl "Account Usable"; allow (read, search, compare, proxy) (groupdn = "ldap:///cn=Administrators,cn=config");) creatorsName: cn=server,cn=plugins,cn=config modifiersName: cn=server,cn=plugins,cn=config
pam_ldap モジュールでは、userPassword 属性が読み取られません。クライアントが UNIX 認証を使用しない場合は、userPassword 属性への読み取りアクセス権を付与する必要がありません。同様に、pam_ldap モジュールは認証方法として none をサポートしません。
|
/etc/pam.conf ファイルを構成していない場合は、デフォルトで UNIX 認証が有効になります。
次に示すモジュールは、元の pam_unix モジュールと同等の機能を備えています。対応するマニュアルページを使用すれば、モジュールが一覧表示されます。
pam_unix_* モジュールは、次の UNIX 認証モデルを使用します。
クライアントは、ネームサービスからユーザーの暗号化されたパスワードを取得します。
ユーザーは、パスワードの入力を求められます。
ユーザーのパスワードが暗号化されます。
クライアントは、暗号化された 2 つのパスワードを比較して、ユーザーを認証するかどうかを決定します。
pam_unix_* モジュールには、次の制限があります。
パスワードは UNIX crypt 形式で格納する必要があります。
userPassword 属性は、ネームサービスから読み取り可能でなければなりません。
たとえば、資格レベルを anonymous に設定した場合は、すべてのユーザーが userPassword 属性を読み取れる必要があります。同様に、資格レベルを proxy に設定した場合は、プロキシユーザーが userPassword 属性を読み取れる必要があります。
pam_unix_account モジュールは、enableShadowUpdate スイッチが true に設定されている場合はアカウント管理をサポートします。リモート LDAP ユーザーアカウントに対する制御は、passwd および shadow ファイルで定義されたローカルユーザーアカウントに適用される制御と同じ方法で適用されます。enableShadowUpdate モードでの LDAP アカウントでは、LDAP アカウントについてはシステムが更新を行い、パスワードの有効期限管理とアカウントのロックのために LDAP サーバー上のシャドウデータを使用します。ローカルアカウントのシャドウデータはローカルクライアントシステムに適用されるのに対して、LDAP ユーザーアカウントのシャドウデータはすべてのクライアントシステムのユーザーに適用されます。
ローカルクライアントの場合のみパスワード履歴を確認でき、LDAP ユーザーアカウントの場合は確認できません。
Kerberos の詳細は、Oracle Solaris 11.3 での Kerberos およびその他の認証サービスの管理と pam_krb5(5) のマニュアルページを参照してください。
パスワードを変更するには、passwd コマンドを使用します。enableShadowUpdate スイッチが有効になっていない場合は、管理者資格情報に加えて、ユーザー資格情報でも userPassword 属性が書き込み可能である必要があります。passwd-cmd の serviceAuthenticationMethod によって、この操作のための authenticationMethod がオーバーライドされます。認証方法によっては、現在のパスワードが暗号化されていない場合があります。
UNIX 認証では、新しい userPassword 属性が UNIX crypt 形式で暗号化されます。この属性は、LDAP に書き込まれる前にタグ付けされます。このため、サーバーへのバインドに使用される認証方法に関係なく、新しいパスワードは暗号化されます。詳細は、pam_authtok_store(5) のマニュアルページを参照してください。
enableShadowUpdate スイッチが有効になっている場合は、ユーザーパスワードが変更されると、pam_unix_* モジュールが関連するシャドウ情報を更新します。同様に、pam_unix_* モジュールは、ローカルユーザーパスワードが変更されたときにこれらのモジュールが更新するローカル shadow ファイル内の shadow フィールドを更新します。
パスワード更新をサポートするために、pam_ldap モジュールは server_policy オプションを付けて pam_authtok_store モジュールを使用できます。pam_authtok_store を使用すると、新しいパスワードは暗号化されずに LDAP サーバーに送信されます。TLS を使用してプライバシを確保します。そうしないと、新しい userPassword が詮索されやすくなります。
Oracle Directory Server Enterprise Edition でタグなしパスワードを設定すると、ソフトウェアは passwordStorageScheme 属性を使用してパスワードを暗号化します。passwordStorageScheme の詳細は、Oracle Directory Server Enterprise Edition (http://docs.oracle.com/cd/E29127_01/doc.111170/e28972/ds-password-policy.htm#fhkrj) の管理者ガイドのユーザーアカウント管理に関するセクションを参照してください。
NIS、または UNIX 認証を使用するその他のクライアントがリポジトリとして LDAP を使用する場合は、passwordStorageScheme 属性に crypt を構成する必要があります。また、Oracle Directory Server Enterprise Edition で sasl/digest-MD5 LDAP 認証を使用する場合、passwordStorageScheme 属性を平文に構成する必要があります。