当前位置: 首页 >> 应用软件 >> 网络相关 >> OpenLDAP安装、配置和管理笔记
 

OpenLDAP安装、配置和管理笔记

作者:      来源:     发表时间:2006-05-18     浏览次数:      字号:    

Chapter 1. 目录服务简介

目录是一个为查询、浏览和搜索而优化的专业分布式数据库,它成树状结构组织数据,就好象Linux/Unix系统中的文件目录一样。目录数据库和关系数据库不同,它有优异的读性能,但写性能差,并且没有事务处理、回滚等复杂功能,不适于存储修改频繁的数据。所以目录天生是用来查询的,就好象它的名字一样。目录服务是由目录数据库和一套访问协议组成的系统。类似以下的信息适合储存在目录中:

  • 企业员工和企业客户之类人员信息;

  • 公用证书和安全密钥;

  • 邮件地址、网址、IP等电脑信息;

  • 电脑配置信息。

  • ...

1.1. X.500和LDAP

现在国际上的目录服务标准有两个,一个是较早的X.500标准,一个是较新的LDAP标准。

  • X.500是一个协议族,由一系列的概念和协议组成,包括:

    • X.501是模型定义,定义目录服务的基本模型和概念;

    • X.509是认证框架,定义如何处理目录服务中客户和服务器认证;

    • X.511是抽象服务定义,定义X.500提供的功能性服务;

    • X.518是分布式操作过程定义,定义如何跨平台处理目录服务;

    • X.519是协议规范,定义了X.500协议,包括DAP(Directory Access Protocol,目录访问协议)、DSP(Directory System Protocol,目录系统协议)、DOP(Directory Operator Protocol,目录操作绑定协议)、DISP(Directory Information Shadowing Protocol,目录信息阴影协议 );

    • X.520定义属性类型要求;

    • X.521定义对象类型;

    • X.525定义如果在目录服务器间复制内容。

    X.500标准中定义了很多内容,包括:

    • 定义了信息模型,确定目录中信息的格式和字符集,如何在项中表示目录信息(定义对象类、属性等模式);

    • 定义命名空间,确定对信息进行的组织和引用,如何组织和命名项-目录信息树DIT和层次命名模型;

    • 定义功能模型,确定可以在信息上执行的操作;

    • 定义认证框架,保证目录中信息的安全,如何实现目录中信息的授权保护-访问控制模型;

    • 定义分布操作模型,确定数据如何分布和如何对分布数据执行操作,如何将全局目录树划分为管理域,以便管理。

    • 定义客户端与服务器之间的通信的各种协议。

    由于X.500较复杂,且需严格遵照OSI七层协议模型。造成应用开发较困难。所以开发了LDAP,以便在INTERNET上使用。

  • LDAP协议于1993年获批准,产生LDAPv1版,1997年发布最新的LDAPv3版,该版本是LDAP协议发展的一个里程碑,它作为X.500的简化版提供了很多自有的特性,使LDAP功能更为完备,具有更强大的生命力。

    LDAP也是一个协议族,包含以下内容:

    • RFC 2251--LDAPv3核心协议,定义了LDAPv3协议的基本模型和基本操作;

    • RFC 2252--定义LDAPv3基本数据模式(Schema)(包括语法、匹配规则、属性类型和对象类)以及标准的系统数据模式;

    • RFC 2253--定义LDAPv3中的分辩名(DN)表达式;

    • RFC 2254--定义了LDAPv3中的过滤表达式;

    • RFC 2255--定义LDAPv3统一资源地址的格式;

    • RFC 2256--定义LDAPv3中使用X.500的Schema列表;

    • RFC 2829--定义了LDAPv3中的认证方式;

    • RFC 2830--定义了如何通过扩展使用TLS服务;

    • RFC 1823--定义了C的LDAP客户端API开发接口;

    • RFC 2847--定义了LDAP数据导入、导出文件接口LDIF。

    这些协议定义了LDAP的内容,包括:

    • 定义了一个信息模型,确定了LDAP目录中信息的格式和字符集,如何表示目录信息(定义对象类、属性、匹配规则和语法等模式);

    • 定义了命名空间,确定信息的组织方式--目录树DIT,以DN和RDN为基础的命名方式,以及LDAP信息的Internet表示方式;

    • 定义了功能模型,确定在可以在信息上执行的操作及API。

    • 定义了安全框架,保证目录中信息的安全,定义匿名、用户名/密码、SASL等多种认证方式,以及与TLS结合的通讯保护框架;

    • 定义分布式操作模型,基于指引方式的分布式操作框架;

    • 定义了LDAP扩展框架。

1.2. LDAP产品

现在市场上有关LDAP的产品已有很多,各大软件公司都在他们的产品中集成了LDAP服务,如Microsoft的ActiveDirectory、Lotus的Domino Directory、IBM的WebSphere中也集成了LDAP服务。LDAP的开源实现是OpenLDAP,它比商业产品一点也不差,而且源码开发。

