第 13 章 ldap 服务的配置与应用

57
第 13 第 LDAP 第第第第第第第第 本本本本 本本本本本本 LDAP 本本 LDAP 本本本本本 本本本 OpenLDAP phpLDAPadmin 本本本 本本 phpLDAPadmin 本本 phpLDAPadmin 本本本本本 LDAP 本本本本本本本本本

Upload: kellan

Post on 24-Jan-2016

203 views

Category:

Documents


0 download

DESCRIPTION

第 13 章 LDAP 服务的配置与应用. 本章导读 目录服务概述 LDAP 基础 LDAP 服务的安装 初始化 OpenLDAP phpLDAPadmin 的安装 配置 phpLDAPadmin 使用 phpLDAPadmin 管理目录树 LDAP 服务的身份验证实例. 13.1 目录服务概述. X.500 简介 LDAP 简介 LDAP 与 X.500 的比较 流行的目录服务产品. X.500 简介. X.500 由 ITU-T 和 ISO 定义,它实际上不是一个协议,它是由一个协议族组成 - PowerPoint PPT Presentation

TRANSCRIPT

第 13章 LDAP服务的配置与应用

本章导读目录服务概述 LDAP 基础 LDAP 服务的安装 初始化 OpenLDAP phpLDAPadmin 的安装 配置 phpLDAPadmin 使用 phpLDAPadmin 管理目录树 LDAP 服务的身份验证实例

13.1 目录服务概述

• X.500 简介• LDAP 简介• LDAP 与 X.500 的比较• 流行的目录服务产品

X.500简介

X.500 由 ITU-T 和 ISO 定义,它实际上不是一个协议,它是由一个协议族组成

的,包括了从 X.501 到 X.525 等一系列非常完整的目录服务。 X.500 主要具备以下特征。 分散维护:运行 X.500 的每个站点只负责其本地目录部分,所以可以立即

进行更新和维护操作。 强大的搜索性能: X.500 具有强大的搜索功能,支持用户建立的任意复杂

查询。 单一全局命名空间:类似于 DNS , X.500 为用户提供单一同性命名空间

( Single Homogeneous Namespace )。与 DNS 相比, X.500 的命名空间更灵活且易于扩展。

结构化信息结构: X.500 目录中定义了信息结构,允许本地扩展。 基于标准的目录服务:由于 X.500 可以被用于建立一个基于标准的目录,

因此在某种意义上,请求应用目录信息(电子邮件、资源自动分配器、特定目录工具)的应用程序就能访问重要且有价值的信息。

LDAP简介

LDAP 是 X.500 标准中的目录访问协议 DAP 的一个子集,可用于建立

X.500 目录。因此这两个目录服务技术标准有着许多的共同之处,即在平台上,都实现了一个通用的平台结构,提供了一个操作系统和应用程序需要的信息服务类型,可以被许多平台和应用程序接收和实现;在信息模型上,都使用了项、对象类、属性等概念和模式来描述信息;在命名空间方面,都使用了目录信息树结构和层次命名模型;在功能模型上,都使用了相似的操作命令来管理目录信息;在认证框架方面,都可以实现用户名称和密码,或者基于安全加密方式的认证机制;在灵活性上,它们的目录规模都可大可小,大到全球目录树,小到只有一台目录服务器;在分布性方面,目录信息都可以分布在多个目录服务器中,这些服务器可以由各组织管理,既保证了目录信息总体结构的一致性,又满足了分级管理的需要。

LDAP简介

LDAP 具有下列特点: LDAP 是一个跨平台的、标准的协议,得到了业界广泛的认可; LDAP 服务器可以使用基于“推”或“拉”的技术,用简单的或基

于安全证书的安全认证,复制部分或全部数据,既保证了数据的安全性,又提高了数据的访问效率;

LDAP 是一个安全的协议, LDAP v3 支持 SASL ( Simple Authentication and Security Layer )、 SSL ( Secure Socket Layer )和TLS ( Transport Layer Security ),使用认证来确保事务的安全,另外, LDAP 提供了不同层次的访问控制,以限制不同用户的访问权限;

支持异类数据存储, LDAP存储的数据可以是文本资料、二进制图片等;

