1 安装环境
OS: Centos 7.5
OpenLDAP: 2.4.44
Phpldapadmin: 1.2.3
主1:192.168.0.130
主2:192.168.0.10
2 安装OpenLDAP(主1)
2.1 Yum命令安装
1 | yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-devel |
2.2 安装包说明
2.3 配置方式
说明
这里就是重点中的重点了,从openldap2.4.23
版本开始,所有配置说句都保存在slapd.d
目录下的cn=config
文件夹内,不再使用slapd.conf
作为配置文件。配置文件的后缀为ldif
,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify
命令进行修改 # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify
.
有两种配置方式,一种是通过修改旧版配置文件slapd.conf,再用slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
导入到数据库中,这种方式非常麻烦,不建议使用。
一种是通过编辑ldif
文件,再用ldapadd
命令导入到数据库中,这种方式是动态配置,不需要重新启动服务端slapd进程。
2.4 查看安装版本
1 | slapd -VV |
2.5 启动OpenLDAP
1 | # 复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生产密码时会报错 |
2.6 设置管理员密码
安装openldap后,会有三个命令用于修改配置文件,分别为ldapadd
,ldapmodify
, ldapdelete
,顾名思义就是添加
,修改
和删除
。而需要修改或增加配置时,则需要先写一个ldif
后缀的配置文件,然后通过命令将写的配置更新到slapd.d
目录下的配置文件中去,完整的配置过程如下,跟着我做就可以了:
1 | # 生成管理员密码,记录下这个密码,后面需要用到 |
1 | ---------------------------------------------------------------------- |
这里解释一下这个文件的内容:
第一行执行配置文件,这里就表示指定为 cn=config/olcDatabase={0}config
文件。你到/etc/openldap/slapd.d/
目录下就能找到此文件
第二行 changetype
指定类型为修改
第三行 add
表示添加 olcRootPW
配置项
第四行指定 olcRootPW
配置项的值
#在执行下面的命令前,你可以先查看原本的olcDatabase={0}config
文件,里面是没有olcRootPW
这个项的,执行命令后,你再看就会新增了olcRootPW
项,而且内容是我们文件中指定的值加密后的字符串
#执行命令,修改ldap配置,通过-f执行文件ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif
执行修改命令后,有如下输出则为正常:
查看slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif
内容,新增了一个olcRootPW
项。
上面就是一个完整的修改配置的过程,切记不能直接修改/etc/openldap/slapd.d/
目录下的配置。
2.7 导入Schema
1 | # 我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入, |
2.8 修改域名
#修改域名,新增changedomain.ldif
, 这里我自定义的域名为 zhjx.com
,管理员用户账号为admin
。
#如果要修改,则修改文件中相应的dc=zhjx,dc=com
为自己的域名
1 | vim changedomain.ldif |
1 | ------------------------------------------------------------------------- |
#执行命令,修改配置1
ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif
空白行检测有没有空格,否则报错
2.9 启用memberof功能
#新增add-memberof.ldif
,
#开启memberof
支持并新增用户支持memberof
配置
vim add-memberof.ldif1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22-------------------------------------------------------------
[root@LDAP zidingyi.conf]# vim add-memberof.ldif
dn: cn=module{0},cn=config
cn: modulle{0}
objectClass: olcModuleList
objectclass: top
olcModuleload: memberof.la
olcModulePath: /usr/lib64/openldap
dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf
-------------------------------------------------------------
1 |
|
1 | # 新增refint2.ldif文件 |
#依次执行下面命令,加载配置,顺序不能错
1 | ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif |
2.10 创建组织及admin组织角色
到此,配置修改完了,在上述基础上,我们来创建一个叫做 zhjx 的组织,并在其下创建一个 admin 的组织角色(该组织角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元:
#新增配置文件
1 | vim zhjx.ldif |
1 | ---------------------------------------------------------- |
#执行命令,添加配置, 这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码
1 | ldapadd -x -D cn=admin,dc=yaobili,dc=com -W -f zhjx.ldif |
通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dc=zhjx,dc=com
是该树的根节点,其下有一个管理域 cn=admin,dc=zhjx,dc=com
和两个组织单元 ou=People,dc=zhjx,dc=com
及 ou=Group,dc=zhjx,dc=com
。
2.11 关闭匿名访问
在以下两个文件添加如下属性1
2
3
4/etc/openldap/cn=config/cn=config.ldif
添加:
olcDisallows: bind_anon
olcRequires: authc
1 | /etc/openldap/cn=config/olcDatabase={-1}frontend.ldif |
新建disabled_anon.ldif,
1 | vim disabled_anon.ldif |
1 | ------------------------------------ |
1 | ldapadd -Y EXTERNAL -H ldapi:/// -f zidingyi/disabled_anon.ldif |
2.12 安装phpldapadmin
ldap装好后,下面安装web界面phpldapadmin。
1 | # yum安装时,会自动安装apache和php的依赖。 |
修改apache配置
1 | # 修改apache的phpldapadmin配置文件 |
修改phpldapadmin配置
1 | # 修改配置用DN登录ldap |
启动apache
1 | systemctl start httpd |
3 主2安装
配置主2服务,安装过程参考 2.1——2.8步骤。参考2.12安装phpldapadmin
3.1 管理员密码信息
1 | [root@localhost ~]# slappasswd |
4 配置双主同步
4.1 配置双主复制,在主1和主2上执行下面的步骤
4.1.1 添加syncprov模块
4.1.1.1 mod_syncprov.ldif
1 | [root@test1] ~/ldif$ vim mod_syncprov.ldif |
4.1.1.2 syncprov.ldif
1 | [root@test1] ~/ldif$ vim syncprov.ldif |
4.2 在主1和主2上执行下面的步骤,但是注意需要替换olcServerID和provider的值
4.2.1 主1 master01.ldif模块配置
1 | [root@test1] ~/ldif$ vim master01.ldif |
4.2.2 主2 master02.ldif模块配置
参考主1 master01.ldif模块配置,修改相应参数.
4.3 重启服务
主1和主2重启openLDAP服务,重启后生效
1 | systemctl restart slapd |
此时,配置成功,在任意节点添加/删除/修改都能实时同步。
4.4 LDAP高可用
4.4.1 安装keepalived,分别在主1/主2上安装,配置
通过VIP地址实现LDAP高可用1
yum install keepalived.x86_64
4.4.2 修改配置文件
1 | vim /etc/keepalived/keepalived.conf |
4.4.2.1 主1配置
1 | global_defs { |
4.4.2.2 主2配置
1 | global_defs { |
4.4.3 重启服务
1 | systemctl restart keepalived.service |
4.4.3.1 测试VIP
1) ip a 命令查看IP
2) 关闭主1 keepalived服务,查看ip,当主1失去连接,vip转移到主2节点
配置成功。
5 pholdapadmin使用
5.1 创建组
类似部门分组,没有gid.
5.2 创建角色组
举例:在jenkins组里面创建jenkins-admin角色组,拥有gid,主要用于与其他平台对接,根据不同gid内的用户,区分权限
建组时没有添加用户,后期添加,需要添加memberUid属性后添加用户
5.3 创建用户
用户统一放到ou=People,dc=zhjx,dc=com下