JavaScript is required to for searching.
跳过导航链接
退出打印视图
在 Oracle Solaris 11.1 中使用命名和目录服务     Oracle Solaris 11.1 Information Library (简体中文)
为本文档评分
search filter icon
search icon

文档信息

前言

第 1 部分关于命名和目录服务

1.  命名和目录服务(概述)

2.  名称服务转换(概述)

3.  管理 DNS(任务)

4.  设置 Oracle Solaris Active Directory 客户机(任务)

第 2 部分NIS 设置和管理

5.  网络信息服务(概述)

6.  设置和配置 NIS(任务)

7.  管理 NIS(任务)

8.  NIS 故障排除

第 3 部分LDAP 命名服务

9.  LDAP 命名服务介绍(概述)

目标用户

建议的背景读物

其他先决条件

LDAP 命名服务与其他命名服务的比较

LDAP 命名服务的优点

LDAP 命名服务的限制

设置 LDAP 命名服务(任务列表)

LDAP 数据交换格式

随 LDAP 使用全限定域名

缺省目录信息树

缺省 LDAP 架构

服务搜索描述符和架构映射

SSD 说明

attributeMap 属性

objectclassMap 属性

LDAP 客户机配置文件

LDAP 客户机配置文件属性

本地 LDAP 客户机属性

ldap_cachemgr 守护进程

LDAP 命名服务安全模型

传输层安全

指定客户机凭证级别

LDAP anonymous 凭证级别

LDAP proxy 凭证级别

LDAP proxy anonymous 凭证级别

LDAP per-user 验证

enableShadowUpdate 开关

LDAP 客户机的凭证存储

为 LDAP 命名服务选择验证方法

为 LDAP 中的特定服务指定验证方法

可插拔验证方法

pam_unix_* 服务模块

Kerberos 服务模块

LDAP 服务模块

PAM 和更改口令

LDAP 帐户管理

使用 pam_unix_* 模块管理 LDAP 帐户

10.  LDAP 命名服务的规划要求(任务)

11.  为使用 LDAP 客户机设置 Oracle Directory Server Enterprise Edition(任务)

12.  设置 LDAP 客户机(任务)

13.  LDAP 故障排除(参考信息)

14.  LDAP 命名服务(参考信息)

15.  从 NIS 转换为 LDAP(任务)

词汇表

索引

请告诉我们如何提高我们的文档:
过于简略
不易阅读或难以理解
重要信息缺失
错误的内容
需要翻译的版本
其他
Your rating has been updated
感谢您的反馈!

您的反馈将非常有助于我们提供更好的文档。 您是否愿意参与我们的内容改进并提供进一步的意见?

LDAP 命名服务安全模型

LDAP 命名服务能够以两种不同的方式使用 LDAP 系统信息库。一种是同时用作命名服务和验证服务的源。另一种是严格用作命名数据的源。本节讨论了当 LDAP 系统信息库同时用作命名服务和验证服务时客户机标识、验证方法、pam_ldappam_unix_* 模块以及帐户管理的概念。本节还讨论了 LDAP 命名服务如何与 Kerberos 环境(《Oracle Solaris 11.1 管理:安全服务》中的第 VI 部分, "Kerberos 服务")和 pam_krb5(5) 模块配合使用。


注 - 以前,如果启用了 pam_ldap 帐户管理,所有用户在每次登录系统时都必须提供登录口令以进行验证。因此,使用 ssh 等工具的非基于口令的登录将失败。

在用户登录时,在不向目录服务器进行验证的情况下执行帐户管理并检索用户的帐户状态。目录服务器上的新控件是 1.3.6.1.4.1.42.2.27.9.5.8,它在缺省情况下是启用的。

