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

OpenLDAP安装、配置和管理笔记

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

database bdb suffix "dc=it,dc=com" #改成你自已的目录后缀, rootdn "cn=root,dc=it,dc=com" #设置root为管理员,与linux的root没有什么关系。 # Cleartext passwords, especially for the rootdn, should # be avoid. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw {MD5}mjkiuPt0wXhpxxkdiOOO+0000000AKq0by #设置root密码,用MD5加密。密码串用slappasswd -h {MD5}指令生成 # 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 #这里可根据你的需要设置相关索引,以加快查询速度。具体内容可查询官方网站管理手册。 #ACL configure以下内容定义访问控制 access to attr=userPassworduserPassword #只能由自已修改,有效验证用户查询。 by self write by anonymous auth access to attr=mail by dn="cn=root,dc=it,dc=tigerhead" writemail #只能由自已修改,有效验证用户查询。 by self write by anonymous auth access to dn=".*,dc=it,dc=tigerhead" #允许所有人查询没受控制访问限制的信息。 by self write by * read

到现在为止,服务器基本就配置完成了,可以启动了,服务器程序是位于安装目录的libexec下的slapd程序。注意,不是sldap哦。ok,到现在为止,服务器基本就配置完成了,可以启动了,服务器程序是位于安装目录的libexec下的slapd程序。注意,不是sldap哦。启动服务器执行以下命令:

# ./slapd

如果没有提示什么出错信息,直接返回shell状态,就说明服务器正常启动了,你可以查询日志或用ps -aux查看。或用以下命令查询服务器:

ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

