官方文档参考:OpenLDAP Software 2.4 Administrator's Guide: A Quick-Start Guide
这篇文章写的时候已经迁移完毕有段时间了,中间有很多不通的地方,还请谅解,尽量不要直接按照步骤走,可以找寻文章中存在的共性问题,只有自己先了解openLDAP,才可以更好的去看别人的文章,盲目的copy,害人害己(有感而发....)
问题:本次迁移,遇见的最大的问题就是,官方给出的安装步骤很简单,有很多我们需要的配置并没有给出,需要自己长时间的摸索和探究,我所出现的问题就是:密码策略没有配置,导致导入数据一直报passwdFaild错误,希望大家引以为戒,可以更加快速部署好自己的项目。
新老环境对比: 整个过程都是在centos 7 下!
老环境信息:
(1)安装方式:yum (这种方式非常简单,网上可随便搜到,非常的多,这里不过多解释)
(2)LDAP版本:2.4.44
(3)可视化页面采用:LDAP Account Manager 6.5
新环境信息:(要安装的信息,由于自我行为规范,采用源码编译安装最新版本)
(1)安装方式源码编译:openldap-2.4.49.tgz
(2)LDAP版本:2.4.49
(3)可视化页面界面:LDAP Account Manager 7.1
openLDAP 简单的介绍:
o– organization(组织-公司)
ou – organization unit(组织单元/部门)
c - countryName(国家)
dc - domainComponent(域名组件)
sn – suer name(真实名称)
cn - common name(常用名称)
dn - distinguished name(专有名称)
如图所示(网上找的。。)
安装过程:
下载openldap tar包(官方的!培养好习惯!)
ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.49.tgz
安装
wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.49.tgz
tar zxvf openldap-2.4.49.tgz
./configure --prefix=/data/software/openldap-2.4.49 //指定安装目录,在这里执行请 //先查找你需要的选项配置,通过./configure -h,安装需要很多依赖项,通过 //yum安装,我这里采用默认配置,
make depend && make //构建依赖编译
make test //构建测试 (非常慢,20~30分钟),网上有很多这个地方报错是因为 没有安装它的一些依赖项,可以通过yum安装
make install
配置文件slapd.conf //官网上给出的是配置slapd.ldif文件,随后指定这个文件导入数据库(经过多方的查找发现除了官方给的文档外,很少有人采用这个方式,经过多天的尝试发现出了错误很难找到对应的方法,最后无奈选择配置slapd.conf,主要是自己没有理解其原理...)
include /data/software/openldap-2.4.49/etc/openldap/schema/core.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/collective.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/corba.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/cosine.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/duaconf.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/dyngroup.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/java.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/inetorgperson.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/nis.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/misc.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/openldap.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/pmi.schema
include /data/software/openldap-2.4.49/etc/openldap/schema/ppolicy.schema
#include包含的是我们同级目录下的schema目录下的文件(一半是.schema结尾,一半是.ldif结尾的,而.ldif结尾的文件是添加到配置slapd.ldif文件的,我们这里采用的是slapd.conf文件,所以对ldif文件不用管,想要了解的同学自行查找)
loglevel 256 //配置官方给的日志级别
logfile /data/logs/slapd/slapd.log //目录
modulepath /data/software/openldap-2.4.49/libexec/openldap //采用动态模块存放位置
modulepath ppolicy.la //采用动态模块(这个 //模块的作用配置密码策略,passwordDefault,如果老的 //LDAP配置了密码策略,新的LDAP没有配置的话,导入数据目录会失败。)
database mdb //本版本默认采用的mdb数据库
maxsize 1073741824 //使用mdb必加的配置(非mdb这个去掉)
suffix "dc=*********,dc=com" //*****位置:写自己的域名(这个域名真假 无所 谓, 不过尽量与老的LDAP一致
rootdn "cn=root,dc=******,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 {SSHA}erQRRrDndu3SUmuERooja3yxLza4h06V ///加密的密码,铭 ///文也行
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /data/software/openldap-2.4.49/var/openldap-data //数据存放位置
# Indices to maintain
index objectClass eq //默认
overlay ppolicy //覆盖(ppolicy需要加的配置以下)
ppolicy_default cn=passwordDefault,ou=Policies,dc=********,dc=com
ppolicy_hash_cleartext
ppolicy_use_lockout
创建数据库目录
mkdir slapd.d
启动守护进程sladp
1.(简单理解-f 指定启动的配置文件所在位置,-F 将数据导入位置[数据会变成这个格式存储cn=config cn=config.ldif] 目前不知道为什么这样做)
2.(如何不加-F数据保存到配置文件所写的位置:directory /data/software/openldap-2.4.49/var/openldap-data)
3.如果执行这一步报错,根据报错信息判断,通过yum下载相关配置程序(经过好多次失败才明白,一开始以为配置错误)
/data/software/openldap/libexec/slapd -f /data/software/openldap/etc/openldap/slapd.conf -F /data/software/openldap/etc/slapd.d/
如果修改了配置文件:
配置文件修改后操作(slapd.conf)
slaptest -f /data/software/openldap/etc/openldap/slapd.conf -F /data/software/openldap/etc/slapd.d/
启动守护进程:
启动方式
/data/software/openldap/libexec/slapd
安全的停止:
kill -INT PID
检测服务是否正确配置和运行 ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
查看目录中的子目录 ldapsearch -x -b 'dc=********,dc=com' '(objectclass=*)'清空所有条目:-w 密码 ldapdelete -x -D "cn=root,dc=********,dc=com" -w ****** -r "dc=*******,dc=com"
备份老LDAP数据
(这个地方网上给出了很多方式,如下)
1.slapcat > ldapdbak.ldif ///这个方法会将老服务器上的一些不重要的信息也备份进去,根据查找发现有网友给出了过滤的解决办法(牛),
#cat openldap-backup.synax
/^creatorsName: /d
/^modifyTimestamp: /d
/^structuralObjectClass: /d
/^modifiersName: /d
/^createTimestamp: /d
/^entryUUID: /d
/^entryCSN: /d
#随后采用
cat ldapdbak.ldif | sed -f openldap-backup.synax > openldap-complete.ldif
#随后导入即可:
slapadd -l openldap-complete.ldif ///每次执行到这一步都错,就是因为没有配置密码策 ///略,原来的LDAP存在,新的没有配置
#####################################################################
还有通过ldapsearch等备份还原的,这个适用于单条单条的信息导入,很麻烦这里不采用。
当然还有更好的办法,那就是,安装完毕后不要再去管openLDAP了,我们一起去配置LDAP Account Manager。他有各种方便的好看的方式提供备份和还原,还能直接将错误的数据删除!!!!。对于openLDAP命令不感冒的同学可以采用这个方式,简单方便好用。
官方文档:INSTALL LDAP Account Manager
https://www.ldap-account-manager.org/lamcms/
下载tar包:选择自己想要的版本,这里我选择7.1 ,老的是6.5
https://www.ldap-account-manager.org/lamcms/releases
所需环境
php7+php-fpm+nginx (以前用的是apache)(用户我采用的是php用户,自己创建,要统一)
tar xjf ldap-account-manager-
.tar.bz2 ./configure --with-httpd-user=php --with-httpd-group=php --with-web-root=/data/software/ldap-account-manager
make install (我当时还在想为啥没有make ,真不需要有!!参考官方大大走)
配置nginx:
(1.官方给出的是访问http://*****/lam,我配置的是直接访问域名)
(2.我采用的php是ip+port,官方给的是fastcgi_pass unix:/var/run/php5-fpm.sock;)
server {
listen 80;
server_name *******;
access_log /data/logs/nginx/access_lam.log json; //这个是我在nginx.conf配置 //的,大家根据自己状况去配置,不采用不影响。
charset UTF-8;
location / {
index index.html;
root /data/software/ldap-account-manager; //存放位置
autoindex off;
location ~ \.php$ { //php模块配置,不要忘了启动php-fpm
//这里没有采用sock,使用的是ip+port
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass 127.0.0.1:9000; ///ip+port(这里不是官方的)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $request_filename;
include fastcgi_params;
}
location ~ ^/(tmp/internal|sess|config|lib|help|locale) { //不去访问这些位置
deny all;
return 403;
}
}
}
启动nginx,大家就可以通过自己配置的server name 访问我们的LDAP Account Manager了。
刚开始的模版配置有很多,这里不过讲解,我们只说备份还原!!!:
老的LDAP Account Manager 进入选择:export
1.填写自己最顶级的DN:*******
2.选择第三个,备份所有子目录 Sub
3.点击保存为文件 save as file
4.导出.ldif文件 ///我们可以在这里选择是否备份带有系统信息的数据!!! //这个文件是可以手动导入的在终 ///端,当然也可以通过新的LDAP Account Manager进行import
新的LDAP Account Manager导入:
按照步骤走即可!!!!!!
到这里就ok了,第一次写文章,如有不足之处请大家指点留言,希望以后能够坚持写下去,给自己培养一个梳理的好习惯!!