一、基础设置

1.1 环境说明

Centos 7.5
openldap 2.4.

1.2 关闭防火墙和selinux

setenforce
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
systemctl stop firewalld.service && systemctl disable firewalld.service
firewall-cmd --state

1.3 更新yum源

wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/Centos-7.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
mv /etc/yum.repos.d/Centos-.repo /etc/yum.repos.d/CentOS-Base.repo
yum clean all
yum makecache

二、安装 OpenLDAP

2.1 安装openldap

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel migrationtools

查看版本:slapd -VV

2.2 生成管理员密码

slappasswd -s Admin123

{SSHA}qtkKhiajMDZpbAS9sS9K4TfnePglsVz4

管理员密码为:Admin123,下面是对密码进行加密后的字符串。

2.3 修改olcDatabase={2}hdb.ldif文件

从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件

vim /etc/openldap/slapd.d/cn=config/olcDatabase={}hdb.ldif

#修改
olcSuffix: dc=wmqe,dc=com
olcRootDN: cn=admin,dc=wmqe,dc=com
#添加
olcRootPW: {SSHA}qtkKhiajMDZpbAS9sS9K4TfnePglsVz4

注意:其中cn=admin中的admin表示OpenLDAP管理员的用户名,而olcRootPW表示OpenLDAP管理员的密码。

2.4 修改olcDatabase={1}monitor.ldif文件

vim /etc/openldap/slapd.d/cn=config/olcDatabase={}monitor.ldif

#修改管理员信息
olcAccess: {}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern
al,cn=auth" read by dn.base="cn=admin,dc=wmqe,dc=com" read by * none

2.5 验证配置

slaptest -u

5d24c09b ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"
5d24c09b ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"
config file testing succeeded

2.6 启动 OpenLDAP

systemctl start slapd
systemctl enable slapd
systemctl status slapd

启动后监听 389 端口

三、配置 OpenLDAP

3.1 配置OpenLDAP数据库

OpenLDAP默认使用的数据库是BerkeleyDB,现在来开始配置OpenLDAP数据库,使用如下命令:

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap -R /var/lib/ldap
chmod -R /var/lib/ldap
ll /var/lib/ldap/

注意:/var/lib/ldap/就是BerkeleyDB数据库默认存储的路径。

3.2 导入基本Schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

3.3 修改migrate_common.ph文件

migrate_common.ph文件主要是用于生成ldif文件使用。

vim /usr/share/migrationtools/migrate_common.ph

$DEFAULT_MAIL_DOMAIN = "wmqe.com";
$DEFAULT_BASE = "dc=wmqe,dc=com";
$EXTENDED_SCHEMA = ;
#重启
systemctl restart slapd

到此OpenLDAP的配置就已经全部完毕。

四、添加用户和组

默认情况下OpenLDAP是没有普通用户的,只有一个管理员用户;管理用户就是前面配置的 cn=admin,dc=wmqe,dc=com 。

4.1 创建用户和组

现在我们把系统中的用户,添加到OpenLDAP中。为了进行区分,我们现在新加两个用户ldapuser1和ldapuser2,和两个用户组ldapgroup1和ldapgroup2,如下:

groupadd ldapgroup1
groupadd ldapgroup2
useradd -g ldapgroup1 ldapuser1
useradd -g ldapgroup2 ldapuser2
passwd ldapuser1
passwd ldapuser2

4.2 写入到文件

把刚刚添加的用户和用户组属性信息提取出来

grep "ldapuser" /etc/passwd > /root/users
grep "ldapgroup" /etc/group > /root/groups

4.3 生成ldif文件

上述生成的用户和用户组属性,使用migrate_passwd.pl文件生成要添加用户和用户组的ldif

/usr/share/migrationtools/migrate_passwd.pl /root/users > /root/users.ldif
/usr/share/migrationtools/migrate_group.pl /root/groups > /root/groups.ldif
cat users.ldif
cat groups.ldif

注意:后续如果要新加用户到OpenLDAP中的话,我们可以直接修改users.ldif文件即可,或者采用后续需要安装的phpLDAPadmin工具添加。

4.4 新建基础数据库ldif文件

vim /root/base.ldif

