跳过导航链接 | |
退出打印视图 | |
系统管理指南:命名和目录服务(DNS、NIS 和 LDAP) Oracle Solaris 10 8/11 Information Library (简体中文) |
4. 网络信息服务 (Network Information Service, NIS)(概述)
11. 为使用 LDAP 客户机设置 Sun Java System Directory Server(任务)
nisplusLDAPdatabaseIdMapping 属性
nisplusLDAPattributeFromColumn 属性
nisplusLDAPcolumnFromAttribute 属性
client_info 和 timezone 表(从 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 文档集合。
您可以使用 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 验证:
none
none 验证方法为缺省方法。虽然使用 none 无需进行任何设置,但是它并不提供安全性。它仅适用于根本没有安全要求的环境。
要使用 none 验证,请确保 authenticationMethod 属性具有以下值:
authenticationMethod=none
至少实际上能够提供一定安全性的验证方法通常要求您将共享秘密(口令或密钥)与 LDAP 中的 DN 相关联。您选择的供 rpc.nisd 守护进程使用的 DN 可以是唯一的,也可以用于其他目的。它应当有适当的功能来支持预期的 LDAP 通信流量。例如,如果 rpc.nisd 守护进程应当能够向 LDAP 中写入数据,则所选 DN 必须有权在用于 NIS+ 数据的容器中添加/更新/删除 LDAP 数据。此外,在缺省情况下,LDAP 服务器可能会对资源使用情况施加限制(如搜索时间限制或搜索结果大小限制)。如果情况如此,您选择的 DN 必须具有足够的能力来支持对 NIS+ 数据容器的枚举。
simple
simple 验证方法通过交换未经加密的口令字符串来提供验证。由于口令在 LDAP 客户机(rpc.nisd 守护进程)和 LDAP 服务器之间以明文形式发送,因此,只有当 NIS+ 和 LDAP 服务器之间的信息交换受到某种其他方法的保护时,simple 方法才适用。
例如,对 LDAP 通信流量进行传输层加密,或者 NIS+ 和 LDAP 服务器是同一个系统,并且 NIS+/LDAP 通信流量保持在内核中(非授权用户无法看到)。
使用要用于 simple 验证的 DN 和口令来修改 rpc.nisd 守护进程的配置。例如,如果 DN 是 cn=nisplusAdmin,ou=People,dc=some,dc=domain,口令是 aword,请设置以下内容:
authenticationMethod=simple nisplusLDAPproxyUser=cn=nisplusAdmin,ou=People,dc=some,dc=domain nisplusLDAPproxyPassword=aword
一定要防止对口令的存储位置进行未经授权的访问。请记住,如果口令是在 rpc.nisd 命令行上指定的,那么,系统上的任何用户都可以通过诸如 ps(1) 之类的命令查看口令。
sasl/digest-md5
sasl/digest-md5 验证方法使用 digest/md5 算法来提供验证。
有关如何设置授权标识以用于 digest-md5 验证的信息,以及如何修改 /etc/default/rpc.nisd 文件以指定此标识及其相关口令的信息,请查阅 LDAP 服务器文档。
authenticationMethod=sasl/digest-md5 nisplusLDAPproxyUser=cn=nisplusAdmin,ou=People,dc=some,dc=domain nisplusLDAPproxyPassword=aword
一定要防止对用于存储口令的文件进行未经授权的访问。
sasl/cram-md5
使用 cram/md5 算法进行验证。可能只有过时的 SunDS LDAP 服务器才支持此验证方法。
有关如何设置绑定 DN 以用于 cram-md5 验证的信息,以及如何修改 /etc/default/rpc.nisd 文件以指定此 DN 及其相关口令的信息,请查阅 LDAP 服务器文档。
authenticationMethod=sasl/cram-md5 nisplusLDAPproxyUser=cn=nisplusAdmin,ou=People,dc=some,dc=domain nisplusLDAPproxyPassword=aword
一定要防止对用于存储口令的文件进行未经授权的访问。
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 与其他验证方法(simple 和 sasl/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
其中,
server-address
/etc/default/rpc.nisd 中 preferredServerList 值的 IP 地址部分
bind-DN
/etc/default/rpc.nisd 中的 nisplusLDAPproxyUser 值
password
/etc/default/rpc.nisd 中的 nisplusLDAPproxyPassword 值
container
RFC 2307 容器名(ou=Services、ou=Rpc 等等)之一
search-base
/etc/default/rpc.nisd 中的 defaultSearchBase 值
由 /bin/time 列显的“实际”值是经过的(挂钟)时间。如果此值超出对应表项的 TTL 很大一部分(25% 或更多)(请参见验证和安全性),为 LDAP 容器创建索引可能会非常有用。
rpc.nisd 支持 simple page 和 VLV 索引方法。要查找 rpc.nisd 支持哪种索引方法以及如何创建这样的索引,请参阅 LDAP 服务器文档。