OpenLDAP 内容概述与yum安装部署

1.本章内容概述

我们主要以centos7.5 为基础系统进行讲解,包括服务端的安装以及客户端,centos6系列的没有涉及,如
果您需要在centos6上进行安装客户端,得需要您自行研究了。

目前主要安装方式有两种,一种是通过源码编译安装,一种是在线rpm安装,两种都有优缺点。

1.1 源码编译安装:
1.2 在线rpm安装:

后面会以yum 安装为主。

1.3 常用的属性名如下:

openlda:                                           OpenLDAP服务端和客户端用的库文件
openldap-servers:                         服务端程序
openldap-clients:                          客户端程序
openldap-devel:                            开发包,可选
openldap-servers-sql:                 支持sql模块,可选
migrationtools:                              实现OpenLDAP用户及用户组的添加,导入系统账户,可选
compat-openldap:                        OpenLDAP 兼容性库

2. 初始化准备,配置yum源

yum -y install wget
mkdir /etc/yum.repos.d.bak
/bin/mv  /etc/yum.repos.d/* /etc/yum.repos.d.bak
wget -O /etc/yum.repos.d/aliyun-centos7-base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/aliyun-centos7-epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum clean all
yum makecache

3.安装OpenLDAP

yum -y install openldap \
compat-openldap \
openldap-clients \
openldap-servers \
openldap-servers-sql \
openldap-devel migrationtools \
yum clean all && yum makecache

查看OpenLDAP版本,使用如下命令:

slapd -VV

查看OpenLDAP版本

4.配置OpenLDAP

OpenLDAP安装完毕后,接下来我们开始配置OpenLDAP,OpenLDAP配置比较复杂牵涉到的内容比较多,接下来我们一步一步对其相关的配置进行介绍。
注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。

生成openldap的管理加密密钥,稍后添加到 slapd.conf 文件中

slappasswd -s fooher.com
Re-enter new password: 
{SSHA}0yaWMzjeuDBghcqsp2kg6xA+AfAG6SSQ

复制 slapd.ldif 到 /etc/openldap 下面

/bin/cp /usr/share/openldap-servers/slapd.ldif /etc/openldap

在第83行左右 corba.ldif 下面添加以下内容:

vim /etc/openldap/slapd.ldif
include: file:///etc/openldap/schema/collective.ldif
include: file:///etc/openldap/schema/corba.ldif
include: file:///etc/openldap/schema/cosine.ldif
include: file:///etc/openldap/schema/duaconf.ldif
include: file:///etc/openldap/schema/dyngroup.ldif
include: file:///etc/openldap/schema/inetorgperson.ldif
include: file:///etc/openldap/schema/java.ldif
include: file:///etc/openldap/schema/misc.ldif
include: file:///etc/openldap/schema/nis.ldif
include: file:///etc/openldap/schema/openldap.ldif
include: file:///etc/openldap/schema/pmi.ldif
include: file:///etc/openldap/schema/ppolicy.ldif

或者使用下面命令 83行 在 include: file:///etc/openldap/schema/core.ldif 下面添加 以下内容
这条命令有点长 小技巧: 从左到右选中 "sed -i" 然后按键盘上的 "Shift+End" 就会全部选中这整条命令

sed -i '/^include: .*/a include: file:///etc/openldap/schema/collective.ldif\ninclude: file:///etc/openldap/schema/corba.ldif\ninclude: file:///etc/openldap/schema/cosine.ldif\ninclude: file:///etc/openldap/schema/duaconf.ldif\ninclude: file:///etc/openldap/schema/dyngroup.ldif\ninclude: file:///etc/openldap/schema/inetorgperson.ldif\ninclude: file:///etc/openldap/schema/java.ldif\ninclude: file:///etc/openldap/schema/misc.ldif\ninclude: file:///etc/openldap/schema/nis.ldif\ninclude: file:///etc/openldap/schema/openldap.ldif\ninclude: file:///etc/openldap/schema/pmi.ldif\ninclude: file:///etc/openldap/schema/ppolicy.ldif' /etc/openldap/slapd.ldif
egrep -v "#|^$" /etc/openldap/slapd.ldif

