前言:
此时兄弟们对“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/slapd2. OpenLDAP的相关配置
注意:从OpenLDAP2.4.23版本开始所有配置数据都保存在/etc/openldap/slapd.d/中,建议不再使用slapd.conf作为配置文件。
2.1 生成OpenLDAP管理密码
slappasswd -s 123456[root@localhost openldap]# slappasswd -s 123456{SSHA}nh3SJFHVyQnPrTYEsBWAD+XCCjIidGsi2.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 succeeded2.5启动 OpenLDAP
systemctl enable slapdsystemctl start slapd2.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.ldif3.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: organizationalUnitEOF3.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: 44.开启OpenLDAP日志访问功能4.1新建日志配置ldif文件
vi /root/loglevel.ldifdn: cn=configchangetype: modifyreplace: olcLogLevelolcLogLevel: stats4.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: 04.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.02.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网络验证系统