OpenLDAP 服务器安装配置

本文档主要介绍讲述在 Debian系统下安装和配置OpenLDAP的简单方法.2. 基本概念 (Ctrl+c, Ctrl+v)2.1 目录服务的组成

  目录服务就是按照树状信息组织模式,实现信息管理和服务接口的一种方法。目录服务系统一般由两部分组成:第一部分是数据库,一种分布式的数据库,且拥有一个描述数据的规划;第二部分则是访问和处理数据库有关的详细的访问协议。
   目录服务与关系型数据库不同的是,目录不支持批量更新所需要的事务处理功能,目录一般只执行简单的更新操作,适合于进行大量数据的检索;目录具有广泛复 制信息的能力,从而在缩短响应时间的同时,提高了可用性和可靠性。目前,目录服务技术的国际标准有两个,即较早的X.500标准和近年迅速发展的LDAP 标准。
2.2 X.500是一个协议族
  X.500实际上不是一个协议,它是由一个协议族组成:X.501模型强调目录服务基本模型和 概念;X.509认证框架是如何在X.500中处理目录客户和服务器的认证;X.511 抽象服务定义X.500被要求提供的功能性服务;X.518 分布式操作过程表明如何跨越多台服务器处理目录服务;X.519 协议规范即是X.500协议,包括目录访问协议DAP、目录系统协议DSP、目录操作绑定协议DOP和目录信息Shadowing协议 DISP;X.520 选定的属性类型要求是X.500自己使用的属性类型;X.521选定的对象类即为X.500自己使用的对象类;X.525复制是如何在目录服务器之间复制 目录内容。
 //** 在这些X.500标准中主要定义有多种内容。一个信息模型:确定目录中信息的格式和字符集,如何在项中表示目录信息(定义对象类、属性等模式);一个命名 空间:确定对信息进行的组织和引用,如何组织和命名项——目录信息树DIT和层次命名模型;一个功能模型:确定可以在信息上执行的操作;一个认证框架:保 证目录中信息的安全,如何实现目录中信息的授权保护——访问控制模型;一个分布操作模型:确定数据如何进行分布和如何对分布数据执行操作,如何将全局目录 树划分为管理域进行管理——目录管理模型,客户端与服务器通信的协议—目录访问协议DAP,将用户请求在服务器之间进行链接所需的目录系统协议DSP,将选定的信息在服务器之间进行复制所需的目录信息映像协议DISP,用于自动在服务器之间协商连接配置的目录操作绑定协议DOP。 **/
X.500虽然是一个完整的目录服务协议,但在实际应用的过程中,却存在着不少障碍。由于目录访问协议DAP这种应用层协议是严格遵照复杂的ISO 七层协议模型制定的,对相关层协议环境要求过多,主要运行在UNIX机器上,在许多小系统上,如PC和Macintosh上无法使用,因此没有多少人按照 DAP开发应用程序,TCP/IP协议体系的普及,更使得这种协议越来越不适应需要。 2.3 LDAP目录访问标准
  LDAP协议 从1993年批准,产生了LDAP V1版本,随后于1997年发布了第三个版本LDAP V3,它的出现是LDAP协议发展的一个里程碑性标志,它使LDAP协议不仅仅作为X.500的简化版,同时提供了LDAP协议许多自有的特性,使 LDAP协议功能更为完备,具有了更大的生命力。
  LDAP V3协议也不是一个协议,而是一个协议族。RFC 2251——LDAP V3核心协议,定义了LDAP V3协议的基本模型和基本操作;RFC 2252——定义了LDAP V3中的基本数据模式(Schema)(包括语法、匹配规则、属性类型和对象类)以及标准的系统数据模式;RFC 2253——定义了LDAP V3中的分辨名(DN)表达方式;RFC 2254——定义了LDAP V3中的过滤器的表达方式;RFC 2255——LDAP统一资源地址的格式;RFC 2256——在LDAP V3中使用X.500的Schema列表;RFC 2829——定义了LDAP V3中的认证方式;RFC 2830——定义了如何通过扩展使用TLS服务;RFC 1823——定义了C的LDAP客户端API开发接口;RFC 2847——定义了LDAP数据导入、导出文件接口LDIF。
   LDAP(轻量级目录访问协议,Lightweight Directory Access Protocol)是实现提供被称为目录服务的信息服务。目录服务是一种特殊的数据库系统,其专门针对读取,浏览和搜索操作进行了特定的优化。目录一般用 来包含描述性的,基于属性的信息并支持精细复杂的过滤能力。目录一般不支持通用数据库针对大量更新操作操作需要的复杂的事务管理或回卷策略。而目录服务的 更新则一般都非常简单。这种目录可以存储包括个人信息、web链结、jpeg图像等各种信息。为了访问存储在目录中的信息,就需要使用运行在TCP/IP 之上的访问协议—LDAP。
