2016 - 2024

感恩一路有你

TCP-IP技术大全16

浏览量:34091 时间:2017-03-27 17:26:16 作者:

第16章LDAP :目录服务

作者:Mark Kadrich

本章内容包括:

• 为什么使用目录服务

• 目录服务功能

• IP上的目录服务

• OSI X.500目录模型

• LDAP结构p

• 目录系统代理和访问协议

• 轻型目录访问协议

• LDAP服务器—服务器通信

• 设计L D A P 服务

• LDAP配置

• 产品环境

• 选择L A D P 软件

轻型目录访问协议( L D A P ) 是功能非常强大且健壮性非常好的协议,实现起来相当复杂。L D A P 自身就要用几百页纸来描述,正如在《理解、开发L D A P 目录服务》一书中所见到的一样。这一章涵盖了L D A P 的卓越之处同时尽量给出L D A P 的总体描述。

16.1 为什么使用目录服务

如果用户已经在考虑这个问题,说不定已经收集了关于不同主题的

许多文件。问题不是收集这些信息,而是当用户需要这些信息时使之成

为有价值的东西。为了记录这些大量信息,用户可能要在机器上创建目

录以表示这些知识的含义。用户可能有一个购买信息目录、一个生产信

息目录,还有一个故障目录。每个信息目录用图16-1中的一条竖线表示。

这些信息对用户而言是很有价值的,因为它代表了有关用户主题的全部

知识。然而,用户所拥有的信息只是更大量信息的一部分。

由于互联网络的普及使得用户可以获得大量信息,信息的收集

就成为日常工作。用户可以收集关于自己所从事学科的各种信息。

如果想知道更多生产塑料、亚麻鸟的信息,可以到I n t e r n e t 上去找。

I n t e r n e t提供的新服务使得搜索信息变得比以前更容易。像

找到了所需的信息,问题是如何管理它们?答案是目录服务。图16-1 一个目录结构例子Ya h o o ! 和I n f o s e e k 这样的搜索引擎使得信息发现工作只需通过点击来完成。然而用户现在已经

16.2 目录服务的功能

虽然可能没有意识到,但是用户以前确定使用过目录服务。电话号码簿和电视收看指南

,

是使用目录很好的例子。在电话号码本的例子中,包括名字、地址以及电话号码。在电视收看指南的例子中包括电视的时间、名字、描述、播出时间、主题等。用户甚至可以使用电视收看指南来对V C R 进行编程。如果安装了V C R 的V C R ,就可以输入目录号,之后,V C R 能自动对自身编程记录下用户选择的节目。这样使得使用V C R 和访问广播节目变得更容易管理。

和V C R 一样,L D A P 为在网络中定位信息提供了一种比其他协议,如域名服务( D N S ) ,更容易的途径。和只是用于定位计算机的D N S 不一样,L D A P 允许用户记录找到的目录信息。L D A P 目录保留了关于用户及其计算机的信息。与电话号码簿和电视收看指南不一样,L D A P 目录是动态的。它们保留的信息可以按需进行更新。L D A P 目录也是分布的,这样就不容易遭到破坏。

16.3 IP上的目录服务

在网际协议( I P ) 上有许多其他的目录服务在运行。I P 是使用号码来标识I n t e r n e t 上计算机和网络的系统,它的功能就像用几个数来标识一所公寓内的房间一样。其中楼号和网络号相似,公寓号相当于子网号,房间号可以认为等价于主机号。比如,用户不使用Deep Creek街1 234号1 28号公寓,而是使用名字如John Smith来发送信息。

如果用户使用过We b 浏览器,就使用过D N S 。它的工作方式与L D A P 相似:客户程序给服务器发出一个请求,服务器处理该请求并返回应答。

图1 6-2和表1 6-1画出了在本地查找过程中I P 地址如何与D N S 进行映射。

发出请求的客户程序

1. 请求f o o . c o m

3. 返回I P 地址1 92. 0. 11 2. 1D N S 服务器2 . 服务器在其内部数据库中查找f o o . c o m

图16-2 本地DNS 查找过程

表16-1 联系主机名和I P 地址的D N S 表实例

主机名

f o o . c o m

f o o IP 地址1 92. 0. 11 2. 11 92. 0. 11 2. 1