dn: dc=wmqe,dc=com
o: wmqe com
dc: wmqe
objectClass: top
objectClass: dcObject
objectclass: organization dn: cn=admin,dc=wmqe,dc=com
cn: admin
objectClass: organizationalRole
description: Directory Manager dn: ou=People,dc=wmqe,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit dn: ou=Group,dc=wmqe,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit

注意格式:ldif 文件以空行作为用户分割,格式要保持一致。

4.5 导入账号信息到OpenLDAP数据库

1)导入基础数据库

ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/base.ldif

2)导入用户信息

ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/users.ldif

3)导入用户组信息

ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/groups.ldif

同时查看BerkeleyDB数据库文件中多了cn.bdb、sn.bdb、ou.bdb等数据库文件

ll /var/lib/ldap/

4.6 用户加入到用户组

目前OpenLDAP用户和用户组之间是没有任何关联的,需要新建添加用户到用户组的ldif文件。

示例:把ldapuser1用户加入到ldapgroup1用户组。

1)新建文件

cat > add_user_to_groups.ldif << EOF
dn: cn=ldapgroup1,ou=Group,dc=wmqe,dc=com
changetype: modify
add: memberuid
memberuid: ldapuser1
EOF

2)添加

ldapadd -x -w Admin123 -D cn=admin,dc=wmqe,dc=com -f /root/add_user_to_groups.ldif

3)查看

ldapsearch -LLL -x -w Admin123 -D 'cn=admin,dc=wmqe,dc=com' -b 'dc=wmqe,dc=com' cn='ldapgroup1'
#下面输出信息可看到ldapgroup1组包含用户为ldapuser1
dn: cn=ldapgroup1,ou=Group,dc=wmqe,dc=com
objectClass: posixGroup
objectClass: top
cn: ldapgroup1
userPassword:: e2NyeXB0fXg=
gidNumber:
memberUid: ldapuser1

到这里,基本功能已经配置完成,可以通过phpLDAPadmin进程访问连接。

五、配置SSL

通过网络访问 OpenLDAP 服务器,明文传输这些数据存在被他人嗅探的风险。本节设置 LDAP 服务器与客户端之间的 SSL 连接以加密传输数据。
参考:https://docs.oracle.com/en/operating-systems/oracle-linux/7/admin/ol7-s9-auth.html,后续配置证书过程该文章都有介绍。

5.1 创建自签证书

5.1.1 创建CA证书

cd /etc/openldap/certs

#创建CA证书的私钥
openssl genrsa -out cacert-key.pem
chmod cacert-key.pem
#创建CA证书请求
openssl req -new -key cacert-key.pem -out cacert.csr 依次输入:
CH,Shanghai,Yangpu,WMQE,IT,www.wmq.com,admin@wmq.com,回车,回车
#创建3年有效期的CA证书
openssl x509 -req -days -in cacert.csr -signkey cacert-key.pem -out cacert.pem

5.1.2 创建服务器证书

#创建服务证书的私钥
openssl genrsa -out openldap-key.pem
chmod openldap-key.pem
chown ldap:ldap openldap-key.pem
#创建服务证书请求
openssl req -new -key openldap-key.pem -out openldap-cert.csr 依次输入:
CH,Shanghai,Yangpu,WMQE,IT,ldap.wmq.com,admin@wmq.com,回车,回车

注意:对于Common Name,指定服务器的完全限定域名(FQDN)。如果服务器的FQDN与证书中指定的公用名不匹配,则客户端无法获得与服务器的连接。

#签署服务器证书,有效期3年
openssl x509 -req -days -CAcreateserial \
-in openldap-cert.csr -CA cacert.pem -CAkey cacert-key.pem \
-out openldap-cert.pem

5.2 更换默认的证书位置

1)查看默认的证书位置

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" \
olcTLSCACertificatePath olcTLSCertificateFile olcTLSCertificateKeyFile

2)创建LDIF文件

cat > /root/mod_ssl.ldif << EOF
dn: cn=config
changetype: modify
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/openldap/certs/cacert.pem
-
replace: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/openldap.cert
-
replace: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/openldap.key
-
add: olcTLSVerifyClient
olcTLSVerifyClient: never
EOF

3)应用LDIF文件

ldapadd -Y EXTERNAL -H ldapi:/// -f /root/mod_ssl.ldif

4)验证生效

ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b "cn=config" \
olcTLSCACertificatePath olcTLSCertificateFile olcTLSCertificateKeyFile olcTLSVerifyClient

5.3 配置监听636端口

