龙空技术网

统一认证系统:OpenLdap+Phpldapadmin搭建及应用

郭子懂生活 204

前言:

此时兄弟们对“php网络验证系统”大约比较关注,大家都需要剖析一些“php网络验证系统”的相关文章。那么小编也在网络上搜集了一些关于“php网络验证系统””的相关文章,希望姐妹们能喜欢,咱们快快来学习一下吧!

介绍

统一身份认证主要是为了解决单点登录的问题。单点登录:(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

实际上我们在网络活动中也会需要很多的单点登录例子,比如我们登录北京社保查询时候或者公积金网站查询的时候都要登录的通过北京市统一身份认证平台进行登录

需求

从个人的角度

入职后每个人会接触多个系统,项目管理系统,需求管理系统,代码仓库,持续集成,文件服务器,有八个系统就有八个密码,每个系统用一个密码安全隐患较大,每个系统都用不同的密码也不容易记住。

从管理角度

公司需要一个统一认证系统,自助分配权限系统,定期审计,集中分配与追踪所有权限,便于记录。不用会占用大量人力去添加账户提升工作效率。

实现方案

可通过AD域、OpenLDAP+PhpLDAPAdmin方式实现。今天的文章重点介绍OpenLDAP

什么是LDAP?

轻型目录访问协议(Lightweight Directory Access Protocol,LDAP):是一个开放的、中立的、业标准的应用协议,通过IP协议提供访问控制和维护分布式信息的目录信息,它是由目录数据库和一套访问协议组成的系统

为什么用LDAP?

LDAP是开放的Internet标准,市场上或者开源社区的绝大多数软件都支持LDAP协议。简单来说,LDAP协议最大的好处就是能统一管理用户密码,新人报道创建一个用户就能登录公司的所有平台(gitlab、jumpserver、监控等等),离职一键删除即可。

LDAP相关概念

dn(Distinguished Name):区分名称,LDAP中每个条目都有自己的dn,dn是该条目在整棵树中的唯一标识,如同文件系统中,带路径的文件名就是DN。rdn(Relative dn):相对区别名称,好比linux中的相对路径。dc(Domain Component):域名组件。其格式是将完整的域名分成几部分,如将变成dc=example,dc=com。uid(User ID):用户ID,如 san.zhang。ou(Organization Unit):组织单元。cn(Common Name):公共名称。sn(surname):姓氏。c(Country):国家,如“CN”或者“US”。o(Organization):组织名,如XXX银行,XXX部门,XXX公司等等。一、OpenLDAP安装部署1.安装部署

yum -y install epel-releasesed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && setenforce 0&& systemctl disable firewalld.service && systemctl stop firewalld.service && shutdown -r nowyum install  -y openldap compat-openldap openldap-clients openldap-servers openldap-devel migrationtools openldap-servers-sql

安装包说明

安装包名称

说明

openldap

openldap服务端和客户端必须用的库文件。

openldap-servers

用于启动服务和设置. 包含单独的ldap后台守护程序。

openldap-clients

用于启动服务和设置. 包含单独的ldap后台守护程序。

openldap-devel

devel包,可选择进行安装。

openldap-servers-sql

支持sql模块,可进行选择性安装。

migrationtools

通过migrationtools实现OpenLDAP用户及用户组的添加,导入系统账户,可进行选择性安装。

compat-openldap

openldap兼容性库 其中compat-openldap这个包与主从有很大的关系

查看安装版本

slapd -VV[root@localhost openldap]# slapd -VV@(#) $OpenLDAP: slapd 2.4.44 (Feb 23 2022 17:11:27) $    mockbuild@x86-01.bsys.centos.org:/builddir/build/BUILD/openldap-2.4.44/openldap-2.4.44/servers/slapd
2. OpenLDAP的相关配置

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

2.1 生成OpenLDAP管理密码

slappasswd -s 123456[root@localhost openldap]# slappasswd -s 123456{SSHA}nh3SJFHVyQnPrTYEsBWAD+XCCjIidGsi
2.2 修改olcDatabase={2}hdb.ldif文件
vim /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif修改域信息:olcSuffix: dc=domain,dc=comolcRootDN: cn=Manager,dc=domain,dc=com添加一行作为管理员密码 :olcRootPW: {SSHA}nh3SJFHVyQnPrTYEsBWAD+XCCjIidGsi #管理员密码
2.3 修改olcDatabase={1}monitor.ldif文件 红色部分即可
vim /etc/openldap/slapd.d/cn=config/olcDatabase\=\{1\}monitor.ldif

dn: olcDatabase={1}monitor

objectClass: olcDatabaseConfig

olcDatabase: {1}monitor

olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=extern

al,cn=auth" read by dn.base="cn=Manager,dc=domain,dc=com" read by * none

structuralObjectClass: olcDatabaseConfig

entryUUID: 95e38108-2c60-103e-820f-bf84d8e8fb3f

creatorsName: cn=config

createTimestamp: 20231211110257Z

entryCSN: 20231211110257.425807Z#000000#000#000000

modifiersName: cn=config

modifyTimestamp: 20231211110257Z

2.4 验证配置

slaptest -u[root@bogon openldap]# slaptest -u65771257 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif"65771257 ldif_read_file: checksum error on "/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif"config file testing succeeded
2.5启动 OpenLDAP
systemctl enable slapdsystemctl start slapd
2.6 验证启动状态
systemctl status slapd lsof -i:389 [root@bogon ~]# lsof -i:389COMMAND   PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAMEslapd   17300 ldap    8u  IPv4 482783      0t0  TCP *:ldap (LISTEN)slapd   17300 ldap    9u  IPv6 482784      0t0  TCP *:ldap (LISTEN)slapd   17300 ldap   11u  IPv4 482970      0t0  TCP bogon:ldap->bogon:63341 (ESTABLISHED)
3. 数据库配置

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

[root@localhost openldap]# rm -rf /etc/openldap/slapd.d/*[root@localhost openldap]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIGchown -R ldap.ldap /etc/openldap/slapd.d/*chown -R ldap.ldap /var/lib/ldap/*
3.1导入schema

schema文件位于/etc/openldap/schema/下

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldifldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
3.2.修改migrate_common.ph文件

migrate_common.ph文件主要是用于生成ldif文件使用,修改migrate_common.ph文件,如下:

vim /usr/share/migrationtools/migrate_common.ph$DEFAULT_MAIL_DOMAIN = "mydomain.com";$DEFAULT_BASE = "dc=mydomain,dc=com";
3.3 创建并导入基础数据库3.3.1 生成基础数据库配置文件base.ldif
cat > /root/base.ldif << EOFdn: dc=domain,dc=como: domain comdc: domainobjectClass: topobjectClass: dcObjectobjectclass: organizationdn: cn=Manager,dc=domain,dc=comcn: ManagerobjectClass: organizationalRoledescription: Directory Managerdn: ou=People,dc=domain,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnitdn: ou=Group,dc=domain,dc=comou: GroupobjectClass: topobjectClass: organizationalUnitEOF
3.3.2 使用ldap命令导入基础数据库

命令:ldapadd -x -w 123456 -D cn=Manager,dc=domain,dc=com -f ./base.ldif

[root@bogon ~]# ldapadd -x -w 123456 -D cn=Manager,dc=domain,dc=com -f ./base.ldifadding new entry "dc=domain,dc=com"adding new entry "cn=Manager,dc=domain,dc=com"adding new entry "ou=People,dc=domain,dc=com"adding new entry "ou=Group,dc=domain,dc=com"
3.3.3 导入验证

命令:ldapsearch -x -b 'dc=domain,dc=com' '(objectClass=*)'

[root@bogon ~]# ldapsearch -x -b 'dc=domain,dc=com' '(objectClass=*)'orldapsearch -x -b 'dc=domain,dc=com'  -H ldap://127.0.0.1# extended LDIF## LDAPv3# base <dc=domain,dc=com> with scope subtree# filter: (objectClass=*)# requesting: ALL## domain.comdn: dc=domain,dc=como: domain comdc: domainobjectClass: topobjectClass: dcObjectobjectClass: organization# Manager, domain.comdn: cn=Manager,dc=domain,dc=comcn: ManagerobjectClass: organizationalRoledescription: Directory Manager# People, domain.comdn: ou=People,dc=domain,dc=comou: PeopleobjectClass: topobjectClass: organizationalUnit# Group, domain.comdn: ou=Group,dc=domain,dc=comou: GroupobjectClass: topobjectClass: organizationalUnit# search resultsearch: 2result: 0 Success# numResponses: 5# numEntries: 4
4.开启OpenLDAP日志访问功能4.1新建日志配置ldif文件
vi /root/loglevel.ldifdn: cn=configchangetype: modifyreplace: olcLogLevelolcLogLevel: stats
4.2导入配置

导入到OpenLDAP中,并重启OpenLDAP服务,如下:

[root@bogon ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /root/loglevel.ldifSASL/EXTERNAL authentication startedSASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=authSASL SSF: 0
4.3rsyslog配置

修改rsyslog配置文件:

cp /etc/rsyslog.conf /etc/rsyslog.conf_date '+%Y%m%d'.bakvi /etc/rsyslog.conflocal4.*                                                /var/log/slapd.logchown ldap.ldap /var/log/slapd.log chmod 755 /var/log/slapd.log 并重启rsyslog服务[lihuaping01@stg-login101 openldap]$ sudo systemctl restart rsyslog重启slapd:[lihuaping01@stg-login101 openldap]$ sudo systemctl restart slapd查看OpenLDAP日志,如下:sudo tail -f /var/log/slapd.log
二、PhpLDAPAdmin的安装配置1、安装
yum -y install epel-releaseyum clean allyum makecacheyum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml phpldapadmin

2、配置

2.1http配置

…………  <IfModule mod_authz_core.c>    # Apache 2.4    Require all granted  </IfModule>…………开放外网访问:Require all local指定可访问的ip段Require localRequire ip 192.168.0
2.2配置phpldapadmin登陆方式
vim /etc/phpldapadmin/config.php#398行,dn为使用dn登陆,cn为使用用户名登陆,可选其一$servers->setValue('login','attr','dn');or$servers->setValue('login','attr','cn');#460行,关闭匿名登录,必做$servers->setValue('login','anon_bind',false); #519行,保证用户属性的唯一性$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'));

启动apache(如对端口有需求或默认的80已被占用,可修改

/etc/httpd/conf/httpd.conf的Listen数值)

systemctl restart httpdsystemctl enable httpd

3、登录phpldapadmin界面

访问地址:浏览器中输入:端口/phpldapadmin

登陆,输入基础数据库ldif文件中配置的dn或cn,密码是导入时的密码。

基本账户管理方式:Group下创建组,People下创建账户。不同平台创建不同的组,将账户添加到相应的组,一个账户可有多个组,使一个账户和密码可登陆多个平台。

三、JumpServer 接入配置

系统设置-->认证设置

LDAP 服务器

LDAP 地址: ldap://ip:389 绑定 DN :cn=Manager,dc=domain,dc=com

LDAP 用户

用户 OU: ou=People,dc=domain,dc=cn用户过滤器 :(cn=%(user)s)用户属性映射{"username": "cn","name": "sn","email": "mail"}

标签: #php网络验证系统