网站建设资讯

NEWS

网站建设资讯

OpenLDAP服务端安装与配置-创新互联

一、OpenLDAP 安装方式

发展壮大离不开广大客户长期以来的信赖与支持,我们将始终秉承“诚信为本、服务至上”的服务理念,坚持“二合一”的优良服务模式,真诚服务每家企业,认真做好每个细节,不断完善自我,成就企业,实现共赢。行业涉及成都砂岩浮雕等,在重庆网站建设公司成都全网营销、WAP手机网站、VI设计、软件开发等项目上具有丰富的设计经验。

  在UNIX 发行操作系统环境下安装OpenLDAP 软件一般有两种方式:一种是通过源码编译安装,另一种则是通过光盘自带的rpm 软件包进行安装。下面会分别介绍这两种安装方式,我还是建议使用rpm 安装,因为方便快捷。安装OpenLDAP服务器需要提供守护进程和传统的OpenLDAP 管理配置工具,主要是slapd 和ldap-utils 套件。

  我的安装环境是CentOS 6.7 64位操作系统,安装前环境准备请看博文环境准备

1、以软件包形式安装

# yum安装 yum install openldap openldap-* -y # 初始化配置文件 cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf # 初始化数据库配置文件 cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # 修改权限 chown -R ldap.ldap /etc/openldap   chown -R ldap.ldap /var/lib/ldap

  默认OpenLDAP 服务所使用的端口为389,此端口采用明文传输数据,数据信息得不到保障。所以可以通过配置CA 及结合TLS/SASL 实现数据加密传输,所使用端口为636,后面我再介绍实现过程。

2、通过源码编译安装

  由于编译安装OpenLDAP 需要数据库支持,因此OpenLDAP 软件后端数据库可采用BerkeleyDBBDB、Oracle、MySQL、MariaDB、GDBM 等数据库软件实现数据的存储。默认OpenLDAP 采用Berkeley DB 数据库作为后端存储引擎,而且OpenLDAP 对Berkey DB 的版本有一定要求,以OpenLDAP 2.4 软件版本为例,需要Berkeley DB 4.4 版本以上,所以在编译OpenLDAP 源码包时需要先下载Brekeley DB 源码包,并进行编译安装即可。

  Berkeley DB 是由美国Sleepycat Software 公司开发的开源数据库系统,具有高性能、嵌入式数据库编程库,可存取任意类型的键(key)/值(value)对,一键可以存储多个值,且支持在线并发量大的数据查询请求。

  非常抱歉,这部分安装设置比较复杂,我就不在这里展示了,如果谁想知道可以给我留言,谢谢。

二、OpenLDAP 配置

  我使用的系统是CentOS 6系列的,和CentOS 5系列的OpenLDAP有不小的区别,旧版本的OpenLDAP配置文件是slapd.conf,而新版本(我测试的新版本是2.4.40)的OpenLDAP服务运行时并不会读取该配置文件,而是从slapd.d目录(一般与slapd.conf在同一目录下)中读取相关信息,我们需要把该目录下的数据删掉,然后利用我们在slapd.conf里配置的信息重新生成配置数据。这也可能是你启动服务后运行ldap相关命令却出现“ldap_bind: Invalid credentials (49)”错误的主要原因。具体怎么重新生成配置数据请看具体的实验过程。

1、slapd.conf配置文件参数

以下是我的配置文件,#的内容是我添加的解释,大家可以根据实际情况修改成自己的域名,如果大家不了解其中的dn,cn,dc代表什么,请查看我的博文理论知识