Chapter 2. OpenLDAP安装笔记

2.1. 源码安装

我的安装方法是以源码编译的方式进行的,以root用户进行安装。安装所需软件如下:

具体的安装步骤如下:

  1. 由于openldap需要Berkeley DB来存放数据,所以需先安装Berkeley DB 4.2.52,可到它的网站下载,网址见上面。运行下面的命令解压:

    # tar -zxvf db-4.2.52.tar.gz
    

    解完压后,会生成一个db-4.2.52目录,进行该目录下的build_unix目录。执行以下命令进行配置安装。

    # ../dist/configure
    # make
    # make install
    

    也是按linux源码安装的三步曲完成,没有什么好说的了。该软件默认是安装在/usr/local/BerkeleyDB.4.2目录下。安装完成后,要把/usr/local/BerkeleyDB.4.2/lib的库路径加到/etc/ld.so.conf文件内,添加完成后执行一次ldconfig,使配置文件生效。这样编译openldap时才能找到相应的库文件。这样资料库就安装完成了,接下来可以安装openldap了。ld.so.conf是什么东西?它就是系统动态链接库的配置文件。此文件内,存放着可被LINUX共享的动态链接库所在目录的名字(系统目录/lib,/usr/lib除外),各个目录名间以空白字符(空格,换行等)或冒号或逗号分隔。一般的LINUX发行版中,此文件均含一个共享目录/usr/X11R6/lib,为X window窗口系统的动态链接库所在的目录。 ldconfig是它的管理命令,具体操作方法可查询man手册,这里就不细讲了。

  2. 到openldap官方网站下载最新的稳定版源码,并解压。查看INSTALLT 和README文档,这个很重要,因为安装方法和一些注意事项都在里面有介绍。认真弄明白文档内容能节省你不少的安装调试时间。这也是开源软件的一个特点,给用户提供了最大的灵活性和可配置性。但也增加了系统安装配置的难度,需要有相关的文档配置说明和指导。在官方网站上还有详细的帮助文件,在整个系统配置中需要经常查询。

    # tar -zxvf openldap-stable-20040329.tgz
    

    解压完成后,会生成一个openldap-2.1.29目录。进行该目录,执行以下命令进行配置安装。

    # env CPPFLAGS="-I/usr/local/BerkeleyDB.4.2/include" 
    LDFLAGS="-L/usr/local/BerkeleyDB.4.2/lib" ./configure --prefix=/usr/local/openldap 
    --enable-ldbm 
    

    注意以上配置语句,要设置资料库的include和lib路径,否则在配置到资料库相关内容时会提示Berkeley DB版本不兼容,并中断配置。如果没有--enable-ldbm选项,在make test时会提示ldbm找不到。为了减少出错,还是加上为好。

    #make depens
    #make
    #make test
    

    在make test阶段要花费较长时间进行测试,好像有16项吧。你可以放松一下,上上网,聊聊天,听听歌,呵呵,开玩笑了,这个时间应该是最紧张的了。成与不成就看这下的了,如果没问题就可安装了。

    #make install
    

    通过配置命令可以看出,我们把openldap安装到/usr/local/openldap目录下。建议以源码安装的软件都放到独立的目录下,不要放到软件默认的目录。好处是方便管理和控制,所有文件在统一的目录下,卸载软件只要删除整个目录就可以了。

  3. 安装完相关软件后就可以着手配置了。Berkeley DB资料库没什么好配置的。主要是配置openldap 服务。配置文件在软件的安装目录的etc/openldap下,有四个文件,主要的是slapd.conf and ldap.conf,其它两个是backup文件。首先,我们先来配置slapd.conf文档。系统默认的slapd.conf文件如下:

    # $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.8 2003/05/24 23:19:14 kurt Exp $
    # 
    # See slapd.conf(5) for details on configuration options.
    # This file should NOT be world readable. 
    # 
    include      /usr/local/openldap/etc/openldap/schema/core.schema  
    #设置schema配置文档包含
     
    # Define global ACLs to disable default read access.
     
    # Do not enable referrals until AFTER you have a working directory
    # service AND an understanding of referrals.
    #referral       ldap://root.openldap.org
     
    pidfile         /usr/local/openldap/var/slapd.pid 
    #设置pid和args文档位置
    argsfile        /usr/local/openldap/var/slapd.args
     
    # Load dynamic backend modules:
    # modulepath    /usr/local/openldap/libexec/openldap
    # moduleload    back_bdb.la 
    # moduleload    back_ldap.la
    # moduleload    back_ldbm.la 
    # moduleload    back_passwd.la
    # moduleload    back_shell.la
     
    # Sample security restrictions 
    #       Require integrity protection (prevent hijacking)
    #       Require 112-bit (3DES or better) encryption for updates
    #       Require 63-bit encryption for simple bind
    # security ssf=1 update_ssf=112 simple_bind=64
     
    # Sample access control policy: 
    #       Root DSE: allow anyone to read it
    #       Subschema (sub)entry DSE: allow anyone to read it
    #       Other DSEs: 
    #       Subschema (sub)entry DSE: allow anyone to read it
    #       Other DSEs:
    #               Allow self write access
    #               Allow authenticated users read access
    #               Allow anonymous users to authenticate
    #       Directives needed to implement policy:
    # access to dn.base="" by * read
    # access to dn.base="cn=Subschema" by * read
    # access to *
    #       by self write
    #       by users read
    #       by anonymous auth
    #
    # if no access controls are present, the default policy is:
    #       Allow read by all
    #
    # rootdn can always write!
     
    #######################################################################
    # ldbm database definitions
    #######################################################################
     
    database        bdb                                
    #设置使用的资料库,也可用lbdm。
    suffix          "dc=my-domain,dc=com"              
    #设置目录后缀
    rootdn          "cn=Manager,dc=my-domain,dc=com"   
    #设置目录管理员
    # Cleartext passwords, especially for the rootdn, should
    # be avoid.  See slappasswd(8) and slapd.conf(5) for details.
    # Use of strong authentication encouraged.
    rootpw          secret                             
    #设置管理密码,这里用了明文的“secret”密码。这样设置不安全,需使用加密的密码,下面会讲到如何设置加密密码。
    # The database directory MUST exist prior to running slapd AND 
    # should only be accessible by the slapd and slap tools.
    # Mode 700 recommended.
    directory       /usr/local/openldap/var/openldap-data  
    #设置资料库路径
    # Indices to maintain
    index   objectClass     eq                        
    #设置目录项索引
    

    要服务器正常动作,要修改一些始初参数和设置,修改后的配置文档如下:

    # $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.23.2.8 2003/05/24 23:19:14 kurt Exp $
    #
    # See slapd.conf(5) for details on configuration options.
    # This file should NOT be world readable.
    #
    #为了有效使用目录服务,包含相关的文件。注意,在包含文件时是要按一定顺序的,因为
    #文件里的属性存在依赖关系。如果顺序不对,服务器启动不了,文档间的依赖关系在文档
    #中都有说明,请仔细查看一下。如果懒得看也可以按我的顺序。
    include         /usr/local/openldap/etc/openldap/schema/core.schema
    include         /usr/local/openldap/etc/openldap/schema/corba.schema
    include         /usr/local/openldap/etc/openldap/schema/cosine.schema
    include         /usr/local/openldap/etc/openldap/schema/inetorgperson.schema    
    include         /usr/local/openldap/etc/openldap/schema/misc.schema             
    include         /usr/local/openldap/etc/openldap/schema/openldap.schema
    include         /usr/local/openldap/etc/openldap/schema/nis.schema
    include         /usr/local/openldap/etc/openldap/schema/samba.schema
    # Define global ACLs to disable default read access.
     
    # Do not enable referrals until AFTER you have a working directory
    # service AND an understanding of referrals.
    #referral       ldap://root.openldap.org
     
    pidfile         /usr/local/openldap/var/slapd.pid
    argsfile        /usr/local/openldap/var/slapd.args
     
    loglevel 1                       
    #增加了日志功能,需修改syslog配置文件,在文件中增加一项:local4.* /var/log/ldap.log日志级别定义可查相官方网站的文档。
    #1级记录的信息很多,可用于调试。
    # Load dynamic backend modules:
    # modulepath    /usr/local/openldap/libexec/openldap
    # moduleload    back_bdb.la
    # moduleload    back_ldap.la
    # moduleload    back_ldbm.la
    # moduleload    back_passwd.la
    # moduleload    back_shell.la
     
    # Sample security restrictions
    #       Require integrity protection (prevent hijacking)
    #       Require 112-bit (3DES or better) encryption for updates
    #       Require 63-bit encryption for simple bind
    # security ssf=1 update_ssf=112 simple_bind=64
     
    # Sample access control policy:
    #       Root DSE: allow anyone to read it
    #       Subschema (sub)entry DSE: allow anyone to read it
    #       Other DSEs:
    #               Allow self write access
    #               Allow authenticated users read access
    #               Allow anonymous users to authenticate
    #       Directives needed to implement policy:
    # access to dn.base="" by * read
    # access to dn.base="cn=Subschema" by * read
    # access to *
    #       by self write
    #       by users read
    #       by anonymous auth
    #
    # if no access controls are present, the default policy is:
    #       Allow read by all
    #
    # rootdn can always write!
     
    #######################################################################
    # ldbm database definitions
    #######################################################################
    

[1] [2]

责任编辑 webmaster

 
 
 
 
 
评论更多>>
 
 
 
发表
 
姓名: QQ:
性别: MSN:
E-mail: 主页:
评分: 1 2 3 4 5
评论内容:
验证码:
  
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。
  •