1)停止服务

systemctl stop slapd

2)开启SSL

vim /etc/sysconfig/slapd

SLAPD_LDAPS=yes
SLAPD_URLS="ldapi:/// ldap:/// ldaps:///"

3)启动服务

systemctl start slapd

4)查看已监听 636 端口

netstat -tulnp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:636 0.0.0.0:* LISTEN 2132/slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 2132/slapd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 819/sshd
tcp6 0 0 :::636 :::* LISTEN 2132/slapd
tcp6 0 0 :::389 :::* LISTEN 2132/slapd
tcp6 0 0 :::80 :::* LISTEN 818/httpd
tcp6 0 0 :::22 :::* LISTEN 819/sshd

后续对接可以采用加密方式连接:ldaps://192.168.159.130:636

报错:启动服务报错解决

报错:unable to open file “/var/run/openldap/slapd.args”: 13 (Permission denied)
解决:创建/var/run/openldap/slapd.args并赋予777权限 报错:unable to open file “/var/run/openldap/slapd.pid”: 13 (Permission denied)
解决:创建/var/run/openldap/slapd.pid并赋予777权限

因为异常结束了服务进程,导致有文件残留,需要手动创建并赋予777权限,后续正常关闭服务这两个文件都会自动被删除。

六、其他功能配置

6.1 开启日志功能

默认情况下OpenLDAP是没有启用日志记录功能的,但是在实际使用过程中,我们为了定位问题需要使用到OpenLDAP日志。
1)新建日志配置ldif文件:

cat > /root/loglevel.ldif << EOF
dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
EOF

2)导入到OpenLDAP中

ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldif

3)重启OpenLDAP服务

systemctl restart slapd

4)修改rsyslog配置文件

cat >> /etc/rsyslog.conf << EOF
local4.* /var/log/slapd.log
EOF

5)并重启rsyslog服务

systemctl restart rsyslog

6)查看OpenLDAP日志

tail -f /var/log/slapd.log

现在查看会提示文件不存在,需要对ldap进行操作后可以看到有日志输出。

6.2 禁用匿名访问

参考:https://www.ilanni.com/?p=14035
默认openldap在匿名情况下是可以被访问的,而且openldap的相关信息,除了用户的密码信息之外,其他openldap的信息完全被呈现出来。
1)新建文件

cat > /root/disable_anon.ldif << EOF
dn: cn=config
changetype: modify
add: olcDisallows
olcDisallows: bind_anon dn: cn=config
changetype: modify
add: olcRequires
olcRequires: authc dn: olcDatabase={-}frontend,cn=config
changetype: modify
add: olcRequires
olcRequires: authc
EOF

2)导入文件

ldapadd -Y EXTERNAL -H ldapi:/// -f /root/disable_anon.ldif

不用重启服务即可生效

七、安装 phpLDAPadmin

7.1 安装Apache PHP

yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml

7.2 安装 phpldapadmin

yum --enablerepo=epel -y install phpldapadmin

7.3 修改phpldapadmin配置文件

vim /etc/phpldapadmin/config.php

#打开 dn 注释,注释掉uid
$servers->setValue('login','attr','dn');
// $servers->setValue('login','attr','uid');

phpldapadmin默认使用的是uid方式进行登录,改为dn认证。

7.4 修改httpd配置文件

修改httpd与phpldapadmin集成的配置文件,把httpd与phpldapadmin进行集成。

vim /etc/httpd/conf.d/phpldapadmin.conf

Require all granted

将Require local 改为 Require all granted

7.5 启动httpd

systemctl start httpd
systemctl enable httpd
systemctl status httpd

监听80端口

访问:http://192.168.159.130/phpldapadmin,登入账号:cn=admin,dc=wmqe,dc=com, 密码:Admin123

登入后可以看到已经有之前创建的用户和组了:

八、自助修改密码系统

8.1 安装Self Service Password

1)配置Self Service Password的yum仓库源

cat >> /etc/yum.repos.d/ltb-project.repo << EOF
[ltb-project-noarch]
name=LTB project packages (noarch)
baseurl=https://ltb-project.org/rpm/\$releasever/noarch
enabled=
gpgcheck=
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-LTB-project
EOF

2)安装

yum -y install self-service-password

查看下Self Service Password安装的文件,如下:

rpm -ql self-service-password