要将此控制从缺省状态修改为其他状态,请在目录服务器上添加访问控制指令 (Access Control Instructions, 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


注 - 如果您使用 Kerberos 作为验证系统并将其与 LDAP 命名系统相集成,则您将能够在您的企业中通过 Kerberos 支持单点登录 (single sign on, SSO)。您还能够在按每用户或每主机查询 LDAP 命名数据时使用同一标识系统。


要访问 LDAP 系统信息库中的信息,客户机将首先向目录服务器证明自己的标识。该标识可以是匿名的,或者是 LDAP 服务器可以识别的主机或用户。LDAP 服务器将根据客户机的标识和服务器的访问控制信息 (access control information, ACI) 允许客户机读取目录信息。有关 ACI 的更多信息,请查阅所用的 Oracle Directory Server Enterprise Edition 版本的管理指南

如果标识基于发出请求的主机,则您使用的是代理验证。一旦该主机通过验证,则该主机上的所有用户都将获得访问权限。如果标识基于用户,则您使用的是每用户验证。主机上的每个用户都必须通过验证才能获得访问权限。

如果客户机对于任何给定的请求以非匿名方式进行连接,则必须使用自己和服务器均支持的验证方法向服务器证明自己的身份。在确认了自己的身份之后,客户机即可发出各种 LDAP 请求。

当您登录到系统时,PAM 服务可以使用来自本地计算机、来自 LDAP 服务、来自 Kerberos 服务器或这三者的某种组合的信息决定登录尝试是否将成功。当使用 pam_kerb 模块时,允许访问的决定是由 Kerberos 服务器做出的。当使用 pam_ldap 模块时,一半决定必须由 LDAP 服务器做出,而另一半决定由本地主机做出。使用 pam_unix_* 模块时,信息来自本地主机,决定是在本地做出的。

使用 LDAP 服务时,当使用 pam_ldap 进行登录时,命名服务访问目录的方式与验证服务 (pam_ldap) 访问目录的方式有所不同。命名服务基于预定义的标识从目录中读取各个条目及其属性。验证服务使用用户名和口令向 LDAP 服务器验证用户身份,以确认用户是否输入了正确的口令。有关验证服务的更多信息,请参见 pam_ldap(5) 手册页。

当使用 Kerberos 执行验证并且在 LDAP 命名服务中也启用了验证(这是“每用户”模式所必需的)时,Kerberos 可以提供双重功能。Kerberos 向服务器验证身份,主体(用户或主机)的 Kerberos 标识用于向目录验证身份。这样,用于向系统验证身份的用户标识同样也将用于向目录验证身份,以执行查找或更新,如果需要,管理员可以在目录中使用访问控制信息 (Access Control Information, ACI) 来限制命名服务返回的结果。

传输层安全

传输层安全 (transport layer security, TLS) 可以用来保护 LDAP 客户机与目录服务器之间的通信安全,提供保密性和数据完整性。TLS 协议是安全套接字层 (Secure Sockets Layer, SSL) 协议的一个超集。LDAP 命名服务支持 TLS 连接。请注意,使用 SSL 会增加目录服务器和客户机的负荷。

您需要为 SSL 设置目录服务器。有关为 SSL 设置 Oracle Directory Server Enterprise Edition 的更多信息,请参阅您使用的 Oracle Directory Server Enterprise Edition 版本的管理指南。您还需要为 SSL 设置 LDAP 客户机。

如果使用 TLS,必须安装必要的安全数据库。特别的是,需要证书和密钥数据库文件。例如,如果您采用来自 Netscape Communicator 的较旧的数据库格式,则 cert7.dbkey3.db 这两个文件是必需的。如果您使用来自 Mozilla 的新数据库格式,则 cert8.dbkey3.dbsecmod.db 这三个文件是必需的。cert7.dbcert8.db 文件中包含受信任证书。key3.db 文件中包含客户机的密钥。即使 LDAP 命名服务客户机不使用客户机密钥,此文件也必须存在。secmod.db 文件中包含安全模块,如 PKCS#11 模块。如果使用的是旧格式,则不需要此文件。

有关更多信息,请参见设置 TLS 安全性

指定客户机凭证级别

LDAP 命名服务客户机根据客户机的凭证级别向 LDAP 服务器进行验证。可以为 LDAP 客户机指定多个用以向目录服务器进行验证的级别。

LDAP anonymous 凭证级别

如果使用 anonymous 访问,则只能访问所有人都能使用的数据。在 anonymous 模式中,不能执行 LDAP BIND 操作。此外,还应考虑安全问题。允许对目录的某些部分进行 anonymous 访问,意味着任何具有该目录访问权限的人都有读取访问权限。如果使用 anonymous 凭证级别,您需要允许对所有 LDAP 命名条目和属性进行读取访问。


注意

注意 - 绝不应当允许对目录进行 anonymous 写入,因为那样任何人都可以更改 DIT 中他们对其具有写入访问权限的信息,包括其他用户的口令或他们自己的标识。



注 - Oracle Directory Server Enterprise Edition 允许您基于 IP 地址、DNS 名称、验证方法和一天中的时段对访问进行限制。您可能希望通过进一步的约束来限制访问。有关更多信息,请参见您使用的 Oracle Directory Server Enterprise Edition 版本的管理指南中的“管理访问控制”。


LDAP proxy 凭证级别

客户机验证或者绑定到一组共享的 LDAP 绑定凭证,或者称为代理帐户。此代理帐户可以是任何允许绑定到目录的条目。此代理帐户需要有足够的权限才能在 LDAP 服务器上执行命名服务功能。此代理帐户是一个按系统共享的资源。也就是说,每个使用代理访问权限登录到某个系统的用户(包括 root 用户)与该系统上的所有其他用户看到的结果相同。您需要在使用 proxy 凭证级别的每台客户机上配置 proxyDNproxyPassword。经过加密的 proxyPassword 存储在客户机本地。您可以为不同的客户机组设置不同的代理。例如,您可以为所有销售客户机配置一个代理来访问整个公司都可访问的目录以及销售目录,同时阻止销售客户机访问包含工资信息的人力资源目录。或者,在最极端的情况中,您可以为每个客户机指定不同的代理,或者为所有客户机仅指定一个代理。典型的 LDAP 部署应当介于这两种极端情况之间。请仔细考虑您的选择。代理太少可能会限制您对用户访问资源进行控制的能力。但是,代理太多,又会增加系统设置和维护的难度。您需要根据自己的环境向代理用户授予合适的权限。有关如何确定哪种验证方法最适合您的配置的信息,请参见LDAP 客户机的凭证存储

如果某个代理用户的口令发生了更改,您需要在使用该代理用户的每台客户机上更新该口令。如果您为 LDAP 帐户使用口令生命期功能,请确保为代理用户关闭此功能。


注 - 请注意,proxy 凭证级别应用于任意给定系统上的所有用户和进程。如果两个用户需要使用不同的命名策略,他们必须使用不同的计算机,或者必须使用“每用户”验证模式。


另外,如果客户机使用 proxy 凭证进行验证,则 proxyDN 在所有服务器上都必须具有相同的 proxyPassword

LDAP proxy anonymous 凭证级别

proxy anonymous 是一个多值条目,它定义了多个凭证级别。指定了 proxy anonymous 级别的客户机将首先尝试使用其代理标识进行验证。如果客户机由于某种原因(例如,用户锁定、口令失效)而无法作为代理用户进行验证,客户机将使用匿名访问。这可能会导致服务的级别有所不同,具体取决于目录的配置方式。

LDAP per-user 验证

“每用户”(self) 验证方式在向目录服务器验证身份时使用 Kerberos 标识(主体)来针对每个用户或每个系统执行查找。使用“每用户”验证,系统管理员可以使用访问控制指令 (access control instruction, ACI)、访问控制列表 (access control list, ACL)、角色、组或其他目录访问控制机制来向特定用户或系统授予或拒绝对特定命名服务数据的访问权限。


注 - 在配置“每用户”模式时,用于启用该模式的配置值是“self”,它表示“每用户”模式。


要使用“每用户”验证模型,必须部署 Kerberos 单点登录服务。此外,部署中使用的一个或多个目录服务器必须支持 SASL 和 SASL/GSSAPI 验证机制。因为 Kerberos 预期使用文件和 DNS(而非 LDAP)进行主机名查找,因此应当在该环境中部署 DNS。另外,要使用“每用户”验证,还必须启用 nscd。在该配置中,nscd 守护进程不是可选组件。

enableShadowUpdate 开关

如果在客户机上 enableShadowUpdate 开关设置为 true,则将使用管理凭证来更新影子数据。影子数据存储在目录服务器上的 shadowAccount 对象类中。管理凭证是由 adminDNadminPassword 属性的值定义的,如本地 LDAP 客户机属性中所述。这些管理凭证不用于任何其他用途。

管理凭证具有与 Proxy 凭证类似的属性。不同之处在于,对于管理凭证,用户必须具有区域的所有特权或者有效的 root UID,才能读取或更新影子数据。管理凭证可以指定给任何允许绑定到目录的条目。不过,不要使用 LDAP 服务器的同一目录管理器标识 (cn=Directory Manager)。

具有管理凭证的该条目必须具有足够的访问权限才能读取和写入目录中的影子数据。因为该条目是按系统共享的资源,因此必须在每个客户机上配置 adminDNadminPassword 属性。经过加密的 adminPassword 存储在客户机本地。口令使用为客户机配置的相同验证方法。给定系统上的所有用户和进程使用管理凭证读取和更新影子数据。

LDAP 客户机的凭证存储

如果您将客户机配置为使用代理标识,则客户机将代理信息保存在 svc:/network/ldap/client 服务中。当前的 LDAP 实现不将代理凭证存储在客户机的配置文件中。在初始化期间通过使用 ldapclient 设置的任何代理凭证都存储在 SMF 系统信息库中。这样便提高了代理的 DN 和口令信息的安全性。有关设置客户机配置文件的更多信息,请参见第 12 章

同样,如果您对客户机进行配置以启用影子数据更新,并且客户机凭证级别不是 self,则客户机会将其信息保存在 svc:/network/ldap/client 服务中。

如果您将客户机配置为使用“每用户”验证,则在验证期间将使用每个主体(每个用户或主机)的 Kerberos 标识和 Kerberos 票证信息。在这样的环境中,目录服务器将 Kerberos 主体映射到一个 DN,并使用 Kerberos 凭证向该 DN 验证身份。然后,目录服务器根据需要使用其访问控制指令 (access control instruction, ACI) 机制来允许或拒绝对命名服务数据的访问。在这种情况下,Kerberos 票证信息用于向目录服务器验证身份,系统不会存储用于验证 DN 或口令。因此,对于此类型的配置,在使用 ldapclient 命令初始化客户机时,不需要指定 adminDNadminPassword 属性。

为 LDAP 命名服务选择验证方法

为客户机指定 proxyproxy-anonymous 凭证级别时,还需要选择代理用来向目录服务器进行验证的方法。缺省情况下,验证方法是 none,它表示匿名访问。验证方法还可以有与之关联的传输安全选项。

验证方法(例如凭证级别)可以是多值的。例如,在客户机配置文件中,您可以指定客户机首先尝试使用由 TLS 保护的 simple 方法进行绑定。如果失败,客户机将尝试使用 sasl/digest-MD5 方法进行绑定。这样,authenticationMethod 将是 tls:simple;sasl/digest-MD5

LDAP 命名服务支持某些简单身份验证和安全层 (Simple Authentication and Security Layer, SASL) 机制。这些机制无需 TLS 便可安全地交换口令。但是,这些机制不提供数据完整性和保密性。有关 SASL 的信息,请参见 RFC 2222。

支持的验证机制如下所示:


注意

注意 - Oracle Directory Server Enterprise Edition 要求口令以明文形式存储才能使用 digest-MD5。如果验证方法设置为 sasl/digest-MD5tls:sasl/digest-MD5,则代理用户的口令将需要以明文形式存储。要特别注意的是,如果 userPassword 属性以明文形式存储,它应具有正确的 ACI,以便它将是不可读的。


下表概述了各种验证方法及其各自的特征。

表 9-4 验证方法

绑定
线路上的口令
Oracle Directory Server Enterprise Edition 上的口令
会话
none
N/A
N/A
无加密
simple
明文
任何
无加密
sasl/digest-MD5
加密
明文
无加密
sasl/cram-MD5
加密
N/A
无加密
sasl/GSSAPI
Kerberos
Kerberos
加密
tls:simple
加密
任何
加密
tls:sasl/cram-MD5
加密
N/A
加密
tls:sasl/digest-MD5
加密
明文
加密

为 LDAP 中的特定服务指定验证方法

可以在 serviceAuthenticationMethod 属性中为给定的服务指定验证方法。下列服务允许选择验证方法:


注 - 如果该服务未设置 serviceAuthenticationMethod,则缺省情况下将使用 authenticationMethod 属性的值。



注 - 在每用户模式中,Kerberos 服务模块 (pam Kerberos) 用作验证服务。在此运行模式中,ServiceAuthenticationMethod 不是必需的。



注 - 如果 enableShadowUpdate 开关设置为 true,并且在 passwd-cmdserviceAuthenticationMethod 参数中定义了验证方法,则 ldap_cachemgr 守护进程将使用该方法绑定到 LDAP 服务器。如果不存在,将使用 authenticationMethod。守护进程不会使用 none 验证方法。


下面的示例显示了某个客户机配置文件的一部分,其中,用户将使用 sasl/digest-MD5 来向目录服务器验证身份,但将使用 SSL 会话更改其口令。

serviceAuthenticationMethod=pam_ldap:sasl/digest-MD5
serviceAuthenticationMethod=passwd-cmd:tls:simple

可插拔验证方法

通过使用 PAM 框架,您可以从几种验证服务中进行选择,包括 pam_unix_*pam_krb5pam_ldap_* 模块。

如果使用“每用户”验证方法,则必须启用上面列出的三种方法中最强的验证服务 pam_krb5。请参见 pam_krb5(5)《Oracle Solaris 11.1 管理:安全服务》

即使未启用“每用户”验证,也可以使用 pam_krb5 验证系统。如果使用 proxy 或 anonymous 凭证级别来访问目录服务器数据,则无法基于每个用户限制对目录数据的访问。

当使用 anonymous 或 proxy authentication 方法时,建议优先使用 pam_ldap 模块而不是 pam_unix_* 模块,因为其灵活性更强,支持更强的验证方法并且能够使用帐户管理。

pam_unix_* 服务模块

如果您没有更改 /etc/pam.conf 文件,则会缺省启用 UNIX 验证。


注 - pam_unix 模块已被删除并且在 Oracle Solaris 发行版中不再受支持。但是,Solaris 提供了一组其他服务模块,这些模块将提供等效或更强的功能。因此,在本指南中,pam_unix 是指等效的功能,而并非指 pam_unix 模块本身。


下面列出的模块提供了与原始 pam_unix 模块等效的功能。

pam_unix_* 模块遵循传统的 UNIX 验证模型,如以下列表中所述。

  1. 客户机从名称服务检索用户的加密口令。

  2. 系统提示用户输入其口令。

  3. 对用户的口令进行加密。

  4. 客户机比较这两个经过加密的口令,确定用户是否应通过验证。

此外,使用 pam_unix_* 模块时有两个限制。


注 - UNIX 验证与 sasl 验证方法 digest-MD5 不兼容,因为 Oracle Directory Server Enterprise Edition 要求口令以明文形式存储才能使用 digest-MD5。UNIX 验证要求口令以 crypt 格式存储。



注 - enableShadowUpdate 开关设置为 true 时,pam_unix_account 模块支持帐户管理。对远程 LDAP 用户帐户实施控制的方式与对在 passwdshadow 文件中定义的本地用户帐户实施控制的方式相同。在 enableShadowUpdate 模式中,对于 LDAP 帐户,系统将更新并使用 LDAP 服务器上的影子数据执行口令生命期和帐户锁定功能。当然,本地帐户的影子数据仅应用于本地客户机系统,而 LDAP 用户帐户的影子数据将应用于所有客户机系统上的用户。

只有本地客户机支持口令历史记录检查,LDAP 用户帐户不支持此功能。


Kerberos 服务模块

请参阅 pam_krb5(5) 手册页和《Oracle Solaris 11.1 管理:安全服务》

LDAP 服务模块

当实施 LDAP 验证时,如果在 pam_ldapserviceAuthenticationMethod 参数中定义了验证方法,则用户使用该方法绑定到 LDAP 服务器。否则,将使用 authenticationMethod

如果 pam_ldap 能够使用用户的身份和提供的口令绑定到服务器,它将验证用户的身份。


注 - 以前,如果启用了 pam_ldap 帐户管理,所有用户在每次登录系统时都必须提供登录口令以进行验证。因此,使用 ssh 等工具的非基于口令的登录将失败。

在用户登录时,在不向目录服务器进行验证的情况下执行帐户管理并检索用户的帐户状态。目录服务器上的新控件是 1.3.6.1.4.1.42.2.27.9.5.8,它在缺省情况下是启用的。

要将此控制从缺省状态修改为其他状态,请在目录服务器上添加访问控制指令 (Access Control Instructions, 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 属性。因此,不需要授予对 userPassword 属性的读取访问权限,除非有使用 UNIX 验证的其他客户机。此外,pam_ldap 不支持 none 验证方法。因此,您必须定义 serviceAuthenticationMethodauthenticationMethod 属性,以便客户机可以使用 pam_ldap。有关更多信息,请参见 pam_ldap(5) 手册页。


注意

注意 - 如果使用 simple 验证方法,userPassword 属性在传输过程中可能会被第三方读取。


下表汇总了各种验证机制之间的主要区别。

表 9-5 LDAP 中的验证行为

事件
pam_unix_*
pam_ldap
pam_krb5
发送口令
使用 passwd 服务验证方法
使用 passwd 服务验证方法
使用 Kerberos 单点登录技术,不需要口令
发送新口令
加密
不加密(除非使用了 TLS)
使用 Kerberos,不通过线路发送口令
存储新口令
crypt 格式
Oracle Directory Server Enterprise Edition 中定义的口令存储方案
口令由 Kerberos 管理
是否需要读取口令?
更改口令之后,是否与 sasl/digest-MD5 兼容
否。口令不以 clear 形式存储。用户无法进行验证。
是。只要将缺省的存储方案设置为 clear,用户即可验证身份。
否。使用了 sasl/GSSAPI。线路上没有口令,目录服务器中也不存储口令,除非所使用的 Kerberos kdc 在 LDAP 目录服务器中管理其口令数据库。
是否支持口令策略?
是。enableShadowUpdate 必须设置为 true
是(如果进行了这样的配置)。
请参见 pam_krb5(5)(Kerberos V5 帐户管理模块)。

PAM 和更改口令

可使用 passwd 命令更改口令。如果 enableShadowUpdate 开关未设置为 true,则用户必须可以对 userPassword 属性进行写入。如果 enableShadowUpdate 开关设置为 true,则管理凭证必须能够更新 userPassword 属性。请记住,对于此操作,passwd-cmdserviceAuthenticationMethod 会覆盖 authenticationMethod。当前口令在传输过程中可能是未加密的,具体取决于所使用的验证方法。

当使用 UNIX 验证时,在将新的 userPassword 属性写入到 LDAP 之前,将使用 UNIX crypt 格式对其进行加密和标记。因此,无论使用哪种验证方法绑定到服务器,在传输过程中都会对新口令进行加密。有关更多信息,请参见 pam_authtok_store(5) 手册页。

如果 enableShadowUpdate 开关设置为 true,则当用户口令被更改时,pam_unix_* 模块还更新相关的影子信息。pam_unix_* 模块更新的字段与本地用户口令被更改时该模块在本地 shadow 文件中更新的 shadow 字段相同。

pam_ldap 不再支持口令更新。现在,pam_authtok_storeserver_policy 选项一起替代了 pam_ldap 口令更新功能。当使用 pam_authtok_store 时,新口令以明文形式发送到 LDAP 服务器。因此,为了确保保密性,请使用 TLS。如果不使用 TLS,新的 userPassword 将很容易被窥探。如果您随 Oracle Directory Server Enterprise Edition 设置了无标记的口令,则该软件将使用 passwordStorageScheme 属性对口令进行加密。有关 passwordStorageScheme 的更多信息,请参见所用的 Oracle Directory Server Enterprise Edition 版本的管理指南中有关用户帐户管理的章节。


注 - 设置 passwordStorageScheme 属性时,需要考虑以下配置问题。如果某个 NIS 或使用 UNIX 验证的另一客户机正在使用 LDAP 作为系统信息库,则 passwordStorageScheme 需要是 crypt。另外,如果将使用 sasl/digest-MD5 的 LDAP 验证用于 Oracle Directory Server Enterprise Edition,则 passwordStorageScheme 必须设置为 clear。


LDAP 帐户管理

如果您选择 pam_krb5 作为帐户和口令管理系统,Kerberos 环境将负责管理您所有的帐户、口令、帐户锁定和其他帐户管理详细信息。请参阅 pam_krb5(5)《Oracle Solaris 11.1 管理:安全服务》

如果您不使用 pam_krb5,则可以配置 LDAP 命名服务以利用 Oracle Directory Server Enterprise Edition 中提供的口令和帐户锁定策略支持。您可以配置 pam_ldap(5) 以支持用户帐户管理。与正确的 PAM 配置一起使用时,passwd(1) 可强制实施由 Oracle Directory Server Enterprise Edition 口令策略设置的口令语法规则。

通过 pam_ldap(5),可以支持以下帐户管理功能。这些功能取决于 Oracle Directory Server Enterprise Edition 的口令和帐户锁定策略配置。您可以根据需要启用任意多的功能。


注 - 上述帐户管理功能只能用于 Oracle Directory Server Enterprise Edition。有关在服务器上配置口令和帐户锁定策略的信息,请参见所用 Oracle Directory Server Enterprise Edition 版本的管理指南中的“用户帐户管理”一章。另请参见使用 pam_ldap 模块进行帐户管理的示例 pam_conf 文件。不要启用对 proxy 帐户的帐户管理。


在 Oracle Directory Server Enterprise Edition 上配置口令和帐户锁定策略之前,请确保所有主机将“最新的”LDAP 客户机用于 pam_ldap 帐户管理。

此外,请确保客户机具有正确配置的 pam.conf(4) 文件。否则,当 proxy 或用户口令到期后,LDAP 命名服务将无法工作。


注 - 以前,如果启用了 pam_ldap 帐户管理,所有用户在每次登录系统时都必须提供登录口令以进行验证。因此,使用 ssh 等工具的非基于口令的登录将失败。

在用户登录时,在不向目录服务器进行验证的情况下执行帐户管理并检索用户的帐户状态。目录服务器上的新控件是 1.3.6.1.4.1.42.2.27.9.5.8,它在缺省情况下是启用的。

要将此控制从缺省状态修改为其他状态,请在目录服务器上添加访问控制指令 (Access Control Instructions, 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_unix_* 模块管理 LDAP 帐户

如果在客户机上 enableShadowUpdate 开关设置为 true,则可用于本地帐户的帐户管理功能还可以用于 LDAP 帐户。这些功能包括口令生命期、帐户到期和通知、锁定登录失败的帐户等等。另外,LDAP 中现在支持 passwd 命令的 -dluNfnwx 选项。因此,LDAP 命名服务中支持文件命名服务中的 passwd 命令和 pam_unix_* 模块的全部功能。enableShadowUpdate 开关提供了一种为在文件和 LDAP 作用域中定义的用户实施一致的帐户管理的方法。

为防止用户修改自己的帐户管理数据并借此规避口令策略,LDAP 服务器被配置为阻止用户对服务器上自己的影子数据进行写入访问。具有管理凭证的管理员将负责为客户机系统执行影子数据更新。不过,这种配置与 pam_ldap 模块冲突,因为该模块要求口令可由用户修改。因此,由 pam_ldap 模块执行的帐户管理与由 pam_unix_* 模块执行的帐户管理不兼容。


注意

注意 - 不要在同一个 LDAP 命名域中同时使用 pam_ldap 模块和 pam_unix_* 模块。要么所有客户机都使用 pam_ldap 模块,要么所有客户机都使用 pam_unix_* 模块。因为存在这种限制,您可能需要专用的 LDAP 服务器。例如,某个 web 或电子邮件应用程序可能希望用户能够在 LDAP 服务器上更改自己的口令。


enableShadowUpdate 实现还要求管理凭证(adminDNadminPassword)存储在每个客户机本地。该信息存储在 svc:/network/ldap/client 服务中。

与使用 pam_ldap 进行帐户管理不同,使用 pam_unix_* 模块进行帐户管理不要求更改 /etc/pam.conf 文件。使用缺省的 /etc/pam.conf 文件足以满足要求。