组织单元
  在目录基本 DN 的下面是容器或组织单元(OU),它们从逻辑上对您的数据进行分隔或分组。这里的选项通常由您业务或安装的组织结构确定。另外,第二层 OU 可用来进一步分隔数据。例如,国际企业可以使用下列结构:
dc=foobar,dc=com
    ou=customers
        ou=northamerica
        ou=southamerica
        ou=asia
        ou=europe
    ou=employees
    ou=group
    ou=projects
    ou=accounting
    ou=resource
    ou=service
  一般的经验方法可以使您的组织结构尽可能地保持简单,并且不危及将来的可扩展性。还要紧记一点,您将结构容器嵌套得越深,它返回查询所用的时间就越长。
个别项
  在 LDAP 结构的组织单元下面是实际的项。下
对象类型
  对象类由 LDAP 目录使用来定义给定类型的对象可以有哪些属性。对象类还定义项必须有什么属性,以及项可以有什么属性。所有对象类都从其父对象类继承需求,然后添加它们自己的需求。
   LDAP目录结构示意图
2.5 LDAP的应用
   由于LDAP所具有的查询效率高、树状的信息管理模式、分布式的部署框架以及灵活而细腻的访问控制,使LDAP广泛地应用于基础性、关键性信息的管理, 如用户信息、网络资源信息等。LDAP的应用主要涉及几种类型。信息安全类:数字证书管理、授权管理、单点登录;科学计算 类:DCE(Distributed Computing Envirionment,分布式计算环境)、UDDI (Universal Description,Discovery and Integration, 统一描述、发现和集成协议);网络资源管理类:MAIL系统、DNS系统、网络用户管理、电话号码簿;电子政务资源管理类:内网组织信息服务、电子政务目 录体系、人口基础库、法人基础库。
 3. OpenLDAP的安装配制3.1 安装
  当前(Debian/testing)提供的OpenLDAP的版本是: bf 2.3.25-1
    
$ sudo aptitude install slapd ldap-utils
Reading package lists... Done
Building dependency tree... Done
Reading extended state information   
Initializing package states... Done
Reading task descriptions... Done 
Building tag database... Done  
The following NEW packages will be automatically installed:
 db4.2-util libiodbc2 libldap-2.3-0
The following NEW packages will be installed:
 db4.2-util ldap-utils libiodbc2 libldap-2.3-0 slapd
0 packages upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 1791kB of archives. After unpacking 4502kB will be used.
Do you want to continue? [Y/n/?]Y
  其中:
  slapd 提供LDAP服务
  ldap-utils 提供客户工具
  安装完毕后, 其配制文件位于/etc/ldap/目录下:
    
tony@tonybox:~$ ls -l /etc/ldap/
total 16
-rw-r--r-- 1 root root 333 2006-06-19 17:56 ldap.conf
drwxr-xr-x 2 root root 4096 2006-12-29 11:33 schema
-rw------- 1 root root 4351 2006-12-29 11:33 slapd.conf
  /etc/ldap/schema/目录下为schema文件
    