[root@mldap ~]# egrep -v "#|^$" /etc/openldap/slapd.conf # include 行代表当前OpenLDAP 服务包含的schema 文件     include         /etc/openldap/schema/corba.schema include         /etc/openldap/schema/core.schema include         /etc/openldap/schema/cosine.schema include         /etc/openldap/schema/duaconf.schema include         /etc/openldap/schema/dyngroup.schema include         /etc/openldap/schema/inetorgperson.schema include         /etc/openldap/schema/java.schema include         /etc/openldap/schema/misc.schema include         /etc/openldap/schema/nis.schema include         /etc/openldap/schema/openldap.schema include         /etc/openldap/schema/ppolicy.schema include         /etc/openldap/schema/collective.schema include         /etc/openldap/schema/sudo.schema include         /etc/openldap/schema/openssh-lpk-openldap.schema # OpenLDAP 服务允许连接的客户端版本。 allow bind_v2 # OpenLDAP 进程启动时,pid 文件存放路径。 pidfile         /var/run/openldap/slapd.pid # OpenLDAP 参数文件存放的路径。 argsfile        /var/run/openldap/slapd.args # 传输加密的配置信息 TLSCACertificatePath /etc/openldap/certs TLSCertificateFile "\"OpenLDAP Server\"" TLSCertificateKeyFile /etc/openldap/certs/password database config access to *         by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage         by * none database monitor access to *         by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read         by dn.exact="cn=admin,dc=wzlinux,dc=com" read         by * none          # 指定OpenLDAP 数据库类型。 database        bdb # 指定OpenLDAP 服务域名(DN) suffix          "dc=wzlinux,dc=com" checkpoint      1024 15 # 指定OpenLDAP 服务管理员信息。 rootdn          "cn=admin,dc=wzlinux,dc=com" # 指定OpenLDAP 服务管理员密码,使用slappasswd -s your_password来获取加密密码 rootpw          {SSHA}hjqcrGsPL6H58QAS0QHBvihVS7x2HHKG # 指定OpenLDAP 数据库文件的存放目录。 directory       /var/lib/ldap # 创建OpenLDAP 索引。 index objectClass                       eq,pres index ou,cn,mail,surname,givenname      eq,pres,sub index uidNumber,gidNumber,loginShell    eq,pres index uid,memberUid                     eq,pres,sub index nisMapName,nisMapEntry            eq,pres,sub

2、启动服务并查询

service slapd start

  查询LDAP的目录条目,首先我们介绍一下ldapsearch命令,具体可以使用man帮助手册查看。

  • -b:指定查找的节点

  • -D:指定查找的DN

  • -x:使用简单认证

  • -W:查询是输入密码,或者使用-w password

  • -h:OpenLDAP的主机地址,可以使用IP或者域名

  • -H:使用LDAP服务器的URI地址进行操作

[root@mldap ~]# ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -H ldap://192.168.2.10 -W Enter LDAP Password:                    #就是我们在slapd.conf加密的密码 ldap_bind: Invalid credentials (49)

  我们看到出现了错误,这个问题并不是因为密码错误,是因为新版的LDAP去读取数据库(slapd.d),并没有按照我们的配置文件(slapd.conf)读取,所以我们要删掉数据库配置文件,然后通过slapd.conf文件生成,每次修改配置文件都要如此操作。