如果本地服务器没有地址信息,会给上级服务器发送一个请求,请求会沿着一棵倒置的树进行,非常类似于L D A P 使用的结构。这一点可以从图1 6-3中看出来。

w h o i s 、f i n g e r 、Y P 和D A P 也是运行在I P 上的目录服务。用户可能还记得黄页,现在通常称为网络信息服务(Network Information Service,N I S ) 。N I S 是一种识别用户、主机的服务,在N I S 中,其他的信息由系统管理员维护。N I S 是一种使管理员负责一个大型的L A N 或WA N 来集中管理用户信息的服务。如图1 6-4所示,一旦用户登录,就要从主机发一请求给Y P 服务器。这个请求将包含用户信息,如U I D 、口令以及主机信息。Y P 服务器会把返回信息发送给用户主机,告诉它是否允许被访问还是被拒绝访问。

,

上级D N S 服务器

发出请求的客户程序

3. 请求传送到上级服务器1. 请求f o o . c o m

4. 返回I P 地址1 92. 10. 11 2. 1

2. 服务器在内部数据库中没能找到f o o . c o

m

5. 发送I P 地址1 92. 0. 11 2. 1

本地D N S 服务器

图16-3 发送到上级服务器的DNS 查询

管理员喜欢这种服务,因为它能利用网络自身。在网络内可以设置辅助( S e c o n d a r y ) N I S 服务器以确保可靠性并减小延迟。这已经成为安装局部N I S 服务器的标准操作规程以减少下行时间,这种情况在停机或高流量负载时尤其重要。

主控( M a s t e r ) N I S 服务器在预先设置的时间间隔内把用户信息“推”给辅助( S e c o n d a r y ) 服务器。这通常在夜间流量小时与网络备份及系统更新一起进行。

U N I X 客户端

1. YP请求2. 返回结果

Y P /N I S 服务器,通常在U N I X 下

图16-4 UNIX环境中的黄页或网络信息服务

有时,对用户信息的变化需要立即更新。在特殊情况下,如当一个对公司心怀不满的员工被解雇时,系统管理员就需要一种立即删除用户访问权限的方法。有时新的用户,如承包商,需要有访问权限以便开始工作。承包商通常按小时付费,所以让他们尽快早点开始工作是有利的。正是因为这些原因,N I S 也允许手动更新辅助服务器。系统管理员能改变并手动更新特定的网络服务器。

警告

手动“推”操作既是有用的也是危险的。一个匆忙的系统管理员发出“

f a t

f i n g e r e d ”命令不小心把大部分用户的访问权限删除,这种情况出现过多次。这是一个用来检测分组交换机和语音邮件系统健壮性非常好的一个方法。

W h o i s 是一个基于文本的目录服务,存储有关主机、服务器、I P 地址和网络信息。一个w h o i s 请求会得到相当数量的信息。w h o i s 数据库中通常会存储如下信息:联系名、记账地址、电话号码及域服务器。Macmillan whois产生如下信息:

,

16.4 OSI X.500目录模型OSI X.500

标准位于O S I 协议栈表示层之上用于处理分析请求和应答。直接位于表示层之上,相关控制服务元(Association Control Service Element,A C S E ) 和远程操作服务元( R e m o t e Operation Service Element,R O S E ) 可以使下面的通信层通过抽象文法标示( A S N . 1) 来交换信息。通过对数据如何交换文法的标准化,A S N . 1提供了一种在两种不同计算机系统之间交换信息的方法。这样也使得X . 500应用程序能在网络上的计算机之间交换信息。

A S C E 提供了在两个应用层实体之间通信的方法。在X . 500模型中,R O S E 使目录系统代理与目录用户代理之间的通信成为可能(参见图1 6-5) 。

主D S A

D A P

D U A 客户端D S P 主D S A

D A P

D S P

D A P

D U A 客户端

映像D S A

图16-5 基于X.500模型的目录访问协议组成部分

X . 500目录服务模型由三个基本单元组成。包括:

• 目录信息库( D I B )

• 目录系统代理( D S A )

• 目录用户代理( D U A )

D I B 中包含的信息由D S A 管理,这样D U A 能访问使用它。D U A 使用目录访问协议( D A P ) 来访问D U A 。在这种以客户/服务器类型的组织中,D U A 既可以是人也可以是其他应用进程,如电子邮件客户程序。D S A 能通过目录系统协议( D S P ) 与其他D S A 进行通信,就像D N S 服务器之间彼此通信的原因一样。然而和D N S 不一样,在D N S 中,当没有找到I P 地址时会查询上一

