centos7部署openldap开启memberof并接入jumpserver
文章目录
- 前言
- 1.yum安装openldap
- 2.配置密码
- 3.导入配置
- 4.定义域
- 5.配置memberof
- 6.配置base dn
- 7.安装phpldapadmin管理
- 8.调整httpd的配置
- 9.调整php的配置
- 10.登陆php管理页面
- 11.同步旧ldapsever用户数据(可省略)
- 12.客户端配置
- 13.对接jumpserver
前言
介绍如何在centos7上部署openldap,并配置memberof进行组管理用户并介入jumpserver堡垒机
openldap参考的是这位大佬的博客,大佬文章的ldif格式有点乱,添加的时候不处理会报错 https://blog.csdn.net/weixin_41004350/article/details/89521170
1.yum安装openldap
[root@ldapserver 10:37:52 ~]# yum install -y openldap openldap-clients openldap-servers
[root@ldapserver 10:39:08 ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@ldapserver 10:39:10 ~]# chown -R ldap. /var/lib/ldap/DB_CONFIG
[root@ldapserver 10:39:14 ~]# systemctl start slapd
[root@ldapserver 10:39:14 ~]#systemctl enable slapd
[root@ldapserver 10:39:20 ~]# systemctl status slapd
● slapd.service - OpenLDAP Server DaemonLoaded: loaded (/usr/lib/systemd/system/slapd.service; disabled; vendor preset: disabled)Active: active (running) since 三 2023-07-12 10:39:20 CST; 3s ago
2.配置密码
我这里涉及到的密码都是000000
[root@ldapserver 10:39:24 ~]# slappasswd -s 000000
{SSHA}LSgYPTUW4zjGtIVtuZ8cRUqqFRv1tWpE最后一行使用上面生成的密码
[root@ldapserver 10:39:32 ~]# vim changepwd.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}LSgYPTUW4zjGtIVtuZ8cRUqqFRv1tWpE[root@ldapserver 10:39:47 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
3.导入配置
这里可以根据需要导入,不知道需要什么都执行一遍
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
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
4.定义域
我这里定义的是:dc=yinhan,dc=com,可根据自己的修改,比如改成dc=test,dc=com
这里修改建议是在vim模式下批量改:%s/dc=yinhan,dc=com/dc=xxx,dc=xxxx/g
这里olcRootPW的密码使用的也是前面生成的000000加密后的密文
[root@ldapserver ~]# cat changedomain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=admin,dc=yinhan,dc=com" read by * nonedn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=yinhan,dc=comdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=yinhan,dc=comdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}LSgYPTUW4zjGtIVtuZ8cRUqqFRv1tWpEdn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=yinhan,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=yinhan,dc=com" write by * read[root@ldapserver ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"modifying entry "olcDatabase={2}hdb,cn=config"
5.配置memberof
[root@ldapserver ~]# cat add-memberof.ldif
dn: cn=module{0},cn=config
cn: modulle{0}
objectClass: olcModuleList
objectclass: top
olcModuleload: memberof.la
olcModulePath: /usr/lib64/openldapdn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf[root@etcd-test 10:45:41 ~]# vim refint1.ldif
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint[root@etcd-test 10:45:53 ~]# vim refint2.ldif
dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: refint
olcRefintAttribute: memberof uniqueMember manager owner[root@ldapserver ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif
adding new entry "cn=module{0},cn=config"adding new entry "olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config"[root@ldapserver ~]# echo $?
0
[root@ldapserver ~]# ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
modifying entry "cn=module{0},cn=config"[root@ldapserver ~]# ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif
adding new entry "olcOverlay=refint,olcDatabase={2}hdb,cn=config"
6.配置base dn
[root@ldapserver ~]# cat base.ldif
dn: dc=yinhan,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: yinhan Company
dc: yinhandn: cn=admin,dc=yinhan,dc=com
objectClass: organizationalRole
cn: admindn: ou=People,dc=yinhan,dc=com
objectClass: organizationalUnit
ou: Peopledn: ou=Group,dc=yinhan,dc=com
objectClass: organizationalRole
cn: Group[root@ldapserver ~]# ldapadd -x -D cn=admin,dc=yinhan,dc=com -f base.ldif -w 000000
Enter LDAP Password:
adding new entry "dc=yinhan,dc=com"adding new entry "cn=admin,dc=yinhan,dc=com"adding new entry "ou=People,dc=yinhan,dc=com"adding new entry "ou=Group,dc=yinhan,dc=com"
7.安装phpldapadmin管理
这里需要有epel的yum源
[root@ldapserver ~]# yum install phpldapadmin -y
8.调整httpd的配置
增加12行IP为自己的网段
[root@ldapserver ~]# cat -n /etc/httpd/conf.d/phpldapadmin.conf 1 #2 # Web-based tool for managing LDAP servers3 #45 Alias /phpldapadmin /usr/share/phpldapadmin/htdocs6 Alias /ldapadmin /usr/share/phpldapadmin/htdocs78 <Directory /usr/share/phpldapadmin/htdocs>9 <IfModule mod_authz_core.c>10 # Apache 2.411 Require local12 Require ip 192.168.0.0/1613 </IfModule>14 <IfModule !mod_authz_core.c>15 # Apache 2.216 Order Deny,Allow17 Allow from 127.0.0.118 Allow from ::119 </IfModule>20 </Directory>
9.调整php的配置
注释掉389行 开启397行
[root@ldapserver ~]#vim /etc/phpldapadmin/config.php
397 $servers->setValue('login','attr','dn');
398 //$servers->setValue('login','attr','uid');
[root@ldapserver phpldapadmin]# systemctl restart httpd
10.登陆php管理页面
登陆地址: http://ip/ldapadmin
账号为第四步定义的:cn=admin,dc=yinhan,dc=com
密码也是前面定义的
登陆报错解决
[root@ldapserver ~]# setsebool -P httpd_can_connect_ldap on
11.同步旧ldapsever用户数据(可省略)
我这里原来有一套ldapserver已经跑了很多年了,可以通过slapcat跟slapadd把数据导入到新的server里
[root@ldapserver bak]# systemctl stop slapd
[root@ldapserver bak]# grep 'dn: uid=' user.ldif
dn: uid=test1,ou=People,dc=yinhan,dc=com
dn: uid=test2,ou=People,dc=yinhan,dc=com[root@ldapserver bak]# slapadd -n 2 -l user.ldif
.#################### 100.00% eta none elapsed none fast!
Closing DB...
[root@ldapserver bak]# systemctl start slapd
12.客户端配置
[root@compute02_11bak]# yum install -y openldap-clients nss-pam-ldapd
[root@compute02_11:58:44_~ $ip a|grep 'inet 17'inet 172.16.4.80/16 brd 172.16.255.255 scope global eth0inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0inet 172.20.0.1/16 brd 172.20.255.255 scope global br-b76db9453ac8inet 172.23.0.1/16 brd 172.23.255.255 scope global br-f422a62a0cc9
root@compute02_11:58:55_~ $authconfig --enablemkhomedir --enableshadow --enableldap --enableldapauth --ldapserver=ldap://192.168.11.21 --ldapbasedn=dc=yinhan,dc=com --disableldaptls --enablecache --disablewinbindauth --disablesssdauth --updateallgetsebool: SELinux is disabled
getsebool: SELinux is disabled
root@compute02_11:59:03_~ $id liliangde
uid=1000(liliangde) gid=500(sa_test) 组=908(monitorUsers),917(hc_group),902(sa_group),903(dba_group),500(sa_test)
root@compute02_11:59:06_~ $id liliangde1
uid=1001(liliangde1) gid=500(sa_test) 组=500(sa_test)root@compute02_11:59:07_~ $ssh liliangde1@172.16.4.80
liliangde1@172.16.4.80's password:
Creating directory '/data/home/liliangde1'.
Last login: Tue Jun 28 18:37:23 2022
liliangde1@compute02_11:59:35_~ $who
root pts/0 2023-08-11 11:57 (mirrors.yh.com)
liliangde1 pts/1 2023-08-11 11:59 (compute02)
13.对接jumpserver
添加一个新的组,按照红色框勾选的操作
这里需要勾选groupOfUnxxx
新组的名称我设置为 test_mem
添加完成通过命令可以通过uniqueMember查看组里面包含哪些用户
[root@ldapserver bak]# ldapsearch -LL -Y EXTERNAL -H ldapi:/// "(cn=test_mem)" -b dc=yinhan,dc=com uniqueMember
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
version: 1dn: cn=test_mem,ou=Group,dc=yinhan,dc=com
uniqueMember: cn=liliangde,ou=People,dc=yinhan,dc=com
jumpserver上面配置
配置完导入可以看到新的组
相关文章:

centos7部署openldap开启memberof并接入jumpserver
文章目录 前言1.yum安装openldap2.配置密码3.导入配置4.定义域5.配置memberof6.配置base dn7.安装phpldapadmin管理8.调整httpd的配置9.调整php的配置10.登陆php管理页面11.同步旧ldapsever用户数据(可省略)12.客户端配置13.对接jumpserver 前言 介绍如何在centos7上部署openl…...

Unity游戏源码分享-仿开心消消乐Match3Jewel
Unity游戏源码分享-仿开心消消乐Match3Jewel 工程地址: https://download.csdn.net/download/Highning0007/88198762...

知识图谱基本工具Neo4j使用笔记 四 :使用csv文件批量导入图谱数据
文章目录 一、系统说明二、说明三、简单介绍1. 相关代码以及参数2. 简单示例 四、实际数据实践1. 前期准备(1) 创建一个用于测试的neo4j数据库(2)启动neo4j 查看数据库 2. 实践(1) OK 上面完成后࿰…...
[bug修复]状态数据在useEffect初始化时更新无效
(bug修复类型的博客还是用汉语写捏) 前两天在做一个管理页面前端的时候,出现了这样的问题 function Son(props){const [a,seta]useState(0)useEffect(()>{seta(props.name)},[])return(<div>{a}</div>) } 这是当时情况的一…...

使用 API Gateway Integrator 在 Quarkus 中实施适用于 AWS Lambda 的 OpenAPI
AWS API Gateway 集成使得使用符合 OpenAPI 标准的 Lambda Function 轻松实现 REST API。 关于开放API 它是一个 允许以标准方式描述 REST API 的规范。 OpenAPI规范 (OAS) 为 REST API 定义了与编程语言无关的标准接口描述。这使得人类和计算机都可以发现和理解服务的功能&am…...

【JVM】JVM中的分代回收
文章目录 分代收集算法什么是分代分代收集算法-工作机制MinorGC、 Mixed GC 、 FullGC的区别是什么 分代收集算法 什么是分代 在java8时,堆被分为了两份: 新生代和老年代【1:2】 其中: 对于新生代,内部又被分为了三…...

C# Linq源码分析之Take方法
概要 Take方法作为IEnumerable的扩展方法,具体对应两个重载方法。本文主要分析第一个接收整数参数的重载方法。 源码解析 Take方法的基本定义 public static System.Collections.Generic.IEnumerable Take (this System.Collections.Generic.IEnumerable source…...
从后往前读取列表的方法
从后往前读取列表的方法 方法1:使用for循环遍历列表时,可以使用reverse()函数将列表反转,然后再遍历。 # 列表 num [0, 1, 2, 3]# 反向遍历 for i in reversed(num):print(i)输出结果: 3 2 1 0方法2:先计算列表长度…...
数据库--数据类型
数据库相关链接: 数据库基础操作--增删改查:http://t.csdn.cn/189CF 数据库--三大范式、多表查询、函数sql:http://t.csdn.cn/udJSG 数据类型 创建表的时候,我们在类型这里给出了不同的选项,比如有int ,…...

小型双轮差速底盘机器人实现红外跟随功能
1. 功能说明 本文示例将实现R023样机小型双轮差速底盘跟随人移动的功能。在小型双轮差速底盘前方按下图所示安装3个 近红外传感器,制作一个红外线发射源,实现当红外发射源在机器人的检测范围内任意放置或移动时,机器人能追踪该发射源。 2. 电…...
TCP协议网络编程 回显服务器,客户端实现
回显服务器表示客户端传来的请求是什么,服务器就回应什么,客户端不用对传来的数据进行处理,主要是为了熟悉TCP协议提供的API的使用 对于代码的解释全作为注释写在了代码上,推荐复制到编程软件中查看 UDP协议实现回显服务器可以看…...
3.4 Spring MVC注解
注解名称 注解说明 RequestMapping 用来处理请求地址映射的注解,可以在接口、类和方法上使用 value属性 表示请求地址,与path属性一致 method属性 表示接收HTTP请求方法,默认接收所有请求方法,请求包括GET、POST、PUT、DEL…...

OpenCV实例(八)车牌字符识别技术(三)汉字识别
车牌字符识别技术(三)汉字识别 1.代码实例2.遇到问题3.汉字识别代码实例 相较于数字和英文字符的识别,汽车牌照中的汉字字符识别的难度更大,主要原因有以下4个方面: (1)字符笔画因切分误差导致非笔画或笔画流失。 (2…...

运维监控学习笔记2
硬件监控: 1)使用IPMI 2)机房巡检 路由器和交换机: 使用SNMP(简单网络管理协议)进行监控。 Linux 安装snmp: yum install -y net-snmp net-snmp-utils 说明:net-snmp是安装在snm…...

【深度学习】遗传算法[选择、交叉、变异、初始化种群、迭代优化、几何规划排序选择、线性交叉、非均匀变异]
目录 一、遗传算法二、遗传算法概述2.1 选择2.2 交叉2.3 变异 三、遗传算法的基本步骤3.1 编码3.2 初始群体的生成3.3 适应度评估3.4 选择3.5 交叉3.6 变异3.7 总结 四、遗传算法工具箱4.1 initializega4.2 ga4.3 normGeomSelect4.4 arithXover4.5 nonUnifMutation 五、遗传算法…...

【小吉带你学Git】讲解GitHub操作,码云操作,GitLab操作
🎊专栏【Git】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 🌺欢迎并且感谢大家指出小吉的问题🥰 文章目录 🍔GitHub操作⭐安装GitHub插件⭐在idea中设置GitHub账号&…...
nginx基础
nginx 具体就是一个轻量级以及高性能的web服务软件。 nginx特点 1、稳定性高。(但不如apache) 2、系统资源消耗比较低。(处理http请求的并发能力较高,单台处理器可以处理3w-5w的并发请求) 注:一般在企…...

【Windows API】获取卷标、卷名
1、卷->卷标 使用FindFirstVolume()和FindNextVolume()函数体系,枚举系统所有卷(Volume)的例子,然后获取卷标、卷类型。这个方式可以枚举出没有驱动器号(卷标)的卷。 int TestMode1() {HANDLE hVolume…...

通过MATLAB自动产生Hamming编译码的verilog实现,包含testbench
目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 1. 原理 1.1 编码规则 1.2 错误检测和纠正 2. 实现过程 2.1 编码过程 2.2 解码过程 3. 应用领域 3.1 数字通信 3.2 存储系统 3.3 ECC内存 3.4 数据传输 5.算法完整程序工程 1.算法…...

swager web服务无法显示问题
如果指定了扫描其他包 那么web文件夹里面的就扫描不到 需要加上扫描扫描web的 ,默认什么也没有就会扫描web文件夹 但是其他模块的扫描不到 指定了扫描其他模块就需要再次指定扫描该web文件夹...

【OSG学习笔记】Day 18: 碰撞检测与物理交互
物理引擎(Physics Engine) 物理引擎 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 游戏开发、动画制作、虚…...
DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径
目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题
在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...

数据结构:递归的种类(Types of Recursion)
目录 尾递归(Tail Recursion) 什么是 Loop(循环)? 复杂度分析 头递归(Head Recursion) 树形递归(Tree Recursion) 线性递归(Linear Recursion)…...
Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解
文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

goreplay
1.github地址 https://github.com/buger/goreplay 2.简单介绍 GoReplay 是一个开源的网络监控工具,可以记录用户的实时流量并将其用于镜像、负载测试、监控和详细分析。 3.出现背景 随着应用程序的增长,测试它所需的工作量也会呈指数级增长。GoRepl…...
Easy Excel
Easy Excel 一、依赖引入二、基本使用1. 定义实体类(导入/导出共用)2. 写 Excel3. 读 Excel 三、常用注解说明(完整列表)四、进阶:自定义转换器(Converter) 其它自定义转换器没生效 Easy Excel在…...