rm -rf /etc/openldap/slapd.d/* slaptest -f /etc/openldap/slapd.conf -F/etc/openldap/slapd.d chown -R ldap:ldap /etc/openldap/slapd.d service slapd restart

  然后再进行查询,看看结果返回是否正常,我们可以看到No such object,因为我们什么数据也没有添加,所以查询的结果为零,到此我们的配置都是正常的。

[root@mldap ~]# ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -h 192.168.2.10 -W Enter LDAP Password:  # extended LDIF # # LDAPv3 # base <> (default) with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object # numResponses: 1

3、为ldap server添加数据

  为ldap添加用户数据,有四种方法,分别如下,我们选择第四种方法进行试验。

  • 1)可以直接修改slapd.d目录下面的数据文件,好处是不用重启服务,直接生效;

  • 2)安装开源工具migrationtools来生成ldfi文件,并通过ldapadd来添加;

  • 3)安装ldap 客户端,这种方法最为简单;

  • 4)直接编辑ldfi文件,然后通过ldapadd添加。

  首先我们手动编辑base.ldif文件,直接复制好像会因为格式有问题。每个条目之间有个空格,直接复制过去会有点问题,需要你把每个条目之间空行的第一个空位删除一下。

[root@mldap ~]# vim base.ldif  dn: dc=wzlinux,dc=com objectClass: organization objectClass: dcObject dc: wzlinux o: wzlinux dn: ou=people,dc=wzlinux,dc=com objectClass: top objectClass: organizationalUnit ou: people dn: ou=group,dc=wzlinux,dc=com objectClass: top objectClass: organizationalUnit ou: group

  通过ldapadd导入数据,通过man可以看到,他的大部分参数和ldapsearch差不多,我们这里就直接使用了。

[root@mldap ~]# ldapadd -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -f base.ldif  adding new entry "dc=wzlinux,dc=com" adding new entry "ou=people,dc=wzlinux,dc=com" adding new entry "ou=group,dc=wzlinux,dc=com"

  通过反馈的结果,我们已经看到添加成功了,我们在另外一台安装了客户端的机器上面进行查询一下,可以看到我们查询到的结果和我们的base.ldif是一样的。

[root@test01 ~]# ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -b "dc=wzlinux,dc=com" -LLL dn: dc=wzlinux,dc=com objectClass: organization objectClass: dcObject dc: wzlinux o: wzlinux dn: ou=people,dc=wzlinux,dc=com objectClass: top objectClass: organizationalUnit ou: people dn: ou=group,dc=wzlinux,dc=com objectClass: top objectClass: organizationalUnit ou: group

  然后我们通过user.ldif和group.ldif增加一个用户和一个组。

[root@mldap ~]# cat user.ldif group.ldif  dn: uid=test1,ou=people,dc=wzlinux,dc=com objectClass: posixAccount objectClass: top objectClass: inetOrgPerson objectClass: shadowAccount gidNumber: 0 givenName: test1 sn: test1 uid: test1 homeDirectory: /home/test1 loginShell: /bin/bash shadowFlag: 0 shadowMin: 0 shadowMax: 99999 shadowWarning: 0 shadowInactive: 99999 shadowLastChange: 12011 shadowExpire: 99999 cn: test1 uidNumber: 24422 userPassword:: e1NIQX10RVNzQm1FL3lOWTNsYjZhMEw2dlZRRVpOcXc9 dn: cn=DBA,ou=group,dc=wzlinux,dc=com objectClass: posixGroup objectClass: top cn: DBA memberUid: test1 gidNumber: 10673

  看完那就添加用户和组呗。

[root@mldap ~]# ldapadd -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -f group.ldif  adding new entry "cn=DBA,ou=group,dc=wzlinux,dc=com" [root@mldap ~]# ldapadd -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -f user.ldif  adding new entry "uid=test1,ou=people,dc=wzlinux,dc=com"

  然后通过下面的命令查看自己是否添加成功。

ldapsearch -x -D "cn=admin,dc=wzlinux,dc=com" -w 123456a -h 192.168.2.10 -b "dc=wzlinux,dc=com" -LLL

  可能每次查询都写这么多,或许感觉比较麻烦,我们可以在客户端的配置文件里面添加两行数据,客户端的配置文件是/etc/openldap/ldap.conf。

BASE   dc=wzlinux,dc=com URI    ldap://ldap.wzlinux.com     #提前设置好hosts文件

4、通过slapd.conf 定义用户策略控制

  默认情况下,不允许OpenLDAP 用户自身修改密码,仅管理员具有修改权限。为了提高个人账号的安全性,需要让用户自身可以修改并更新密码信息,不需要管理员干涉。具体步骤如下。

1)定义访问控制策略。

  编辑slapd.conf 配置文件,定位access 行,添加如下内容。

access to attrs=shadowLastChange,userPassword       by self write             #只允许自身修改       by * auth   access to *       by * read                 #允许授权用户查看信息

2)重新生成数据库文件并重启服务。

rm -rf /etc/openldap/slapd.d/*   slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/   chown -R ldap.ldap /etc/openldap/   service slapd restart

5、日志的配置

  在配置文件/etc/openldap/slapd.conf中添加如下内容,记得重新生成数据库文件。

loglevel 256 cachesize 1000 checkpoint 2048 10

  在/etc/rsyslog.conf中添加如下内容,然后重启rsyslog服务。

local4.*          /var/log/slapd.log

6、OpenLDAP 日志切割配置

  通过logrotate 实现对OpenLDAP 日志的切割,预防日志过大不便于排错以及性能分析。下面通过定制脚本实现当日志大于10MB 时,进行切割,便于排错。脚本如下。

#!/bin/bash   ########### 通过logrotate 实现对OpenLDAP 日志进行切割 ##################   FILE= /var/log/slapd.log   if [ ! -f $FILE ];then   /bin/touch $FILE && /bin/chmod 666 $FILE && /usr/bin/chattr +a $FILE &> /dev/null   cat > /etc/logrotate.d/ldap << "EOF"   /var/log/slapd.log {      prerotate            /usr/bin/chattr -a /var/log/slapd/slapd.log      endscript      compress      delaycompress      notifempty      rotate 100      size 10M      postrotate             /usr/bin/chattr +a /var/log/slapd/slapd.log      endscript   }   EOF      service rsyslog restart && chkconfig rsyslog on   else      echo "slapd log is exsit"   fi

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网站标题:OpenLDAP服务端安装与配置-创新互联
文章位置:http://njwzjz.com/article/eehji.html