看出被安装到 /usr/share/self-service-password 目录下,其中 config.inc.php 是 Self Service Password 的配置文件。

8.2 修改配置文件

1)修改apache配置文件

前面phpLDAPadmin采用apache,这里就不用再次安装了,直接修改配置文件就行。(也可以采用nginx)

cp /etc/httpd/conf.d/self-service-password.conf /etc/httpd/conf.d/self-service-password.conf-bak
cat > /etc/httpd/conf.d/self-service-password.conf << EOF
<VirtualHost *>
DocumentRoot /usr/share/self-service-password
DirectoryIndex index.php
AddDefaultCharset UTF-
Alias /ssp /usr/share/self-service-password
<Directory "/usr/share/self-service-password">
AllowOverride None
Require all granted
</Directory>
LogLevel warn
ErrorLog /var/log/httpd/ssp_error_log
CustomLog /var/log/httpd/ssp_access_log combined
</VirtualHost>
EOF

参考官网配置:https://ltb-project.org/documentation/self-service-password/1.2/config_apache

2)修改Self Service Password的配置文件

vim /usr/share/self-service-password/conf/config.inc.php
#配置LDAP
$ldap_url = "ldap://127.0.0.1:389";
$ldap_starttls = false;
$ldap_binddn = "cn=admint,dc=wmqe,dc=com";
$ldap_bindpw = "Admin123";
$ldap_base = "ou=People,dc=wmqe,dc=com";
$ldap_login_attribute = "uid";
$ldap_fullname_attribute = "cn";
$ldap_filter = "(&(objectClass=inetOrgPerson)($ldap_login_attribute={login}))";
$who_change_password = "manager"; #指定LDAP以什么用户身份更改密码
$keyphrase = "wmqe"; #配置邮件
$mail_from = "xxxxx@qq.com";
$mail_from_name = "LDAP账号密码重置";
$mail_signature = ""; #mail签名
$notify_on_change = false;
$mail_sendmailpath = '/usr/sbin/sendmail';
$mail_protocol = 'smtp';
$mail_smtp_debug = ;
$mail_debug_format = 'html';
$mail_smtp_host = 'smtp.qq.com';
$mail_smtp_auth = true;
$mail_smtp_user = 'xxxxx@qq.com'; #发送邮箱的账号
$mail_smtp_pass = 'xxxxxxx'; #发送邮箱的密码
$mail_smtp_port = ;
$mail_smtp_timeout = ;
$mail_smtp_keepalive = false;
$mail_smtp_secure = 'ssl';
$mail_contenttype = 'text/plain';
$mail_wordwrap = ;
$mail_charset = 'utf-8';
$mail_priority = ;
$mail_newline = PHP_EOL; #禁用问题验证
$use_questions=false; #禁用短信验证
$use_sms= false;

参考官网配置:

配置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

8.3 重启httpd并访问

systemctl restart httpd

浏览器访问:http://192.168.159.130/

8.4 其他配置

vim /usr/share/self-service-password/conf/config.inc.php

# 去除logo
$logo = ""; # 默认界面为邮箱找回
$default_action = "sendtoken"; # 去除修改密码界面
$use_change = false;

参考:
https://www.cnblogs.com/rocky24/p/11082838.html

https://www.ilanni.com/?p=13775

https://www.cnblogs.com/imcati/p/9396808.html

