首页 » Web前端 » phpwithldap技巧_统一认证系统OpenLdapPhpldapadmin搭建及应用

phpwithldap技巧_统一认证系统OpenLdapPhpldapadmin搭建及应用

duote123 2024-10-28 0

扫一扫用手机浏览

文章目录 [+]

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

需求

从个人的角度

phpwithldap技巧_统一认证系统OpenLdapPhpldapadmin搭建及应用

入职后每个人会打仗多个别系,项目管理系统,需求管理系统,代码仓库,持续集成,文件做事器,有八个别系就有八个密码,每个别系用一个密码安全隐患较大,每个别系都用不同的密码也不随意马虎记住。

phpwithldap技巧_统一认证系统OpenLdapPhpldapadmin搭建及应用
(图片来自网络侵删)

从管理角度

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

实现方案

可通过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):域名组件。
其格式是将完全的域名分成几部分,如将http://example.com变成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界面

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

http://192.168.2.100:81/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"}

相关文章

网站SEO优化关键词布局的艺术与步骤

网站SEO优化已成为企业获取流量、提升品牌知名度的重要手段。关键词布局作为SEO优化的核心环节,其重要性不言而喻。本文将深入探讨关...

Web前端 2025-04-09 阅读2 评论0

网站编辑与SEO协同发展的密不可分关系

网站编辑和SEO(搜索引擎优化)这两个职业逐渐成为互联网行业的热门话题。许多人认为,网站编辑和SEO是两个独立的领域,但实际上,它...

Web前端 2025-04-09 阅读1 评论0