$ ls /etc/ldap/schema/ -l
total 208
-rw-r--r-- 1 root root 8231 2006-11-11 05:39 corba.schema
-rw-r--r-- 1 root root 20591 2006-11-11 05:39 core.ldif
-rw-r--r-- 1 root root 19762 2006-11-11 05:39 core.schema
-rw-r--r-- 1 root root 74080 2006-11-11 05:39 cosine.schema
-rw-r--r-- 1 root root 1553 2006-11-11 05:39 dyngroup.schema
-rw-r--r-- 1 root root 6360 2006-11-11 05:39 inetorgperson.schema
-rw-r--r-- 1 root root 13984 2006-11-11 05:39 java.schema
-rw-r--r-- 1 root root 2471 2006-11-11 05:39 misc.schema
-rw-r--r-- 1 root root 7723 2006-11-11 05:39 nis.schema
-rw-r--r-- 1 root root 3391 2006-11-11 05:39 openldap.ldif
-rw-r--r-- 1 root root 1601 2006-11-11 05:39 openldap.schema
-rw-r--r-- 1 root root 19689 2006-11-11 05:39 ppolicy.schema
-rw-r--r-- 1 root root 2968 2006-11-11 05:39 README
3.2 启动与停止 服务启动    
$ sudo /etc/init.d/slapd start
服务停止$ sudo /etc/init.d/slapd stop服务重启    
$ sudo /etc/init.d/slapd restsart
  可以通过以下命令查看slapd是否启动
$ ps aux |grep slapd
openldap 6406 0.0 0.2 14608 2764 ?    Ssl 13:27  0:00 /usr/sbin/slapd -g openldap -u openldap
tony   6417 0.0 0.0  4892  752 pts/1  R+  13:28  0:00 grep slapd
3.3 配制
  比如说我们的域名是debsir.org, 在配制文件/etc/ldap/slapd.conf中可以做如下调整
database    bdb                   #设置使用的资料库
suffix     "dc=debsir,dc=org"           #设置目录后缀
rootdn     "cn=admin,dc=debsir,dc=org"       #设置目录管理员
directory    "/var/lib/ldap"             #设置数据库路径
rootpw     secret                 #设置管理密码
  这里用了明文的“secret”密码。这样设置不安全,如果需使用加密的密码,则可以借助slappasswd 命令比如:
$ slappasswd -h {MD5}
New password:
Re-enter new password:
{MD5}4QrcOUm6Wau+VuBX8g+IPg==
  其中使用-h 选项用于指定加密方式, 它支持{CRYPT}, {MD5}, {SMD5}, {SSHA}, 和 {SHA} 方式
  然后修改/etc/ldap/slapd.conf 中的rootpw 行为:
rootpw     {MD5}4QrcOUm6Wau+VuBX8g+IPg==
  修改后,需要重启slapd服务
    
$ sudo /etc/init.d/slapd restsart
  这时可以使用客户端工具ldapsearch连接服务器查看目录信息:
~$ ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
  如果命令执行成功,返回一些信息,则说明服务器正常运行了
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts
#
#
dn:
namingContexts: dc=debsir,dc=org
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
  或者
$ ldapsearch -x -b dc=debsir,dc=org
# extended LDIF
#
# LDAPv3
# base <dc=debsir,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# debsir.org
dn: dc=debsir,dc=org
objectClass: top
objectClass: dcObject
objectClass: organization
o: debsir.org
dc: debsir
# admin, debsir.org
dn: cn=admin,dc=debsir,dc=org
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
# search result
search: 2
result: 0 Success
# numResponses: 3
# numEntries: 2
  如果启动不成功,它会提示一些出错信息,多数是slapd.conf配置出错。回头仔细核查一下配置文档。
3.4 客户端配置文档
  客户端配置文档是ldap.conf。该文档相当简单,其实不用配置也能正常操作。
BASE  dc=it, dc=com #设置目录起点
URI  ldap://localhost ldap://localhost:666
3.5 数据录入 定义一个组织单元
  创建文件group.ldif,内容如下:
    
dn: ou=people,dc=debsir,dc=org
objectClass: organizationalUnit
ou: people
创建用户
  创建文件person.ldif,内容如下:
dn: cn=tony,ou=people,dc=debsir,dc=org
objectClass: inetOrgPerson
objectClass: top
cn: tony
sn: an
givenName: an
displayName: Tony an
mail: [email][email protected][/email]
postalCode: 330005
telephoneNumber: 12345678
mobile: 12345678912
homePhone: 9999999
title: System Administrator
postalAddress: Guiyang, China
  * dn唯一地确定了这个对象的位置
  * objectClass确定了这个对象所具有的属性
  * objectClass可以有多个
  注意每行后面不要留有空格。