大多数的 LDAP 服务器安装简单,也容易维护和优化。

LDAP简介

LDAP与 X.500的比较

LDAP 基于 Internet 协议, X.500 基于 OSI (开放式系统互联)协议,建立在应用层上的 X.500 目录访问协议 DAP ,需要在 OSI会话层和表示层上进行许多的建立连接和包处理的任务,需要特殊的网络软件实现对网络的访问; LDAP则直接运行在更简单和更通用的 TCP/IP 或其他可靠的传输协议层上,避免了在 OSI会话和表示层的开销,使连接的建立和包的处理更简单、更快,对于互联网和企业网应用更理想。

LDAP 协议更为简单, LDAP继承了 X.500最好的特性,同时去掉了它的复杂性。 LDAP 通过使用查找操作实现列表操作和读操作,另一方面省去了 X.500 中深奥的和很少使用的服务控制和安全特性,只保留常用的特性,简化了 LDAP 的实现。

LDAP 通过引用机制实现分布式访问, X.500 DSA 通过服务器之间的链操作实现分布式的访问,这样查询的压力集中于服务器端;而 LDAP 通过客户端 API 实现分布式操作(对于应用透明)平衡了负载。

LDAP 实现具有低费用、易配置和易管理的特点。经过性能测试, LDAP 比X.500 具有更少的响应时间; LDAP 提供了满足应用程序对目录服务所需求的特性。

流行的目录服务产品

1. NDS ( Novell Directory Services )2.Microsoft Active Directory (活动目

录)3. OpenLDAP

13.2LDAP 基础

• LDAP 的 4 种基本模型• LDAP存储结构• LDAP 的基本概念• 规划目录树• LDAP 服务的应用领域

LDAP 的 4 种基本模型

1.信息模型2.命名模型3.功能模型在 LDAP 中共有 4 类操作(共 10 种 ) :( 1 )查询类操作,如搜索、比较;( 2 )更新类操作,如添加条目、删除条目、修改条目和修改条目名;( 3 )认证类操作,如绑定、解绑定;( 4 )其他操作,如放弃和扩展操作。4.安全模型( 1 )无认证( 2 )基本认证 ( 3 ) SASL 认证

LDAP存储结构

一棵目录信息树由若干条目( Entry )组成,每个条目有惟一的标识名 DN( Distinguished Name ),条目可以描述用户账号、打印机和计算机等对象。一个条目是一个对象,每个条目由多个“属性( Attribute )”组成,每个属性

由一个类型和一个到多个值组成 , 每个属性可以对应一个或多个“值( Value )”,如

联系电话属性可以包含有多个值 。

LDAP 的基本概念

LDAP 目录服务器是通过目录数据库来存储网络信息以提供目录服务的。为了方便用户迅速查找和定位信息,目录数据库是以目录信息树( Directory nformation Tree ,缩

写为 DIT )为存储方式的树型存储结构,目录信息树及其相关概念构成了 LDAP 协议的信息模型 。

LDAP 的基本概念

常用关键字及其对应的含义 关键字 英文全称 含义

dc Domain Component 域名的部分,其格式是将完整的域名分成几部分,如域名为 example.com变成 dc=example,dc=com

uid User Id 用户 ID “,如 tom”

ou Organization Unit 组织单位,类似于 Linux文件系统中的子目录,它是一个容器对象,组织单位可以包含其他各种对象(包括其他组织单元),如“ market”

cn Common Name “公共名称,如 Thomas Johansson”

sn Surname “姓,如 Johansson”

dn Distinguished Name 惟一辨别名,类似于 Linux文件系统中的绝对路径,每个对象都有“一个惟一的名称,如 uid= tom,ou=market,dc=example,dc=co

m”,在一个目录树中 DN总是惟一的

rdn Relative dn 相对辨别名,类似于文件系统中的相对路径,它是与目录树结构“无关的部分,如 uid=tom” “或 cn= Thomas Johansson”

c Country “国家,如 CN” “或 US”等。

o Organization “组织名,如 Example, Inc.”

规划目录树

要实现 LDAP ,第一步就是规划目录树,规划一个灵

活且易于扩展的目录树非常重要,它可以减少后期维护目录树的工作量。

LDAP 服务的应用领域