,

16.4.1 早期的X.500级服务器,而D S A 是对等的。在今天的大型网络中,这一点提供了可扩展性。

在8 0年代,国际电报电话联盟( C C I T T ) 开始致力于存储和检索诸如电话号码和电子邮件地址的工作。同时,另一个组织—国际标准化组织( I S O ) 开始寻找一个合适的服务来支持O S I 网络中的名字服务。最后,两个组织认识到他们的工作有重复并最终一起努力形成了今天的X . 500标准。

最终的结果是一个具有一些有趣特性的目录服务。L D A P 是其中最重要的,作为一个开放式标准,L D A P 不属于某个个别生产商。其次,L D A P 使通用目录服务能支持大量信息。第三,L D A P 极具扩展性和分布性。X . 500一开始就是用于支持广泛的且演变的网络结构,并且做得非常好。最后,L D A P 在安全框架内支持丰富的搜索功能。图1 6-5画出了L D A P 的主要组成部分。

X . 500并不是没有缺陷。如在早期开发过程中就发现的,L D A P 复杂且需要大量资源,而且要仔细规划。L D A P 也是为O S I 而开发,而不是今天使用的T C P /I P 标准。O S I 从来也没有真正实现过,并且T C P /I P 的速度和简单性也是O S I 所不及的。显然需要对D A P 作一些改动。16.4.2 今天的X.500

X . 500已经演变成一组非常完整的规范。其中的核心是目录访问协议( D A P ) ,D A P 被认为是整个目录请求的中心。D A P 的不足,也可以认为是D A P 的优点,是因为它想要同时解决所有问题。所以,D A P 所提供的大量神秘的服务在桌面机环境中很少有什么实际用处。在桌面机上完全实现D A P 要小心考虑。为了减小复杂性,开发了一个服务L D A P 作为桥梁。16.5 LDAP结构

L D A P 开发的目的是为了简化D A P 。然而在X . 500与L D A P 之间有很大的相似性。L D A P 使用目录系统代理和目录用户代理;然而在L D A P 中,它们被简单认为是L D A P 服务器和客户机。L D A P 也使用相同的O S I 体系结构。L D A P 应用程序位于表示层之上,通过L D A P 应用程序编程接口与底层进行通信。

L D A P 服务的基本元素包括:

• LDAP服务器

• LDAP客户机

这里的主要差别在于对A P I 的依赖而不在于对I P 栈填加的栈“隙片”,这个栈“隙片”把X . 5 0 0与通信栈连接起来。主要的相同点是网络配置结构和数据存储方式。与

L D A P 服务是分层次的。

16.5.1 LDAP层次结构

L D A P 信息结构类似于前面描述的文件系统。在图1 6-6中,读者可以看到L D A P 起始于根。L D A P 信息的基本单元是项。项是指现实世界关于某对象的信息集合,在本例中,对象是组织自身。

在许多情况下,目录结构是组织结构的反映。它起始于组织描述,向下细划为项,如部门、资源最后到人。

X . 5 0 0一样,

,

图16-6 LDAP目录结构的倒向树

16.5.2 名字结构

在目录项内部是一组属性,这组属性描述了被选对象的一个品质。属性由一个类型域和一个或多个值组成。属性类型描述属性内包含

的信息。值是属性对应的值。比如属性的电话

号码值是1 800 555 1234。

为了有效地进行搜索,对象分类提供了一

种元素命名方式,如:o b j e c t c l a s s =人。

可以使对所有定义为人的对象的搜索不会

搜索服务器或建筑物,因此使搜索耗时更小。

接下来的属性c n ,意思是通用名字,如图

1 6-7所示,通用名经常是个人或资源的全名。

完整的目录列表起始于可辨别的名字( d n )

这个名字包含对象类别及个人或资源的信息。因为L D A P 不像D A P 一样支持从目录树顶

另一个D I T 的叶节点实现。图16-7 名字空间示例,目录信息树到其他目录的连接,所以L D A P 引入了别名支持这种功能,这可以通过把用户整个的D I T 看作

16.6 目录系统代理和访问协议

