一、基础设置
1.1 环境说明
| 1 | Centos 7.5 | 
1.2 关闭防火墙和selinux
| 1 | setenforce 0 | 
1.3 更新yum源
| 1 | wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/Centos-7.repo | 
二、安装 OpenLDAP
2.1 安装openldap
| 1 | yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools | 
查看版本:slapd -VV
2.2 生成管理员密码
| 1 | slappasswd -s Admin123 | 
管理员密码为:Admin123,下面是对密码进行加密后的字符串。
2.3 修改olcDatabase={2}hdb.ldif文件
从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件
| 1 | vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif | 
注意:其中cn=admin中的admin表示OpenLDAP管理员的用户名,而olcRootPW表示OpenLDAP管理员的密码。
2.4 修改olcDatabase={1}monitor.ldif文件
| 1 | vim /etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif | 
2.5 验证配置
slaptest -u
| 1 | 5d24c09b ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif" | 
2.6 启动 OpenLDAP
| 1 | systemctl start slapd | 
启动后监听 389 端口
三、配置 OpenLDAP
3.1 配置OpenLDAP数据库
OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置OpenLDAP数据库,使用如下命令:
| 1 | cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG | 
注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。
3.2 导入基本Schema
| 1 | ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif | 
3.3 修改migrate_common.ph文件
migrate_common.ph文件主要是用于生成ldif文件使用。
| 1 | vim /usr/share/migrationtools/migrate_common.ph | 
到此OpenLDAP的配置就已经全部完毕。
四、添加用户和组
默认情况下OpenLDAP是没有普通用户的,只有一个管理员用户;管理用户就是前面配置的 cn=admin,dc=wmqe,dc=com 。
4.1 创建用户和组
现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:
| 1 | groupadd ldapgroup1 | 
4.2 写入到文件
把刚刚添加的用户和用户组属性信息提取出来
| 1 | grep "ldapuser" /etc/passwd > /root/users | 
4.3 生成ldif文件
上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif
| 1 | /usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif | 
注意:后续如果要新加用户到OpenLDAP中的话,我们可以直接修改users.ldif文件即可,或者采用后续需要安装的phpLDAPadmin工具添加。
4.4 新建基础数据库ldif文件
vim /root/base.ldif
| 1 | dn: dc=wmqe,dc=com | 
注意格式:ldif 文件以空行作为用户分割,格式要保持一致。
4.5 导入账号信息到OpenLDAP数据库
1)导入基础数据库
| 1 | ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/base.ldif | 
2)导入用户信息
| 1 | ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/users.ldif | 
3)导入用户组信息
| 1 | ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/groups.ldif | 
同时查看BerkeleyDB数据库文件中多了cn.bdb、sn.bdb、ou.bdb等数据库文件
| 1 | ll /var/lib/ldap/ | 
4.6 用户加入到用户组
目前OpenLDAP用户和用户组之间是没有任何关联的,需要新建添加用户到用户组的ldif文件。
示例:把ldapuser1用户加入到ldapgroup1用户组。
1)新建文件
| 1 | cat > add_user_to_groups.ldif << EOF | 
2)添加
| 1 | ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/add_user_to_groups.ldif | 
3)查看
| 1 | ldapsearch -LLL -x -w Admin123 -D 'cn=admin,dc=wmqe,dc=com' -b 'dc=wmqe,dc=com' cn='ldapgroup1' | 
到这里,基本功能已经配置完成,可以通过phpLDAPadmin进程访问连接。
五、其他功能配置
5.1 开启日志功能
默认情况下OpenLDAP是没有启用日志记录功能的,但是在实际使用过程中,我们为了定位问题需要使用到OpenLDAP日志。
1)新建日志配置ldif文件:
| 1 | cat > /root/loglevel.ldif << EOF | 
2)导入到OpenLDAP中
| 1 | ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif | 
3)重启OpenLDAP服务
| 1 | systemctl restart slapd | 
4)修改rsyslog配置文件
| 1 | cat >> /etc/rsyslog.conf << EOF | 
5)并重启rsyslog服务
| 1 | systemctl restart rsyslog | 
6)查看OpenLDAP日志
| 1 | tail -f /var/log/slapd.log | 
现在查看会提示文件不存在,需要对ldap进行操作后可以看到有日志输出。
5.2 配置SSL
通过网络访问 OpenLDAP 服务器,明文传输这些数据存在被他人嗅探的风险。本节设置 LDAP 服务器与客户端之间的 SSL 连接以加密传输数据。
参考:https://docs.oracle.com/cd/E52668_01/E54669/html/ol7-s9-auth.html
1)停止服务
| 1 | systemctl stop slapd | 
2)开启SSL
| 1 | vim /etc/sysconfig/slapd | 
3)启动服务
| 1 | systemctl start slapd | 
4)查看已监听 636 端口
| 1 | netstat -tulnp | 
后续对接可以采用加密方式连接:ldaps://192.168.159.130:636。
启动服务报错解决:
| 1 | 报错:unable to open file “/var/run/openldap/slapd.args”: 13 (Permission denied) | 
因为异常结束了服务进程,导致有文件残留,需要手动创建并赋予777权限,后续正常关闭服务这两个文件都会自动被删除。
5.3 禁用匿名访问
参考:https://www.ilanni.com/?p=14035
默认openldap在匿名情况下是可以被访问的,而且openldap的相关信息,除了用户的密码信息之外,其他openldap的信息完全被呈现出来。
1)新建文件
| 1 | cat > /root/disable_anon.ldif << EOF | 
2)导入文件
| 1 | ldapadd -Y EXTERNAL -H ldapi:/// -f /root/disable_anon.ldif | 
不用重启服务即可生效
六、安装 phpLDAPadmin
6.1 安装Apache PHP
| 1 | yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml | 
6.2 安装 phpldapadmin
| 1 | yum --enablerepo=epel -y install phpldapadmin | 
6.3 修改phpldapadmin配置文件
| 1 | vim /etc/phpldapadmin/config.php | 
phpldapadmin默认使用的是uid方式进行登录,改为dn认证。
6.4 修改httpd配置文件
修改httpd与phpldapadmin集成的配置文件,把httpd与phpldapadmin进行集成。
| 1 | vim /etc/httpd/conf.d/phpldapadmin.conf | 
将Require local 改为 Require all granted
6.5 启动httpd
| 1 | systemctl start httpd | 
监听80端口
访问:http://192.168.159.130/phpldapadmin,登入账号:cn=admin,dc=wmqe,dc=com, 密码:Admin123
登入后可以看到已经有之前创建的用户和组了
七、自助修改密码系统
7.1 安装Self Service Password
1)配置Self Service Password的yum仓库源
| 1 | cat >> /etc/yum.repos.d/ltb-project.repo << EOF | 
2)安装
| 1 | yum -y install self-service-password | 
查看下Self Service Password安装的文件,如下:
| 1 | rpm -ql self-service-password | 
看出被安装到 /usr/share/self-service-password 目录下,其中 config.inc.php 是 Self Service Password 的配置文件。
7.2 修改配置文件
1)修改apache配置文件
前面phpLDAPadmin采用apache,这里就不用再次安装了,直接修改配置文件就行。(也可以采用nginx)
| 1 | cp /etc/httpd/conf.d/self-service-password.conf /etc/httpd/conf.d/self-service-password.conf-bak | 
参考官网配置:https://ltb-project.org/documentation/self-service-password/1.2/config_apache
2)修改Self Service Password的配置文件
| 1 | vim /usr/share/self-service-password/conf/config.inc.php | 
参考官网配置:
配置ldap:https://ltb-project.org/documentation/self-service-password/1.2/config_ldap
配置邮箱:https://ltb-project.org/documentation/self-service-password/1.2/config_mail
7.3 重启httpd并访问
| 1 | systemctl restart httpd | 
浏览器访问:http://192.168.159.130/