您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 使用 OpenLDAP 集中管理用户帐号
使用轻量级目录访问协议(LDAP)构建集中的身份验证系统可以减少管理成本,增强安全性,避免数据复制的问题,并提高数据的一致性。随着Linux®的不断成熟,已经出现了很多工具用来简化用户帐号信息到LDAP目录的迁移。还开发了一些工具用来在客户机和目录服务器之间启用加密通信配置,并通过复制提供容错性。本文将向您展示如何配置服务器和客户机在RedHatLinux上使用OpenLDAP。简介Linux发行版中提供的OpenLDAP软件按照一个客户机/服务器模型实现了轻量级目录访问协议(LDAP)。LDAP的设计目的是提供一种有效的方法来查找和管理信息。OpenLDAP软件和包提供了创建目录信息树(一个主要进行读操作的数据库)的工具。本文向您展示如何存储用户的帐号信息,并修改身份验证服务来使用LDAP获取所需要的信息。内部细节并不重要,因为这些工具可以将数据库的内容以文本格式(LDAP数据交换格式,LDIF)呈现在您的面前。LDAP信息被组织成属性和值的组合,称为条目(entry)。条目可能会具有必须的属性或可选属性。一个条目的属性必须要遵循/etc/openldap/schema/模式文件中定义的规则。规则包含在条目的objectclass属性中。看一下下面的关系,我们可以看出posixAccountobjectclass中包含了密码文件条目的信息(posixAccountuserPassword是文件条目的base64编码)。图1.LDAP目录条目和Linux密码文件之间的关系文件/etc/openldap/schema/nis.schema为posixAccount对象类中的条目定义了所有的属性和objectclass。例如,下面是对uidNumber属性的描述:attributetype(1.3.6.1.1.1.1.0NAME'uidNumber'DESC'Anintegeruniquelyidentifyingauserinanadministrativedomain'EQUALITYintegerMatchSYNTAX1.3.6.1.4.1.1466.115.121.1.27SINGLE-VALUE)所有的属性类型都已经定义了,它们被收集到posixAccountobjectclass中。例如:objectclass(1.3.6.1.1.1.2.0NAME'posixAccount'SUPtopAUXILIARYDESC'AbstractionofanaccountwithPOSIXattributes'MUST(cn$uid$uidNumber$gidNumber$homeDirectory)MAY(userPassword$loginShell$gecos$description))ldapuser条目具有一个识别名属性dn,它用作用户名,并与userPassword一起用来在LDAP目录中记录信息,或与LDAP目录绑定在一起使用。LDAP为作为容器使用的特殊条目提供了将这些条目组织成树结构的功能。在这个例子中,我们将使用一个容器People保存用户帐号信息,使用另外一个容器Groups保存组帐号信息。所生成的目录信息树如图2所示。图2.用户帐号信息使用的目录信息树让我们来看一下如何配置OpenLDAP服务器,如何将信息从系统文件迁移到LDAP目录中,如何配置OpenLDAP客户机通过LDAP对用户进行身份验证。在使用一个集中的身份验证数据库时,应该通过使用复制技术采用第二个LDAP服务器提供高可用性,这样在主服务器出现问题时,就可以使用第二个LDAP服务器响应客户机的请求。由于诸如密码之类的身份验证数据会通过网络进行传输,因此希望使用TSL协议建立加密通信连接。我们的OpenLDAP服务器和客户机都是虚拟机,上面运行的是RedHatEnterpriseLinuxASrelease4(NahantUpdate1)。在我们的例子中使用了表1所列出的系统。如果想模仿这些例子,请使用适合您自己的设置。表1.系统网络信息角色主机名IP地址OpenLDAP主服务器dhcp64-233.ibm.com9.47.64.233OpenLDAP从服务器dhcp64-253.ibm.com9.47.64.253OpenLDAP客户机dhcp64-251.ibm.com9.47.64.251配置LDAP服务器我们使用RedHatEnterpriseLinuxrelease4Update1上的包来构建服务器:openldap-2.2.13-2:包含OpenLDAP配置文件、库和文档openldap-servers-2.2.13-2:包含slapd和slurpd服务器、迁移脚本和相关文件openldap-clients-2.2.13-2:包含客户机程序,用来访问和修改OpenLDAP目录OpenLDAP包在服务器上安装了很多程序:守护进程:oslapd:主LDAP服务器oslurpd:负责与复制LDAP服务器保持同步的服务器对网络上的目录进行操作的客户机程序。下面这两个程序是一对儿:oldapadd:打开一个到LDAP服务器的连接,绑定、修改或增加条目oldapsearch:打开一个到LDAP服务器的连接,绑定并使用指定的参数进行搜索对本地系统上的数据库进行操作的几个程序:oslapadd:将以LDAP目录交换格式(LDIF)指定的条目添加到LDAP数据库中oslapcat:打开LDAP数据库,并将对应的条目输出为LDIF格式OpenLDAP的主要服务器配置文件是/etc/openldap/slapd.conf。本例所使用的完整slapd.conf文件如清单18所示。slapd.conf文件中包括一系列全局配置选项,它们作为一个整体应用到slapd上面,后面是包含数据库特有信息的数据库后端定义。如果一行内容是以空格开始的,就认为它是上一行的延续。空行和以“#”字符开头的注释行都会被忽略。如果您正把本文当作练习来做,那就可以按照下面指定的方式进行修改,从而启动LDAP服务器。一旦确认服务器正常工作之后,就可以添加复制功能,然后再添加安全性支持。首先是全局配置信息段的设置。其中每个选项的值都是我们想要的。正如上面介绍的一样,信息被组织成属性和值的组合,称为条目。条目属性必须遵循的规则是使用objectclass专用属性进行组织的,这可以在/etc/openldap/schema/模式文件中找到。对于身份验证来说,需要使用在nis.schema中定义的posixAccount和shadowAccountobjectclasses:include/etc/openldap/schema/nis.schemaloglevel行设置的是日志选项。可以将其设置为这样的级别:调试语句和操作统计信息都会被记录到/var/log/slapd.log中。日志级别是累加的:296=256日志连接/操作/结果+32搜索过滤器处理+8连接管理:loglevel296日志信息会被记录到syslogdLOG_LOCAL4机制中。还需要将下面的内容添加到/etc/syslog.conf中,并让syslogd重新读取自己的配置文件:回页首local4.debug/var/log/slapd.logaccess行定义了谁可以访问目录中的内容。我们希望用户可以修改自己的密码,并更新自己的shadow信息来反映密码的变化。希望身份验证程序能够检索用户的密码。还希望用户能够读取所有其他条目。注意密码条目是不可读的,shadow属性的惟一用处就是管理密码的过期问题。accesstoattrs=shadowLastChange,userPasswordbyselfwriteby*authaccessto*by*read接下来,在database部分,要定义下面的内容。使用新的bdb后端数据库:databasebdb指定后端数据库需要响应的查询的DN前缀。为了确保惟一性,根前缀应该从自己的网络域名构建出来。在本例的情况中,它是.dc=svc,dc=beaverton,dc=ibm,dc=com.,但是在下面的例子中我们对其进行了简化:suffixdc=ibm,dc=com指定管理DN,它不用于访问控制或限制数据库的操作。也不需要在目录中为这个DN指定一个条目。为具有rootpw密码的管理员使用DN可以跳过ACL规则中的所有访问控制:rootdncn=Manager,dc=ibm,dc=comrootpw{MD5}ijFYNcSNctBYg这就是我们现在想要设置的选项。稍后将返回slapd.conf文件来配置复制,然后在配置安全性。现在,我们希望将数据添加到目录中,并确认可以访问这些信息。要实现这种功能,需要配置服务器来使用ldap客户机工具,例如ldapadd和ldapsearch。ldap客户机工具的配置文件是/etc/openldap/ldap.conf。我们使用的这个文件的完整列表如本文末尾的清单19所示。要在ldap服务器上运行这些工具,只需要将该行修改成下面的内容:BASEdc=ibm,dc=com设置启动脚本在级别2、3和5时启动LDAP:清单1.设置启动运行级别#chkconfig--levels235ldapon从命令行中启动服务:清单2.启动服务#serviceldapstartStartingslapd:[OK]OpenLDAP守护进程slapd应该已经运行了:清单3.检查服务正在运行#ps-ef|grepslapldap1352110Oct24?00:00:00/usr/sbin/slapd-uldap-hldap:///ldaps:///ldapsearch-x命令应该可以成功完成,但不会返回任何数据。迁移密码和shadow信息RedHat所提供的openldap-servers包包含PADLSoftwarePtyLtd.公司的MigrationTools工具。我们将使用这些工具将数据从Linux系统文件(例如/etc/group和/etc/password)转换成LDAPLDIF格式,这是数据库信息的一种文本格式的表示。这种格式是行界定、冒号分隔的属性-值对。有一组Perl脚本被安装到/usr/share/openldap/migration/中执行迁移。这些Perl脚本的配置信息包含在migrate_common.ph文件的开头。对于我们的目的来说,只需要修改命名前缀的变量来使用条目的识别名就足够了,如下所示:$DEFAULT_BASE=dc=ibm,dc=com在进行这些修改之后,请运行脚本migrate_base.pl,它会创建根项,并为Hosts、Networks、Group和People等创建低一级的组织单元:回页首清单4.运行migrate_base.pl#migrate_base.plbase.ldif编辑base.ldif,删除除下面之外的所有条目:清单5.base.ldif条目#catbase.ldifdn:dc=ibm,dc=comdc:ibmobjectClass:topobjectClass:domaindn:ou=People,dc=ibm,dc=comou:PeopleobjectClass:topobjectClass:organizationalUnitdn:ou=Group,dc=ibm,dc=comou:GroupobjectClass:topobjectClass:organizationalUnit在LDAP服务器上,使用OpenLDAP客户机工具ldapadd将以下条目插入到数据库中。简单身份验证必须要使用-x选项指定。在slapd.conf中定义的rootdn身份验证识别名是“cn=Manager,dc=ibm,dc=com”。对于简单身份验证来说,必须使用密码。选项-W强制提示输入密码。这个密码就是在slapd.conf文件中指定的rootpw参数的值。包含这些条目的LDIF文件是使用-f选项
本文标题:使用 OpenLDAP 集中管理用户帐号
链接地址:https://www.777doc.com/doc-4344804 .html