如果命令执行成功,返回一些信息,则说明服务器正常运行了。如果启动不成功,它会提示一些出错信息,多数是slapd.conf配置出错。回头仔细核查一下配置文档。

  • 客户端配置文档是ldap.conf。该文档相当简单,其实不用配置也能正常操作。

    # $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.9 2000/09/04 19:57:01 kurt Exp $
    #
    # LDAP Defaults
    #
     
    # See ldap.conf(5) for details
    # This file should be world readable but not world writable.
     
    BASE    dc=it, dc=com设置目录起点
    #URI    ldap://ldap.example.com ldap://ldap-master.example.com:666
     
    #SIZELIMIT      12
    #TIMELIMIT      15
    #DEREF          never
    
  • 2.2. 数据录入

    服务器正常运作后,就可以录入信息了。信息的录入有三种方法,一种是手工录入,一种是.ldif文件格式录入,一种是脚本自动录入。我们先从最基础的手工录入方式开始介绍,了解录入信息的格式。明白了手工录入的格式,其它两种方式都很容易明白。信息录入用到ldapadd这个程序。可在安装目录的bin目录下找到。

    2.2.1. 手动录入方法

    • 第一步是要建立DN:

      # ldapadd -x -D 'cn=root,dc=it,dc=com' -W
      dn: dc=it,dc=com
      objectClass: dcObject
      objectClass: organization
      dc: it
      o: Corporation
      description: d Corporation
      注意:如果你用复制/粘贴功能把以上内容拷贝过去,一定要注意每行后面不要有空格,建议还是手工输入,按Ctrl+d存盘。
      
    • 第二步是建立RDN:

      # ldapadd -x -D 'cn=root,dc=it,dc=com' -W        
      #-x表示用简单验证,-D表示指定目录,-W表示弹出密码输入提示
      

      输入密码,这里的密码是cn=root,dc=it,dc=com的密码,不是操作系统中root用户的密码。验证通过后就可输入以下内容:

      dn: uid=qq,dc=it,dc=com
      objectClass: person
      objectClass: organizationalPerson
      objectClass: inetOrgPerson
      uid: qq
      cn: qq
      sn: qq
      telephoneNumber: 138888888
      description: openldap test
      telexNumber: tex-8888888
      street: my street
      postOfficeBox: postofficebox
      displayName: qqdisplay
      homePhone: home1111111
      mobile: mobile99999
      mail:qq@qq.com
      

      输入完所有信息后,按Ctrl+d结束存盘。如果出现出错信息,请查一下对象类和属性的对应关系有没有错或输入失误。初学者就容易出错的地方是对象类和属性的对应关系没有处理好。对象类和属性是在schema文档中定义的。它们之间的关系是这样的,对象类中有些属性是必选的,有些属性是可选的。录入信息的属性必须在对象类中有定义才能用。

    输入以下命令可查询到刚才输入的信息。

    # ldapsearch -x -b 'dc=it,dc=com'            
    -b选项是设置目录起点,如果设置了客户端的BASE配置参数,该项可不用。
    

    如果按以上配置文件设置了acl,用上面的查询命令是查询不到受保护的内容的。如上面的userPassword and mail。要查询到这些受限内容,需要通过验证才可以:

    # ldapsearch -x -LLL -h it.com -b 'dc=it,dc=com' -D 'uid=qq,dc=it,dc=com' -W 'uid=qq'
    接着提示输入密码。输入userPassword的密码回车,所有信息就都出来了。
    

    2.2.2. 文件方式

    .ldif文件方式也就是把以上手工输入的内容先写入一个.ldif文件中,然后,用ldapadd命令的-f参数导入。

    # ldapadd -x -D "cn=root,dc=it,dc=com" -W -f test.ldif
    

    一个完整的global.ldif文件例子:

    dn: dc=info, dc=net
    objectClass: top
    objectClass: organization
    o: info.net
    
    dn: ou=People, dc=info, dc=net
    objectClass: top
    objectClass: organizationalUnit
    ou: People
    description: User Info
    
    dn: cn=Admin, dc=info, dc=net
    objectClass: top
    objectClass: person
    objectClass: organizationalPerson
    cn: Admin
    sn: Admin
    userPassword: Admin
    description: Administrator for info.net
    
    dn: id=1, ou=people, dc=info, dc=net
    objectclass: top
    objectclass: InfoPerson
    id: 1
    username: 张三
    tel:021-63138990
    card_id:ABC001
    

    我们也可用slapadd命令来导入数据。该命令可以导入包含一些系统信息的ldif文件,如:

    dn: dc=it,dc=com
    objectClass: top
    objectClass: dcObject
    objectClass: organization
    dc: it
    structuralObjectClass: organization
    entryUUID: d97b06da-d77e-1028-9866-d4ec7ac00d12
    creatorsName: cn=anonymous            #系统信息
    createTimestamp: 20041201005115Z      #系统信息
    o:: 5bm/5bee5biC6JmO5aS055S15rGg6ZuG5Zui5pyJ6ZmQ5YWs5Y+4
    userPassword:: e01ENX14TXBDT0tDNUk0SU56RkNhYjNXRW13PT0=
    entryCSN: 2004120603:50:08Z#0x0001#0#0000     #系统信息
    modifiersName: cn=admin,dc=it,dc=com          #系统信息
    modifyTimestamp: 20041206035008Z              #系统信息
    
    [Note]
    再次提醒,注意每行后面不要留有空格。

    2.2.3. 脚本方式

    脚本录入方式需要自已编写脚本,或到网上下载。有一个用PHP写的LDAP管理工具不错,叫phpLDAPadmin。可以到以下网址下载:http://phpldapadmin.sourceforge.net。安装方法也很简单,只要解压出来,拷贝到apache的web目录下,按说明配置一下设定文档,就ok了。

    2.3. 常用命令介绍

    接着为大家介绍一下几个常用的ldap命令,如果你用了phpLDAPadmin程序,其实它已经有一个很好的图形介面帮你完成这些命令了。但了解一下还是对你还是很有益的,因为命令方法才是最根本的。

    • 删除命令ldapdelete

      # ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=qq1,dc=it,dc=com'
      
    • 重新索引ldap数据库命令slapindex

      # slapindex -f slapd.conf
      
    • 设置使用者密码,当然了,你的用户需要有userPassword项了。

      #ldappasswd -x -D "cn=root,dc=it,dc=com" -W "uid=qq1,dc=it,dc=com" -S 
      New password: 
      Re-enter new password: 
      Enter bind password: 
      Result: Success (0)
      
      [Note]
      "Enter bind password" 是 "cn=root,dc=it,dc=com"管理员的密码。
    • 管理员密码更改

      #slappasswd 
      New password 
      Re-enter new password 
      {SSHA}83DJ4KVwqlk1uh9k2uDb8+NT1U4RgkEs 
      

      接下再拷贝到 path/to/sldap.conf 的 rootpw 即可,重启使用配置文件生效

    • 通过ldapmodify修改目录内容

      # ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
      

      通过ldif文件修改ldap数据,ldif文件格式如下:

      dn: cn=qq,dc=it,dc=com
      changetype: modify
      replace: mail
      mail: modme@example.com
      -
      add: title
      title: Grand Poobah
      -
      add: jpegPhoto
      jpegPhoto:< file:///tmp/modme.jpeg
      -
      delete: description
      -
      

    2.4. 启用sasl验证

    前提是你在系统中安装了sasl认证库,并在编译openldap时支持它,默认就支持了。到http://asg.web.cmu.edu/cyrus下载。安装方法见我写的sendmail安装笔记。安装好之后,需要在sasl中建立相应的帐号,用以下命令可完成。

    # saslpasswd2 -c test
    

    接着配置slapd.conf文件,加入以下内容。

    sasl-regexp
            uid=(.*),cn=.*,cn=auth
            uid=$1,dc=it,dc=com
    

    重启服务器使配置文件生效。这个配置是最大权限的配置,如果要细化请查阅相关文档。用以下命令测试。

    # ldapsearch -U qq  -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5
    

    采用digest-md5验证,提示密码,输入saslpasswd2的密码。

    2.5. 配置服务器复制

    在一些关键的应用场合,我们需设置多个ldap服务器实例,且数据要保持同步。当一台服务器出现故障或被黑客攻击时,我们就能继续保持应用的正常运行。通过DNS的轮流查询功能,还能实现服务器的负载均衡,提高响应速度。在openldap中有一个slurpd进程,利用slurpd进程可帮助我们实现多台ldap服务器数据的同步功能。下面简单介绍一下具体的主、从ldap服务器的配置。

    slurpd运行在主服务器上,它能把主服务器上的变化通过LDAP协议传送到从服务器上。从服务器上的变化不能传送到主服务器上,也就是说是单向同步的。主从服务器的版本最好一样,以减少兼容性问题。主从服务器的安装方法是一样的,关键是配置文件有所不同。我的操作系统是debian sarge,在确保主从服务器能正常运行的前提下进行以下配置:

    • 首先,把主从服务器关闭。通过以下三步操作静态同步主从服务器上的数据:

      1. 把主服务器上/var/lib/ldap目录下的所有数据库文件全部拷贝到从服务器的同目录中,覆盖原有文件。

      2. 把主服务器上的/etc/ldap/schema目录下的所有schema文件拷贝到从服务器的同目录中,覆盖原有文件。

      3. 把主服务器上/etc/ldap/slapd.conf文件拷贝到从服务器的同目录中,覆盖原有文件。

    • 配置主服务器上的slapd.conf文件,取消replogfile指令前的注释符号,取消后的结果如下:

      # Where to store the replica logs for database #1
      replogfile      /var/lib/ldap/replog
      

      增加replica指令,如:

      #replace config
      replica uri=ldap://192.168.6.195:389     #指定从服务器主机名和端口号
              binddn="cn=admin,dc=com"         #指定需同步的DN的管理员
              bindmethod=simple credentials=1  #指定验证方式和需同步的DN的管理员密码
      
    • 配置从服务器上的slapd.conf文件,增加updatedn指令,如:

      updatedn "cn=admin,dc=com"          #与主服务器的binddn对应
      

      在从服务器的配置文件中,不要包含replica和replogfile指令。

    • 先启动主服务器的slapd和slurpd,再启动从服务器的slapd。

    配置完成后,我们可测试一下,在主服务器上修改一个目录项,在从服务器上可查看目录项的数据已同步。

    Chapter 3. 管理工具

    开源的目录服务管理工具有很多,包括phpldapadmin,gq,CPU,JXplore等。这些工具可帮助我们方便维护目录服务器上的数据。这些工具各有优缺点,下面简要介绍一下,详细的内容可参考相关的官方网站。

    3.1. phpldapadmin

    3.2. gq

    3.3. CPU

    3.4. JXplore

    Chapter 4. HowTo

    4.1. 禁止整个服务器的匿名访问

    在slapd.conf配置文件中加入disallow bind_anon即可。

    [1] [2]

    编辑 webmaster

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