开始时,D S A 负责目录信息管理。目录信息库驻留在D S A 上。D S A 由位于客户机上的目录用户代理访问。再次参考图1 6-5,D U A 使用D A P 访问包含D I B 的D S A 。看起来很简单,实际上并非如此。D S A 被设计成分布的。当D I B 变大时,可能需要把一部分移到其他服务器上或者和其他D S A 连接在一起。这可以通过目录服务协议完成。和支持用户查询的D A P 不一样,

D S P 用于D S A 之间交换信息、传递请求、复制或映像目录,以及提供管理支持。

16.7 轻型目录访问协议

如前面所讨论的,L D A P 从早期协议演化而来。这些早期协议,如D A P ,在其应用之前开

,

发出来。设计人员对各种格式信息的更大需要导致了这些协议的复杂性。

像D A P 这样的解决方案对于小型桌面系统而言太复杂,对于管理员而言也太复杂。需要更简单的协议。商业团体帮助削减了一些在桌面机工作环境中的要求,但仍能使管理员在分布式系统繁忙时重新获得对大量丢失配置的控制,最终的解决方案演化为L D A P 。

L D A P 是一个基于网络计算客户机/服

L D A P 服务器

多个L D A P 客户机

请求请求

请求

图16-8 基本的LDAP 消息传递协议

务器模型的消息传递协议。服务器保留信息,并接收网络上的客户机请求。服务器形成应答并发回至客户机。图1 6-8显示了客户机的请求如何作为独立消息发送至服务器。16.7.1 查询信息

用户及其应用程序查询当前信息的能力构成了一个功能强大且健壮的平台,这种能力就建造在这个平台之上。

在L D A P 模型中,假设数据被读取的次数比其被写入的次数多许多倍。正因如此,L D A P 对访问进行优化。在通常的局域网中,像D N S 这样的服务是高事务服务。换句话说,其他的服务依赖于目录服务功能来应答信息请求。

如前面所提到的,L D A P 是基于客户机/服务器模型的协议。这使得服务器为某些特定过程进行优化—在这种情况下,是指搜索和查询信息并把信息发送到网络上。L D A P 服务器不包括外部过程和用户接口信息,而是包括那些管理数据和服务器的信息。

过程起始于绑定到服务器上的客户机发出信息查询请求。绑定是在主机和服务器之间建立会话的过程。图1 6-9显示了基本工作过程。客户程序构造一个请求,查询某项,比如查询用户的电话号码,客户把这个消息传给服务器。服务器通过发送包含请求信息的消息应答给客户机,并发回一个结果码消息。结果码消息会告诉客户机请求是否成功,如果不成功,错误原因是什么。

在需要有多条消息要发给客户机才能正确应答时,最后一条消息是结果码消息,如图1 6 - 1 0所示。

1. 请求查询1

L D A P 客户机

1. 请求查询2. 返回请求结果3. 返回结果码

L D A P 服务器

2. 请求查询2

L D A P 客户机

3. 返回请求结果14. 返回请求结果25. 返回结果码16. 返回结果码2

L D A P 服务器

图16-9 基本的LDAP 工作过程图16-10 通过LDAP 发送多条消息请求

,

1. 请求搜索

2. 返回第一项

L D A P 客户机

3. 返回第二项

4. 返回第三项

5. 返回第四项

7 返回结果码L D A P 服务器基于消息协议的特点是其允许同时发送多条消息。L D A P 会处理这些不相关的消息请求并对每一个请求作出应答并发送结果码消息。在有认证和控制的情况下,L D A P 提供绑定操作,去除绑定操作和放弃操作,绑定是客户机必须要做的第一件事,初始化到服务器的会话。在这个阶段,客户机会向服务器确认自身并提供凭证,这和安

全协议一起工作来防止对数据库的非授权

访问。

息,用户继续使用应用程序。

当客户机发送了一个放弃消息时,它告诉服务器其不再需要信息。用户可能已经中止了正在请求信息的应用程序或者应不正常结束。这种情况下,要求操作系统发送放弃消息。图1 6-11显示了从开始到结束的整个事务过程。

16.7.2 存储信息

存储信息属于维护和收集操作,L D A P 通过支持下面三个功能提供这些操作:

• 加入—加入功能只是加入一个新用户和属性值到一个已有的数据库上。

• 删除—删除操作从数据库中删除掉属性或整个项。这个操作在用户离开时用得上。然而大多数系统管理员仅仅把用户设为非活跃的。