OpenLDAP + phpLDAPadmin的更多相关文章

  1. Centos6 yum安装openldap+phpldapadmin+TLS+双主配置

    原文地址:http://54im.com/openldap/centos-6-yum-install-openldap-phpldapadmin-tls-%E5%8F%8C%E4%B8%BB%E9%8 ...

  2. Centos7下安装OpenLDAP+Phpldapadmin及主主同步

    1.环境介绍及初始化准备 server1:172.16.138.87 openldap01 server2:172.16.138.88 openldap02 配置yum源 wget -O /etc/y ...

  3. CentOS6下OpenLDAP+PhpLdapAdmin基本安装及主从/主主高可用模式部署记录

    下面测试的部署机ip地址为:192.168.10.2051)yum安装OpenLDAP [root@openldap-server ~]# yum install openldap openldap- ...

  4. Linux系统下安装配置 OpenLDAP + phpLDAPadmin

    实验环境: 操作系统:Centos 7.4 服务器ip:192.168.3.41 运行用户:root 网络环境:Internet LDAP(轻量级目录访问协议)是一个能实现提供被称为目录服务的信息服务 ...

  5. CentOS6.4_x64配置OpenLDAP+PhpldapAdmin

    一:前言 LDAP是轻量目录访问协议,英文全称是Lightweight Directory Access Protocol,一般都简称为LDAP.它是基于X.500标准的,但是简单多了并且可以根据需要 ...

  6. OpenLDAP 2.4.44 安装 + phpLDAPadmin 安装

    网上太多的例子搞 OpenLDAP  + phpLDAPadmin  但是没有一个能让你成功配置起来.蛋疼得很.记录一下过程 系统版本:centos7.4 软件版本:2.4.44  超级重要,版本不对 ...

  7. OpenLDAP与phpldapadmin的搭建

    最近一直在看LDAP的东西,把自己的记录下来,以后可以看看. 1:环境 1):关闭防火墙 service iptables stop 2):setenforce 0 vim /etc/sysconfi ...

  8. CentOS7安装OpenLDAP+MySQL+PHPLDAPadmin

    安装环境:CentOS 7 1.安装和设置数据库 在CentOS7下,默认安装的数据库为MariaDB,属于MySQL数据库的一个分支,所以我还是使用了MariaDB.安装命令为: [root@loc ...

  9. LDAP环境搭建 OpenLDAP和phpLDAPadmin -- yum版

      前言: 前两天公司要求做一个使用LDAP和Kerberos做一个认证授权系统,然后开始学习LDAP相关知识,期间找了不少博客按照步骤来安装,可是很多博客在配置的时候,都会遇到安装过程中一两个问题卡 ...

随机推荐

  1. 如何开发出优秀的APICloud应用

    APICloud定制平台项目实施规范 APICloud应用优化策略Top30 如何开发出运行体验良好.高性能的App 如何开发出客户满意.能够顺利交付的App 1. 引擎或模块问题: 遇到应用层无法解 ...

  2. JS的ES6的Generator

    JS的ES6的Generator 1.Generator函数的概念: ES6提供的解决异步编程的方案之一,现在已经不怎么用了被淘汰了. Generator函数是一个状态机,内部封装了不同状态的数据. ...

  3. Centos pip 安装uwsgi 报错“fatal error: Python.h: No such file or directory”

    解决方法: 安装python-devel即可,注意,不是python-dev yum -y install python-devel

  4. linux修改/etc/profile权限

    修改/etc/profile时提示为只读文件,不允许修改, 敲#chmod 777 /etc/profile后仍不允许修改 解决办法: 在root权限下敲 #:mount -o remount,rw ...

  5. jQuery实现列表框双向选择操作

    对列表框的操作经常碰到过这样的应用:从左侧的列表框中选中要选的项添加到右侧列表框中,然后提交最终选择的项,对误操作而选中的项还可以执行移除操作.在很多系统中应用比如说求职网站的选择意向工作地区,QQ好 ...

  6. FZU Monthly-201905 获奖名单

    FZU Monthly-201905 获奖名单 冠军: 郑学贵 S031702338 一等奖: 林闽沪 S131700309 罗继鸿 S031702524 二等奖: 苏锦程 S031802325 林鑫 ...

  7. 拷贝Maven依赖jar包到指定目录

    一.导出到默认目录 targed/dependency 从Maven项目中导出项目依赖的jar包:进入工程pom.xml 所在的目录下,执行如下命令: 1 mvn dependency:copy-de ...

  8. win10系统优化方法及chkdsk工具使用

    发现安装了测试版的Win10真的很慢!其实Win10在每次升级后,的确会比老版慢上很多,这只要是因为新增加的安全功能,往往会对系统速度造成拖累.但有很多方法都可以让你的系统运行如飞. http://b ...

  9. HandlerMethodArgumentResolver的抽象實現AbstractNamedValueMethodArgumentResolver下的子类

    Annotation-based argument resolution 部分2 org.springframework.web.servlet.mvc.method.annotation.Reque ...

  10. Mac下GoogleChromeHelper占用内存过高 的一个排查过程记录

    测试需要在Mac上装了个虚拟机,结果忘记限制资源了,直接崩溃重启过一次. 后面限制了一下资源,发现内存占用率还是特别高,其中最高的居然是Chrome相关的一个东西.这让我8G内存该如何是好. 于是查了 ...