文章目录
- 一、背景
- 二、正文
- 2.1 openldap服务端必要软件安装
- 2.1.1使用yum命令安装
- 2.1.2安装libdb相关依赖
- 2.1.3复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生成密码时会报错
- 2.1.4授权给ldap用户,此用户yum安装时便会自动创建
- 2.1.5启动ldap server服务,先启动服务,配置后面再进行修改
- 2.1.6查看状态,正常启动则ok
- 2.1.7查看版本
- 2.2 修改openldap配置
- 2.2.1生成管理员密码,记录下这个密码,后面需要用到
- 2.2.2新增修改密码文件,ldif为后缀
- 2.2.3执行命令,修改ldap配置,通过-f 执行文件
- 2.2.4执行修改命令后,有如下输出则为正常:
- 2.2.5导入基本schema (具体配置请参考附件文件)
- 2.2.6修改域名
- 2.2.7执行命令,修改配置
- 2.2.8启用memberof功能
- 2.2.9创建node3组织
- 2.2.10创建新用户和新用户组的ldif文件
- 2.3 OpenLDAP客户端安装
- 2.3.1OpenLDAP客户端安装必要软件
- 2.3.2OpenLDAP客户端NSS服务配置
- 2.3.3OpenLDAP客户端SSSD服务配置
- 2.3.4OpenLDAP与SSH集成
- 2.3.5验证SSH登录
- 2.3.6验证ldap
- 2.4OpenLDAP开启日志
- 三、安装途中可能碰到的报错
- 错误场景1:执行步骤“安装openldap”途中碰到的错误,即执行命令:`systemctl start slapd`报错
- 错误场景2:执行步骤“安装openldap”途中碰到的错误,即执行命令:`systemctl start slapd`报错
- 错误场景3:执行“修改openldap配置”报错
- 四、注意点
- 五、卸载openldap
- 本人其他相关文章链接
一、背景
亲测可用,之前搜索了很多博客,啥样的都有,就是不介绍报错以及配置用处,根本不懂照抄那些配置是干啥的,稀里糊涂的按照博客搭完也跑不起来,因此记录这个。
项目背景
:公司项目当前采用http协议+shiro+mysql的登录认证方式,而现在想支持ldap协议认证登录然后能够访问自己公司的项目网站。
举例说明
:假设我们公司有自己的门户网站,现在我们收购了一家公司,他们数据库采用ldap存储用户数据,那么为了他们账户能登陆我们公司项目所以需要集成,而不是再把他们的账户重新在mysql再创建一遍,万一人家有1W个账户呢,不累死了且也不现实啊。
需要安装openldap+kerberos,且ldap和kerberos安装在同一台服务器上,当前版本如下:
centos 7.9
openldap 2.4.44
phpldapadmin 1.2.5
服务器IP:10.110.38.162
Kerberos :Kerberos 5 release 1.15.1
本博客参考的博客是:
- ① Openldap安装部署
- ② Kerberos基本原理、安装部署及用法
- ③ Openldap集成Kerberos
注意
:这个文章是真实可行的,但是有执行顺序,一定要先安装“Openldap安装部署”+“Kerberos基本原理、安装部署及用法”之后,确保安装无误后再去安装“Openldap集成Kerberos”。
我当时犯的毛病就是前两个没完全照着文档安装完成就直接安装的第三个,然后出现各种问题,我还不知道为点啥。人家博客都说了要先安装前两个,再看这个“Kerberos基本原理、安装部署及用法”。所以一定要注意安装顺序,遇到不懂得配置也没事先照着安。
二、正文
2.1 openldap服务端必要软件安装
2.1.1使用yum命令安装
2.1.2安装libdb相关依赖
2.1.3复制一个默认配置到指定目录下,并授权,这一步一定要做,然后再启动服务,不然生成密码时会报错
2.1.4授权给ldap用户,此用户yum安装时便会自动创建
2.1.5启动ldap server服务,先启动服务,配置后面再进行修改
2.1.6查看状态,正常启动则ok
2.1.7查看版本
2.2 修改openldap配置
这里就是重点中的重点了,从openldap2.4.23版本开始,所有配置都保存在/etc/openldap/slapd.d目录下的cn=config文件夹内,不再使用slapd.conf作为配置文件
。配置文件的后缀为 ldif,且每个配置文件都是通过命令自动生成的,任意打开一个配置文件,在开头都会有一行注释,说明此为自动生成的文件,请勿编辑,使用ldapmodify命令进行修改。
安装openldap后,会有三个命令用于修改配置文件,分别为ldapadd, ldapmodify, ldapdelete,顾名思义就是添加,修改和删除
。而需要修改或增加配置时,则需要先写一个ldif后缀的配置文件,然后通过命令将写的配置更新到slapd.d目录下的配置文件中去,完整的配置过程如下,跟着我做就可以了:
2.2.1生成管理员密码,记录下这个密码,后面需要用到
2.2.2新增修改密码文件,ldif为后缀
不要在/etc/openldap/slapd.d目录下创建类似文件
,生成的文件为需要通过命令去动态修改ldap现有配置,如下,在用户目录~下,创建文件 (具体配置请参考附件文件)
这里解释一下这个文件的内容:
- 第一行执行配置文件,这里就表示指定为 cn=config/olcDatabase={0}config 文件。你到/etc/openldap/slapd.d/目录下就能找到此文件
- 第二行 changetype 指定类型为修改
- 第三行 add 表示添加 olcRootPW 配置项
- 第四行指定 olcRootPW 配置项的值
在执行下面的命令前,你可以先查看原本的olcDatabase={0}config文件,里面是没有olcRootPW这个项的,执行命令后,你再看就会新增了olcRootPW项,而且内容是我们文件中指定的值加密后的字符串。
2.2.3执行命令,修改ldap配置,通过-f 执行文件
2.2.4执行修改命令后,有如下输出则为正常:
查看olcDatabase={0}config内容,cat /etc/openldap/slapd.d/cn=config/olcDatabase={0}config.ldif,新增了一个olcRootPW项
上面就是一个完整的修改配置的过程,切记不能直接修改/etc/openldap/slapd.d/目录下的配置。
好了,下面继续进行配置:
2.2.5导入基本schema (具体配置请参考附件文件)
我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性,可以自行选择需要的进行导入,依次执行下面的命令,导入基础的一些配置,我这里将所有的都导入一下,其中core.ldif是默认已经加载了的,不用导入。
2.2.6修改域名
修改域名,新增changedomain.ldif,这里自定义的域名为node1.com,管理员用户账号为admin。如果要修改,则修改文件中相应的dc=node3.com,dc=com为自己的域名。(具体配置请参考附件文件)
2.2.7执行命令,修改配置
最后这里有5个修改,所以执行会输出5行表示成功
2.2.8启用memberof功能
新增add-memberof.ldif,#开启memberof支持并新增用户支持memberof配置(具体配置请参考附件文件)
新增add-memberof.ldif
新增refint1.ldif文件
新增refint2.ldif文件
依次执行下面命令,加载配置,顺序不能错
到此,配置修改完了,在上述基础上,我们来创建一个组织,并在其下创建一个 admin 的组织角色(该组织角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元
。`
2.2.9创建node3组织
执行命令,添加配置,这里要注意修改域名为自己配置的域名,然后需要输入上面我们生成的密码
添加结果为:(密码:123456即1.1配置的密码)
通过以上的所有步骤,我们就设置好了一个LDAP目录树:其中基准dc=node3,dc=com是该树的跟节点,其下有一个管理域cn=admin,dc=node3,dc=com和一个组织单元dc=hdp,dc=node3,dc=com, 其下有两个子属性ou=People,dc=hdp,dc=node3,dc=com及ou=Group,dc=hdp,dc=node3,dc=com。
2.2.10创建新用户和新用户组的ldif文件
先生成一个密码123456:
创建新用户的ldif文件(具体配置请参考附件文件)
向openldap服务端添加新用户testldap
为该用户修改密码为123456命令为:
注意
:
- ldap://10.110.38.162:389为openldap的服务端ip加端口;
- cn=admin,dc=node3,dc=com为openldap上面设置的管理者节点;
- uid=testldap,ou=People,dc=hdp,dc=node3,dc=com为用户id;
- 123456为修改指定的用户密码。
2.3 OpenLDAP客户端安装
2.3.1OpenLDAP客户端安装必要软件
2.3.2OpenLDAP客户端NSS服务配置
- 修改/etc/nslcd.conf (具体配置请参考附件文件)
- 启动服务并设置开机自启动
- 配置/etc/nsswitch.conf
- 测试是否可用
2.3.3OpenLDAP客户端SSSD服务配置
- 修改/etc/sssd/sssd.conf文件,在执行authconfig命令时默认生成,如果文件不存在则新建
- 修改sssd.conf文件权限
- 启动sssd服务并加入系统自启动
2.3.4OpenLDAP与SSH集成
- 修改配置文件/etc/ssh/sshd_config,是ssh通过pam认证账号
注意:默认使用的是密码认证方式,在集成SSH登录时需要确保PasswordAuthentication yes配置为yes。
- 修改配置文件/etc/pam.d/sshd,以确认调用pam认证文件
- 修改配置文件/etc/pam.d/password-auth
- 修改配置文件/etc/pam.d/system-auth配置文件
- 重启ssh、sssd和nslcd
到此为止就完成了OpenLDAP与SSH的集成。
2.3.5验证SSH登录
随便登录一台机器,此处全部以一台服务器为例
- 确认testldap用户只存在于OpenLDAP
- su切换至testldap用户
- 配置host,修改/etc/host配置文件
4.ssh登录
2.3.6验证ldap
查询所有用户及用户组:
2.4OpenLDAP开启日志
必须先创建日志文件,并调整权限,再修改rsyslog.conf
重启使其生效
三、安装途中可能碰到的报错
错误场景1 和错误场景2 可查看该博客解决:OpenLdap异常操作后无法启动
错误场景1:执行步骤“安装openldap”途中碰到的错误,即执行命令:systemctl start slapd
报错
详细报错信息
错误原因
:这种报错代表:OpenLdap异常操作后无法启动,如果是第一次安装没事且不会有这个报错,而我是之前在这个环境反复尝试过,可能导致的问题。
解决方案
:依次执行如下命令即可:
slapd -d 2 -F /etc/openldap/slapd.d/ -u ldap
mkdir -p /etc/openldap/certs
bash /usr/libexec/openldap/create-certdb.sh
bash /usr/libexec/openldap/generate-server-cert.sh
systemctl start slapd
启动成功后的效果如图:
错误场景2:执行步骤“安装openldap”途中碰到的错误,即执行命令:systemctl start slapd
报错
详细报错信息
错误原因
:这种报错是日志相关服务的报错
解决方案
:删除/var/lib/rsyslog/imjournal.state文件后重启rsyslog服务
错误场景1和错误场景2 究竟哪里不一样?
可以用对比工具查看,如图,红框处就是区别点,请想起查看自己的报错原因就针对性修改。
错误场景3:执行“修改openldap配置”报错
这块会编写很多文件,再执行相关ldapadd 、ldapmodify等等命令时会报错,如图
详细错误:
错误原因2处:
- 第一处冒号:后有空格;
- 第二处换行那里有空格。
你直接复制的文件内容,拷贝后的你的K:V 的冒号“:”后面会有空格
解决方案:删除2处所有多余空格即可。
举例说明:这是刚执行vim 命令后复制粘贴后的效果,首先颜色不一样,其次冒号:后面是有空格的。
而当你把冒号:后面空格删除后的效果长这样,明显红色变白色了,说明空格删没了。
其次说换行那里也有空格,不能直接执行dd命令删除,否则也无效;请看当我点击一下删除键,按常理应该顶格才对,因为我删除的一个空白行啊,但是实际效果是不对齐,说明除了有个空白行外还有个多余的空格。
正确做法:应该是移动鼠标到dn字母处然后执行“退格Backspace”进行删除,当顶格后再按回车键进行换行就可以了。正确效果长这样:
四、注意点
注意点:
- 注意点1:不可直接vim命令修改服务器文件,因为不生效
- 注意点2:生成的密码实际要修改2个文件,如果有遗漏,后面登录可能无法认证成功。
- 注意点3:在执行2.2修改openldap配置的时候,如果你想更改dc域名,请把如下红框的全部更改,少改了会无效。
五、卸载openldap
1、停止openldap
2、卸载
3.删除残留文件
4.删除ldap用户
5.删除openldap目录