LDAP 的应用主要涉及以下几种类型。 信息安全类:数字证书管理、授权管理、单点登录。 科学计算类: DCE ( Distributed Computing Environm

ent ,分布式计算环境)、 UDDI ( Universal Description , Discovery and Integration ,统一描述、发现和集成协议)。

网络资源管理类: MAIL 系统、 DNS 系统、网络用户管理、电话号码簿。

电子政务资源管理类:内网组织信息服务、电子政务目录体系、人口基础库、法人基础库。

13.3 LDAP 服务的安装

• Berkeley DB数据库的安装• OpenLDAP 的安装

Berkeley DB数据库的安装

1.下载 BDB2.安装 BDB( 1 )编译安装 BDBBDB 的安装方法比较简单,使用以下命令编译安装。tar zxvf db-4.6.18.tar.gzcd db-4.6.18/build_unix../dist/configuremake make install( 2 )配置系统动态链接库的路径① 编辑系统动态链接库的配置文件 /etc/ld.so.conf ,在文件的末尾加入如下语句。

/usr/local/BerkeleyDB.4.6/lib②使用以下命令刷新系统动态链接库缓存,如图 13-11 所示。/sbin/ldconfig

OpenLDAP的安装

1.下载 OpenLDAP2.安装 OpenLDAPOpenLDAP 的安装方法比较简单,可使用以下命令编译安装。tar zxvf openldap-stable-20070110.tgzcd openldap-2.3.32env CPPFLAGS="-I/usr/local/BerkeleyDB.4.6/include" LDFLAGS="-L/

usr/local/BerkeleyDB.4.6/lib" ./configure --prefix=/usr/local/openldap --enable-bdb

make dependmakemake testmake install

13.4 初始化 OpenLDAP

• OpenLDAP 的基本配置• 启动 OpenLDAP 服务器• 建立初始化数据

OpenLDAP 的基本配置

1.设置 LDAP 使用的 SchemaSchema (模式)定义了 LDAP 中的对象类型、属性、语法和匹配规则等,如

用户的电子邮件、联系地址和联系电话等属性,它类似于关系数据库中的表结构。

找到语句:include /usr/local/openldap/etc/openldap/schema/core.schema在该语句的后面添加以下语句。include /usr/local/openldap/etc/openldap/schema/corba.schemainclude /usr/local/openldap/etc/openldap/schema/cosine.schemainclude /usr/local/openldap/etc/openldap/schema/dyngroup.schemainclude /usr/local/openldap/etc/openldap/schema/inetorgperson.schemainclude /usr/local/openldap/etc/openldap/schema/java.schemainclude /usr/local/openldap/etc/openldap/schema/misc.schemainclude /usr/local/openldap/etc/openldap/schema/nis.schemainclude /usr/local/openldap/etc/openldap/schema/openldap.schema

OpenLDAP 的基本配置

2.设置目录树的后缀找到语句:suffix "dc=my-domain,dc=com"将其改为:suffix "dc=example,dc=com"3.该语句设置 LDAP 管理员的 DN找到语句:rootdn "cn=Manager,dc=my-domain,dc=com"将其改为:rootdn "cn=Manager,dc=example,dc=com"4.设置 LDAP 管理员的口令找到语句:rootpw secret将其改为:rootpw {SSHA}NXV9Fl28qCHMmA6P sjhVX0uejTKE6OYr

启动 OpenLDAP 服务器

启动 OpenLDAP 服务器,应执行以下命令:/usr/local/openldap/libexec/slapd

为了确保 slapd 进程已经启动,应执行以下命令:pstree|grep "slapd"

如果出现“ |-slapd” ,则表示 slapd 进程已经成功启动

建立初始化数据

① 建立 LDIF文件。使用 vi 等文本编辑工具建立名为 example.ldif 的文件,内容如下:

dn:dc=example,dc=comobjectclass:dcObjectobjectclass:organizationo:Example, Inc.dc:exampledn:cn=Manager,dc=example,dc=comobjectclass:organizationalRolecn:Manager

建立初始化数据

② 执行以下命令导入数据。/usr/local/openldap/bin/ldapadd -x -W -D "c

n=Manager,dc=example,dc=com" -f example.ldif