• 修改—对系统管理员而言,修改函数可能是最有用的,考虑到该操作被使用的频率,删除操作可能是第二个用户最常使用的操作。修改函数使系统管理员和用户可以修改目录中的信息。典型情况下,用户只能修改自身信息的一小部分。数据项如电话号码和个人头发颜色可以由用户任意修改。

要仔细考虑权限问题。你也许想让自己的部分用户有能修改他们个人信息的权力。这意味着你应该特别注意他们对用户目录的访问权限。

16.7.3 访问权限和安全

在最近一次对I n t e r n e t 上可访问L D A P 服务器的测试中,发现所有L D A P 服务器的绝大部分是可访问的。任何信息安全专家会说出最危险的事情是赋予某人的访问权。如果一个黑客能访问服务器,他就拥有了服务器上的数据。

用户必须有一个程序来确保自己的服务器(不论是U N I X 还是Wi n d o w s -N T ) 以安全方式配置。同时建议实施一个安全策略不断的服务器进行检查。可以获得大量商业应用程序对用户服务器进行检查以发现操作系统和数据库自身在安全方面的脆弱性。

对用户目录的访问权限及适应程度因使用的服务器应用程序不同而不同。一定要小心理解应用程序如何与操作系统一起工作来提供安全性。

图16-11 通过一个消息发送多个请求去除绑定( u n b i n d ) 通知服务器客户机L D A P 会话结束,发出L D A P 请求的应用程序得到信

,

16.8 LDAP服务器-服务器通信

虽然许多用户只看到L D A P 协议中的客户机至服务器部分,但是还有一些用户看不到的操作以保证用户能可靠地查询服务器。

可靠性毫无疑问是针对于单点失败问题的健壮性设计要求。它也意味着使延迟保持最小。延迟作为可靠性的一个方面需要理解为至少从用户的角度看是这样。如果用户要用很长时间来访问基于网络的服务,他们会以为网络崩溃,不可靠。如果管理员设置L D A P 服务为一个单点失效服务器,就将面临其用户的埋怨。

16.8.1 LDAP数据互换格式(LDIF )

L D A P 使用标准方法产生请求消息和应答消息,消息以文本文件进行交换,这种文件采用一种预定义的L D A P 数据互换格式—LDIF(LDAP Data Interchange Format)。一个典型的L D I F 如下:

最上面一行是相对可辨别名字( R D N ) ,用于跟踪对象。在这个例子中,用户可以得到有关人的姓名和组织情况。读者会注意到这个格式与电子邮件地址向右解析的工作方式相似。称此为“小结尾( l i t t l e -e n d i a n ) ”顺序。在这种格式中,最低级元素先写,最高级元素加在最右边。如:

msk @ host.division.state.starwizz.com

,

16.8.2 LDAP复制

复制是一种多刻面服务,它提供了增强的可靠性和性能。通过在整个网络环境中分布目录信息,用户可以降低发生服务器以及网络相关故障时的脆弱性。正如图1 6-12中所看到的一样,如果一个L D A P 服务器副本失效,内部的请求会发送到其他的L D A P 副本或至主服务器自身。没有L D A P 副本,网络A 和B 上的客户机将得不到L D A P 服务。

L D A P 副本B

I n t e r n e t

B 客户机

路由器

防火墙

L D A P 副本A

L D A P 主服务器

图16-12 广域网上分布式LDAP 提供了冗余和可靠性

从性能的角度考虑也会带来好处,因为本地L D A P 请求不必通过路由器。局部请求可以由局部资源处理,所以减轻了网络的流量负载。

副本不必包含整个目录树。为了安全和维护方便,D I T 中只有特定部分被复制,用户可以有选择地复制运行在相关网络上的服务。在图1 6-12中,B 副本只包含网络B 上的特定目录项。对网络B 之外信息的服务请求将被传送到主L D A P 服务器。

16.9 设计LDAP 服务

定义需求是一个非常重要的问题。要花些时间来考查信息环境如何工作以及随着时间的变化情况。

16.9.1 定义需求

当用户建立目录服务查需求时,需要考虑许多方面。这一节会论述用户群体对工作的信息环境的需求。这意味着设计人员必须考虑用户及其使用的工具,包括:

• 用户需求

• 用户的期望

• 应用需求

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。