系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)

目录服务器(从 NIS+ 转换为 LDAP)

rpc.nisd 守护进程的 LDAP 映射部分使用 LDAP 协议版本 3 来与 LDAP 服务器通信。缺省的映射配置 (/var/nis/NIS+LDAPmapping.template) 希望 LDAP 服务器支持扩展版本的 RFC 2307。RFC 可从 http://www.ietf.org/rfc.html 获取。虽然可以使用 NIS+LDAPmapping (4) 来修改 NIS+ 数据和 LDAP 数据之间的映射,但基本的前提条件是假设 LDAP 数据是按照 RFC 2307 中规定的原则进行组织的。

例如,为了在直接 LDAP 客户机和 NIS+ 客户机之间共享帐户信息,LDAP 服务器必须支持以 UNIX crypt 格式存储帐户(用户)口令。如果无法配置 LDAP 服务器实现此操作,则仍可以将 NIS+ 数据(包括帐户)存储到 LDAP 中。但是,将无法在 NIS+ 用户和 LDAP bindDN 之间完全共享帐户信息。

配置 Sun Java System Directory Server

有关安装、设置和管理 Sun Java System Directory Server 的详细说明,请参阅 Sun Java System Directory Server 文档集合。

可以使用 idsconfig(1M) 为 LDAP 客户机配置 Sun Java System Directory Server,以便使用 LDAP 作为名称服务。在将 NIS+ 与 LDAP 数据仓库结合使用时,由 idsconfig(1M) 提供的安装也是适用的。


注意 –

如果使用的是 Sun Java System Directory Server 以外的 LDAP 服务器,则必须手动配置该服务器,使其支持 RFC 2307 架构。


指定服务器地址和端口号

/etc/default/rpc.nisd 文件被设置为在端口 389 上使用本地 LDAP 服务器。如果您的配置不属于这种情况,请为 preferredServerList 属性设置一个新值。例如,要在 IP 地址 192.0.0.1 和端口 65535 上使用 LDAP 服务器,请指定如下内容:


preferredServerList=192.0.0.1:65535

安全性和验证

如果 NIS+ 服务器从 LDAP 获取数据,则 NIS+ 客户机和 NIS+ 服务器之间的验证不受影响。但是,为了维护存储在 LDAP 中 NIS+ 数据的完整性,请考虑在 rpc.nisd 守护进程和 LDAP 服务器之间配置验证。根据 LDAP 服务器的功能,可以使用几种不同类型的验证。

以下列出了 rpc.nisd 守护进程支持的 LDAP 验证:

至少需要实际提供一定安全性的验证方法通常要求您将共享秘密(口令或密钥)与 LDAP 中的 DN 相关联。选择用于 rpc.nisd 守护进程的 DN 可以是唯一的,也可以用于其他目的。它应当具有支持预期的 LDAP 通信流量所必需的相应功能。例如,如果 rpc.nisd 守护进程应当能够向 LDAP 中写入数据,则所选 DN 必须有权在用于 NIS+ 数据的容器中添加/更新/删除 LDAP 数据。此外,在缺省情况下,LDAP 服务器可能会对资源使用情况施加限制(如搜索时间限制或搜索结果大小限制)。如果属于这种情况,则所选 DN 必须具有足够的能力来支持对 NIS+ 数据容器进行枚举。

使用 SSL

rpc.nisd 守护进程还支持使用 SSL 对 LDAP 通信流量进行传输层加密。有关如何生成用于进行 LDAP 服务器验证的 SSL 证书的信息,请查阅 LDAP 服务器文档。将该证书存储到 NIS+ 服务器上的某个文件(例如,/var/nis/cert7.db)中并按以下方式修改 /etc/default/rpc.nisd


nisplusLDAPTLS=ssl

nisplusLDAPTLSCertificateDBPath=/var/nis/cert7.db

一定要防止对证书文件进行未经授权的访问。 请注意,以上方法提供会话加密,还提供 LDAP 服务器到 rpc.nisd 的验证。它并不提供 rpc.nisd 到 LDAP 服务器的验证,因为证书中不包含用于标识 LDAP 客户机 (rpc.nisd) 的任何内容。但是,可以将 SSL 与其他验证方法(simplesasl/digest-md5)结合使用来实现相互验证。

性能和索引

rpc.nisd 守护进程被请求枚举从 LDAP 映射的 NIS+ 表(例如,使用 niscat(1))时,如果该表中至少有一项具有过期的 TTL,该守护进程将枚举相应的 LDAP 容器。尽管此容器是在后台进行枚举的,因此 LDAP 性能显得不太重要,但是建立 LDAP 索引的好处是有助于加速对大型容器的枚举。

要获取枚举特定容器所需的大概时间,可以使用如下所示的命令:

% /bin/time ldapsearch -h server-address -D bind-DN -w password \

-b container, search-base 'cn=*' /dev/null

其中,

/bin/time 列显的“实际”值是经过的(挂钟)时间。如果此值超出相应表项 TTL 很大一部分(25% 或更多)(请参见验证和安全性),那么,为 LDAP 容器创建索引可能会非常有用。

rpc.nisd 支持 simple page 和 VLV 索引方法。要查找 rpc.nisd 支持哪种索引方法以及如何创建这样的索引,请参阅 LDAP 服务器文档。