命令执行输入 LDAP 管理员的口令

13.5 phpLDAPadmin 的安装

• 安装 Apache 服务• 下载 phpLDAPadmin

• 安装 phpLDAPadmin

• 配置 Apache 服务

安装 Apache 服务

由于基于 Web 界面的 LDAP客户端软件phpLDAPadmin 使用 PHP编写而成,因此在使用前应安装 Apache 服务器并建立好 PHP 的运行环境。由于 phpLDAPadmin 支持中文管理界面,因此还要将 Apache 的默认字符集设置为中文( Apache 服务具体的安装和配置方法参见本书第 7 章 Web 服务的配置与应用)。

下载 phpLDAPadmin

使用 Web浏览器访问 http://prdownloads.sourceforge.net/phpld

apadmin/ 处下载 phpLDAPadmin最新的稳定版 。

安装 phpLDAPadmin

安装 phpLDAPadmin 的具体步骤如下。① 使用下面的命令解压安装包。tar zxvf phpldapadmin-0.9.8.4.tar.gz

② 使用下面的命令进入解压目录。cp -a phpldapadmin-0.9.8.4 /usr/local/phpldapadmin

配置 Apache 服务

1.加入用户认证功能2.建立虚拟目录在 Apache 的主配置文件 httpd.conf 中加入以下语句建立虚拟目录。

Alias /phpldapadmin "/usr/local/phpldapadmin"<Directory "/usr/local/phpldapadmin">AuthType BasicAuthName "Please Login to phpldapadmin"AuthUserFile /etc/httpd/php_ldap_admin_pwdRequire user admin</Directory>

13.6 配置 phpLDAPadmin

• 生成 phpLDAPadmin 主配置文件• 配置 phpLDAPadmin 使用中文• 配置 phpLDAPadmin

生成 phpLDAPadmin 主配置文件

phpLDAPadmin 的主配置文件是 /usr/local/phpldapadmin/config/config.php.example , phpLDAPadmin 提供了一个默认的例子文件 config.php.example ,使用以下的命令可生成 phpLDAPadmin 主配置文件。

cp /usr/local/phpldapadmin/config/config.php.example /usr/local/phpldapadmin/config/config.php

配置 phpLDAPadmin 使用中文

① 编辑文件 /usr/local/phpldapadmin/config/config.php ,修改语句:// $config->custom->appearance['language'] = 'auto';将“ //”注释符号去处,并将语句改为:$config-> custom->appearance['language'] = 'zh_CN';② 使用下列的命令转换 phpLDAPadmin语言文件的编码。iconv -f gbk -t utf8 /usr/local/phpldapadmin/locale/zh_CN/LC_MESSAG

ES/messages.po > /usr/local/phpldapadmin/locale/zh_CN/LC_MESSAGES/messages.new.po

msgfmt -o /usr/local/phpldapadmin/locale/zh_CN/LC_MESSAGES/messages.mo /usr/ local/phpldapadmin/locale/zh_CN/LC_MESSAGES/messages.new.po

配置 phpLDAPadmin

( 1 )设置口令加密字符串找到语句:$config->custom->session['blowfish'] = ' ';将其改为:$config->custom- >session['blowfish'] = 'welcome';( 2 )设置 LDAP 服务器的地址找到语句:$ldapservers->SetValue($i,'server','host','127.0.0.1');将其改为 LDAP 服务器对应的名称和 IP 地址。 ( 3 )设置目录树的基准 DN找到语句:$queries[$q]['base'] = 'dc=example,dc=com';根据实际将其改为目录树的基准 DN 。 ( 4 )设置 LDAP 服务器管理员的 DN找到语句:$ldapservers->SetValue($i,'login','dn','cn=Manager,dc=example,dc=com');根据实际将其改为 LDAP 服务器管理员的 DN 。

配置 phpLDAPadmin

( 5 )设置 LDAP 服务器管理员的口令