3. 将信息添加到数据库    
$ ldapadd -x -D cn=admin,dc=debsir,dc=org -W -f group.ldif
Enter LDAP Password:
adding new entry "ou=people,dc=debsir,dc=org"
    
tony@tonybox:~$ ldapadd -x -D cn=admin,dc=debsir,dc=org -W -f person.ldif
Enter LDAP Password:
adding new entry "cn=tony,ou=people,dc=debsir,dc=org"
  其中
  * x,使用简单认证方式
  * -v,输出更多信息
  * -D cn=admin,dc=cg,dc=com,dc=cn,使用此用户进行增加操作,显然用管理员比较好使,增加用户的权限不是谁都有的
  * -W,提示输入密码,也可以在命令行里面给出密码,这时的参数应该是 -w password,这对于脚本来说比较方便
4.查看
  然后可以用以下命令查看录入信息
    
~$ ldapsearch -x -b cn=tony,ou=people,dc=debsir,dc=org
# extended LDIF
#
# LDAPv3
# base <cn=tony,ou=people,dc=debsir,dc=org> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# tony, people, debsir.org
dn: cn=tony,ou=people,dc=debsir,dc=org
objectClass: inetOrgPerson
objectClass: top
cn: tony
sn: an
givenName: an
displayName: Tony an
mail: [email][email protected][/email]
postalCode: 330005
telephoneNumber: 12345678
mobile: 12345678912
homePhone: 9999999
title: System Administrator
postalAddress: Guiyang, China
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
3.6 权限定义    
access to attrs=userPassword,shadowLastChange
    by dn="cn=admin,dc=debsir,dc=org" write
    by anonymous auth
    by self write
    by * none
access to *
    by dn="cn=admin,dc=debsir,dc=org" write
    by * read
3.7 常用操作 修改密码        
$ ldappasswd -x -v -S -W -D cn=admin,dc=debsir,dc=org cn=tony,ou=people,dc=debsir,dc=org
New password:
Re-enter new password:
Enter LDAP Password:
ldap_initialize( <DEFAULT> )
Result: Success (0)
  * S 参数是要求命令提示用户输入两次新的密码,来确认密码更新,使用 -s newpasswd 可以在命令行中指定新密码。
删除对象
  删除对象的命令则是 ldapdelete,也要指定两个对象,哪个对象删除和删除哪个对象
        
ldapdelete -x -v -W -D cn=admin,dc=debsir,dc=org cn=tony,ou=people,dc=debsir,dc=org
修改对象    
$ ldapmodify -x -D cn=admin,dc=debsir,dc=org -W -f person.ldif
Enter LDAP Password:
modifying entry "cn=tony,ou=people,dc=debsir,dc=org"

4. 管理工具4.1 GQ
  gq - GTK-based LDAP client
  主页: [url]http://gq-project.org/[/url]
  当前版本: 1.2.1
   LDAP目录结构示意图
4.2 phpldapadmin
  phpldapadmin - web based interface for administering LDAP servers
  是一个基于Web的LDAP管理工具,用于管理你的LDAP服务器。使用它,你可以浏览你的LDAP树,查看LDAP模式,执行搜索、创建、删除、复制和编辑LDAP内容。你也可以在服务器之间复制内容。
  主页: [url]http://phpldapadmin.sourceforge.net/[/url]
  当前版本: phpldapadmin-php5 1.0.1
   PHPLDAPAdmin
   PHPLDAPAdmin
5. 设置邮件客户端获取信息
  打开 thunderbird, 选择"Tools" -> "Address Book" 或者直接点击 address book图标
  在 address book 窗口选择 "File" -> "NEW" -> "LDAP Directory ..."
  出现如图窗口, 然后填写相关信息
   thunderbird
  保存退出
  选择"Edit" -> "Search Addressess" 出现如下窗口:
   thunderbird

本文转载于:[url]http://tech.ddvip.com/2007-02/117224100919733_9.html[/url]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章