5.或者使用 Schemas 命令导入

ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/ppolicy.ldif

6. 修改 slapd.ldif文件 Server status monitoring 下面相关内容,在139行

olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,c
 n=auth" read by dn.base="cn=fooheradmin,dc=fooher,dc=com" read by * none

7. 修改 Backend database definitions 下面为以下内容,在157行

olcSuffix: dc=fooher,dc=com
olcRootDN: cn=fooheradmin,dc=fooher,dc=com
olcRootPW: {SSHA}0yaWMzjeuDBghcqsp2kg6xA+AfAG6SSQ
sed -i "s/cn=Manager,dc=my-domain,dc=com/cn=fooheradmin,dc=fooher,dc=com/" /etc/openldap/slapd.ldif
sed -i "s/dc=my-domain,dc=com/dc=fooher,dc=com/" /etc/openldap/slapd.ldif
sed -i "/^olcRootDN: .*/a olcRootPW: {SSHA}0yaWMzjeuDBghcqsp2kg6xA+AfAG6SSQ" /etc/openldap/slapd.ldif

8. 查看配置文件目录

cd /etc/openldap
tree slapd.d/
slapd.d/
├── cn=config
│   ├── cn=schema
│   │   └── cn={0}core.ldif
│   ├── cn=schema.ldif
│   ├── olcDatabase={0}config.ldif
│   ├── olcDatabase={-1}frontend.ldif
│   ├── olcDatabase={1}monitor.ldif
│   └── olcDatabase={2}hdb.ldif
└── cn=config.ldif

9. 备份配置文件

/bin/mv slapd.d slapd.d.bak
mkdir -p slapd.d

10. 将该目录授权给ldap用户

chown -R ldap:ldap /etc/openldap/slapd.d

11. 初始化生成配置文件

cd  /etc/openldap/
slapadd -n 0 -F slapd.d -l slapd.ldif
_###############       79.86% eta   none elapsed            none spd   1.0 M/s
Closing DB...

12. 复制数据库配置文件到数据库目录里

/bin/cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

13. 配置数据库目录权限

chown -R ldap:ldap /var/lib/ldap  /etc/openldap/slapd.d

14. 启动slapd服务区

systemctl start slapd

15. slapd服务状态

systemctl status slapd

16. 开机启动slapd

systemctl enable slapd

17. 查看启动端口

ss -tunlp|grep 389

18. 配置基本域修改为下面值,在第71 74 90 96 100 行

/bin/cp /usr/share/migrationtools/migrate_common.ph{,_bak}
vim /usr/share/migrationtools/migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "ldap.fooher.com";
$DEFAULT_BASE = "dc=fooher,dc=com";
$EXTENDED_SCHEMA = 1;

19. 生成ldif文件

mkdir -p /etc/openldap/ldif
/usr/share/migrationtools/migrate_base.pl > /etc/openldap/ldif/basedomain.ldif

20. 导入数据

ldapadd -x -D cn=fooheradmin,dc=fooher,dc=com -W -f /etc/openldap/ldif/basedomain.ldif

21. 使用工具LdapAdmin管理添加一个连接如图

OpenLDAP LdapAdmin

22. 然后我们全部删除手动建一个

OpenLDAP LdapAdmin
OpenLDAP LdapAdmin

sudo tee /etc/openldap/ldif/config_init.ldif << EOF
dn: dc=fooher,dc=com
objectclass: dcObject
objectclass: organization
o: https://www.fooher.com
dc: fooher
EOF

23. 导入数据

ldapadd -x -D "cn=fooheradmin,dc=fooher,dc=com" -W -f /etc/openldap/ldif/config_init.ldif
Enter LDAP Password:
adding new entry "dc=fooher,dc=com"

24. 查询所有 objectClass=*

ldapsearch -x -b 'dc=fooher,dc=com' '(objectClass=*)'
ldapsearch -H ldapi:/// -Y EXTERNAL -b "cn=config" -LLL –Q
ldapsearch -x -b "dc=fooher,dc=com" -H ldap://127.0.0.1