找到语句:$ldapservers->SetValue($i,'login','pa

ss','');确保其口令为空。( 6 )设置用户认证方式phpLDAPadmin 提供了 cookie 、 ses

sion 和 config 这 3 种认证方式 找到语句:$ldapservers->SetValue($i,'server','a

uth_type','cookie');确保其认证方式为 cookie 。

认证方式 说明

cookie phpLDAPadmin提供一个登录的界面,让用户输入正确的 LDAP管理员的DN和口令才允许登录到服务器,同时 LDAP管理员的 DN与口令会保存在客户端Web浏览器的 cookie里面

session 类似 cookie,不同点在于 LDAP管理员的 DN与口令保存在服务器端,而不是客户端

config config是 phpLDAPadmin缺省的认证方式,它不需要用户登录,但需要将LDAP管理员的 DN和口令写在 phpLDAPadmin的主配置文件的 login_dn和 login_pass选项中

用户认证方式

13.7 使用 phpLDAPadmin 管理目录树

• 登录 phpLDAPadmin

• 创建 OU

• 创建用户组• 创建用户账号

登录 phpLDAPadmin

启动 Apache 服务,然后使用浏览器访问 http://Linux 服务器

的 IP 或域名 /phpldapadmin/ ,输入用户名为“ admin” 和口令后

即可进入 phpLDAPadmin 的管理主页面 。

登录 phpLDAPadmin

登录 phpLDAPadmin

创建 OU

创建 OU

创建 OU

创建 OU

创建 OU

创建用户组

创建用户组

创建用户组

创建用户组

创建用户账号

创建用户账号

创建用户账号

创建用户账号

13.8LDAP 服务的身份验证实例

• Linux 系统用户验证• FTP 用户验证• Web 用户验证

Linux 系统用户验证

1.安装相关软件( 1 )安装 nss_ldap软件( 2 )安装 openldap-client软件

2.关闭 SELinux

3.设置使用 LDAP 进行用户认证

FTP用户验证

① 确认已经安装 Red Hat Enterprise Linux 4 Update 1第 4张安装光盘 /RedHat/RPMS目录下的 openldap-clients-2.2.13-2.i386.rpm 的 RPM 包。

② 安装好 pure-ftpd 服务器并确认安装编译 pure-ftpd时在 ./configure脚本命令行上加入“ --with-ldap”参数( pure-ftpd 具体的安装和配置方法参见本书第 8 章 FTP 服务的配置与应用)。

③ 进入 pure-ftpd 源文件解压后的目录,编辑配置文件 pureftpd-ldap.conf并进行以下操作。

修改语句“ LDAPServer ldap.c9x.org” 为“ LDAPServer 192.168.16.177” 。 修改语句“ LDAPBaseDN cn=Users,dc=c9x,dc=org” 为“ LDAPBaseDN dc=xyz,dc

=com” 。 修改语句“ LDAPBindDN cn=Manager,dc=c9x,dc=org” 为“ LDAPBindDN cn=Man

ager,dc=example,dc=com” 。 修改语句“ LDAPBindPW r00tPaSsw0rD” 为“ LDAPBindPW helloldap” 。④ 使用以下命令将文件 pureftpd-ldap.conf 复制到 /etc 目录中。cp pureftpd-ldap.conf /etc⑤ 编辑 pure-ftpd 的主配置文件 /etc/pure-ftpd.conf ,找到语句“ # LDAPConfigFile

/etc/pureftpd-ldap.conf” ,将该语句前的“ #”号删掉。⑥ 重新启动 pure-ftpd 服务后即可使用在 LDAP 服务器建立的用户登录 FTP 。

Web用户验证

① 确认已经安装 Red Hat Enterprise Linux 4 Update 1第 4张安装光盘 /RedHat/RPMS 目录下的 openldap-clients-2.2.13-2.i386.rpm 的RPM 包。

② 编辑 Apache 的主配置文件 httpd.conf ,添加如下语句(本例是对 private 目录进行用户验证)。

Alias /mysecret "/usr/local/mysecret"<Directory /usr/local/mysecret>AuthType Basic AuthName "Please Login:" AuthLDAPURL "ldap://192.168.16.177/dc=example,dc=com" require valid-user </Directory>③ 重新启动 Apache 服务 。

13.9练习题

【练习 1】根据图 13-49 所示的 LDAP 目录树建立和配置 LDAP 服务器。

13.9练习题

【练习 2】配置在 Linux 系统、 FTP 服务器和 Web 服务器启用 LDAP 用户验证。