LDAP从入门到实战:环境部署与配置指南(下)

#作者:朱雷
接上篇:《LDAP从入门到实战:环境部署与配置指南(上)》

链接: link

文章目录

    • 2.5.添加账号
    • 2.6.停止服务
    • 2.7.使用TLS证书
      • 2.7.1. TLS 证书
      • 2.7.2. TLS 配置
      • 2.7.3. 服务器配置
    • 2.8.使用安全连接的反向代理

2.5.添加账号

添加管理员账号配置文件

[root@localhost openldap]# cat  admin.ldif
dn: dc=zltest,dc=com
objectclass: dcObject
objectclass: organization
o: zl
dc: zltestdn: cn=admin,dc=zltest,dc=com
objectclass: organizationalRole
cn: admin

添加账号

[root@localhost openldap]# ldapadd -x -D 'cn=admin,dc=zltest,dc=com' -W -f admin.ldif 
Enter LDAP Password:   # 输入mdb数据库配置的密码
adding new entry "dc=zltest,dc=com"
adding new entry "cn=admin,dc=zltest,dc=com"

验证添加

[root@localhost openldap]# ldapsearch -x -b 'dc=zltest,dc=com' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <dc=zltest,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## zltest.com
dn: dc=zltest,dc=com
objectClass: dcObject
objectClass: organization
o: zl
dc: zltest# admin, zltest.com
dn: cn=admin,dc=zltest,dc=com
objectClass: organizationalRole
cn: admin# search result
search: 2
result: 0 Success# numResponses: 3
# numEntries: 2

创建具有组属性的用户文件

[root@localhost openldap]# cat  user.ldif 
dn: ou=oa,dc=zltest,dc=com
ou: oa
objectclass: organizationalUnitdn: cn=testuser,ou=oa,dc=zltest,dc=com
ou: oa
cn: testuser
sn: testuser
objectclass: inetOrgPerson
objectclass: organizationalPerson

添加用户

[root@localhost openldap]# ldapadd -x -D 'cn=admin,dc=zltest,dc=com' -W -f user.ldif 
Enter LDAP Password: 
adding new entry "ou=oa,dc=zltest,dc=com"
adding new entry "cn=testuser,ou=oa,dc=zltest,dc=com"

验证添加用户

[root@localhost openldap]# ldapsearch -x -b 'dc=zltest,dc=com' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <dc=zltest,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## zltest.com
dn: dc=zltest,dc=com
objectClass: dcObject
objectClass: organization
o: zl
dc: zltest
userPassword:: e1NIQX0rRG9XSGdBNFI0c2cyTjBCbGVOTTdqUmgyOGM9# admin, zltest.com
dn: cn=admin,dc=zltest,dc=com
objectClass: organizationalRole
cn: admin# oa, zltest.com
dn: ou=oa,dc=zltest,dc=com
ou: oa
objectClass: organizationalUnit# testuser, oa, zltest.com
dn: cn=testuser,ou=oa,dc=zltest,dc=com
ou: oa
cn: testuser
sn: testuser
objectClass: inetOrgPerson
objectClass: organizationalPerson# search result
search: 2
result: 0 Success# numResponses: 5
# numEntries: 4

修改用户密码

[root@localhost openldap]# ldappasswd -x -D 'cn=admin,dc=zltest,dc=com' -w 123456 -s 654321 'cn=testuser,ou=oa,dc=zltest,dc=com'
[root@localhost openldap]# ldapsearch -x -b 'cn=testuser,ou=oa,dc=zltest,dc=com' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <cn=testuser,ou=oa,dc=zltest,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## testuser, oa, zltest.com
dn: cn=testuser,ou=oa,dc=zltest,dc=com
ou: oa
cn: testuser
sn: testuser
objectClass: inetOrgPerson
objectClass: organizationalPerson
userPassword:: e1NTSEF9eTZZVktFUmMraG0vcFZYTkVVbzBFcDJyZlQ0MWxUM1g=# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1

给用户添加属性

[root@localhost openldap]# cat  add_attr_testuser.ldif
dn: cn=testuser,ou=oa,dc=zltest,dc=com
changetype: modify
add: mail
mail: testuser@zltest.com
# 自己给自己添加属性提示权限不足
[root@localhost openldap]# ldapmodify -x -W -D "cn=testuser,ou=oa,dc=zltest,dc=com" -f add_attr_testuser.ldif 
Enter LDAP Password: 
modifying entry "cn=testuser,ou=oa,dc=zltest,dc=com"
ldap_modify: Insufficient access (50)
# 需用管理员账号添加
[root@localhost openldap]# ldapmodify -x -W -D "cn=admin,dc=zltest,dc=com" -f add_attr_testuser.ldif 
Enter LDAP Password: 
modifying entry "cn=testuser,ou=oa,dc=zltest,dc=com"

验证添加用户属性结果

[root@localhost openldap]# ldapsearch -x -b 'cn=testuser,ou=oa,dc=zltest,dc=com' '(objectclass=*)'
# extended LDIF
#
# LDAPv3
# base <cn=testuser,ou=oa,dc=zltest,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
## testuser, oa, zltest.com
dn: cn=testuser,ou=oa,dc=zltest,dc=com
ou: oa
cn: testuser
sn: testuser
objectClass: inetOrgPerson
objectClass: organizationalPerson
userPassword:: e1NTSEF9eTZZVktFUmMraG0vcFZYTkVVbzBFcDJyZlQ0MWxUM1g=
mail: testuser@zltest.com# search result
search: 2
result: 0 Success# numResponses: 2
# numEntries: 1

给用户删除属性

[root@localhost openldap]# cat  delete_attr_testuser.ldif
dn: cn=testuser,ou=oa,dc=zltest,dc=com
changetype: modify
delete: mail

给用户替换属性

[root@localhost openldap]# cat  replace_attr_testuser.ldif
dn: cn=testuser,ou=oa,dc=zltest,dc=com
changetype: modify
replace: mail
mail: testuser_new@zltest.com

重命名用户条目

[root@localhost openldap]# cat  replace_attr_testuser.ldif
dn: cn=testuser,ou=oa,dc=zltest,dc=com
changetype: modrdn
newrdn: oa=it
deleteoldrdn: 1

删除用户条目

[root@localhost openldap]# cat  delete_testuser.ldif 
dn: cn=testuser,ou=oa,dc=zltest,dc=com
changetype: delete
# 执行删除命令
[root@localhost openldap]# ldapdelete -x -W -D "cn=admin,dc=zltest,dc=com" -f ./ delete_testuser.ldif
​
# 通过dn直接进行删除
[root@localhost openldap]# ldapdelete -x -W -D "cn=admin,dc=zltest,dc=com" "cn=testuser,ou=oa,dc=zltest,dc=com"

2.6.停止服务

[root@localhost openldap]# kill -INT `cat /usr/local/var/run/slapd.pid`
[root@localhost openldap]# ps -ef|grep slapd
root        6603    5278  0 15:43 pts/1    00:00:00 grep --color=auto slapd

通过更激烈的方法杀死 slapd 可能会导致信息丢失或数据库损坏

2.7.使用TLS证书

2.7.1. TLS 证书

OpenLDAP 客户端和服务器能够使用传输层安全性(TLS) 框架提供完整性和机密性保护。TLS 用途X.509证书用于承载客户端和服务器身份。所有服务器都必须具有有效证书,而客户端证书是可选的。

2.7.2. TLS 配置

获取所需证书后,必须在客户端和服务器上配置一些选项,以启用 TLS 并使用证书。至少,必须为客户端配置包含所有证书颁发机构(CA)证书。服务器必须配置加州证书以及它自己的服务器证书和私钥。

通常,单个 CA 会颁发服务器证书和所有受信任的客户端证书,因此服务器只需信任该签名 CA。但是,客户端可能希望连接到由不同组织管理的各种安全服务器,这些服务器的证书由许多不同的 CA 生成。因此,客户端可能需要在其配置中包含许多不同的受信任 CA 的列表。

2.7.3. 服务器配置

# 签署服务器证书的 CA 的证书
**TLSCACertificateFile** <CA文件名>
# 服务器证书
**TLSCertificateFile** <文件名>
# 服务器私钥文件
**TLSCertificateKeyFile** <文件名>
# OpenSSL 的密码规范,使用openssl ciphers -v ALL查看
TLSCipherSuite <密码套件规范>
# 此指令指定在/dev/urandom不可用时从哪个文件获取随机数,如系统有则不需要此选项 
TLSRandFile <文件名>
# 包含 Diffie-Hellman 临时密钥交换参数的文件,使用基于 DHE 的密码套件所必需的
TLSDHParamFile <文件名>
# 指定用于椭圆曲线 Diffie-Hellman 临时密钥交换的曲线。这是在 OpenSSL 中使用基于 ECDHE 的密码套件所必需的:openssl ecparam -list_curves
TLSEC 名称 <名称>
# 指定在传入 TLS 会话中对客户端证书执行哪些检查:
# 默认情况下,此选项设置为never ,在这种情况下,服务器永远不会向客户端索要证书。# 如果设置为allow,服务器将要求提供客户端证书;如果没有提供,会话将正常进行。如# 果提供了证书但服务器无法验证,则忽略该证书并且会话正常进行,就像没有提供证书一# 样。如果设置为try,则请求证书,如果没有提供证书,会话将正常进行。如果提供了证
# 书但无法验证,则会话立即终止。如设置为demand,则请求证书并且必须提供有效证书,# 否则会话立即终止。
TLSVerifyClient { 从不 | 允许 | 尝试 | 要求 }

标**的指令是必须的其他为可选

2.8.使用安全连接的反向代理

使用nginx、haproxy等反向代理软件代理ldap 的389端口,在代理软件上配置SSL/TSL认证,代理请求到后端ldap服务,特别在多主、多从的环境下特别实用。
Nginx配置stream proxy server:

https://nginx.org/en/docs/stream/ngx_stream_ssl_module.html
worker_processes auto;
stream {upstream ldap_backend {server 192.168.1.129:389;server 192.168.1.130:389;
}...server {listen               0.0.0.0:636 ssl;server_name         example.com;ssl_protocols       TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers         AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5;ssl_certificate     /usr/local/nginx/conf/cert.pem;ssl_certificate_key /usr/local/nginx/conf/cert.key;ssl_session_cache   shared:SSL:10m;ssl_session_timeout 10m;proxy_pass  ldap_backend;...}

实际生产中推荐使用代理模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/74084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

发现一个好用的Vue.js内置组件

目录 一、这个好用的内置组件是什么&#xff1f; 二、这个组件的主要功能 三、怎么使用&#xff1f; 四、使用注意事项 五、我的使用场景 一、这个好用的内置组件是什么&#xff1f; 今天在优化我的平台应用时&#xff0c;发现一个好用的组件标签--<keep-alive>。 …

dart学习记录5(类、对象)

1.获取运行时对象类型 使用Object 属性的 runtimeType&#xff0c;它返回一个 Type 对象。 print(a 的类型是 ${a.runtimeType});⚠️警告 在测试对象的类型时建议使用object is Type比测试 object.runtimeType Type 更稳定。 2.实例变量的声明 class Point {double? x;…

启明星辰春招面试题

《网安面试指南》https://mp.weixin.qq.com/s/RIVYDmxI9g_TgGrpbdDKtA?token1860256701&langzh_CN 5000篇网安资料库https://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247486065&idx2&snb30ade8200e842743339d428f414475e&chksmc0e4732df793fa3bf39…

Live555+Windows+MSys2 编译Androidso库和运行使用

下载 wget http://www.live555.com/liveMedia/public/live555-latest.tar.gz tar -xzvf live555-latest.tar.gz加入版本控制 git init git add . git commit -a -m "first init" git log修改config.android-arm64 cd live vim config.android-arm64 ./genMakefile…

实用工具-Stirling-PDF

windows桌面版参考这个文档 Getting Started | Stirling-PDF 安装包推荐使用迅雷下载&#xff0c;先转存到迅雷网盘在使用迅雷下载速度嘎嘎快。 github:https://github.com/Stirling-Tools/Stirling-PDF Stirling-PDF 是一个强大的、基于 Web 的开源 PDF 处理工具&#xff0c…

借助AI Agent实现数据分析

在当今数据驱动的世界中&#xff0c;数据分析已成为企业决策、科学研究和社会治理的核心工具。然而&#xff0c;随着数据量的爆炸式增长和复杂性的提升&#xff0c;传统的数据分析方法面临着效率低下、成本高昂和人力不足等挑战。AI技术的快速发展&#xff0c;尤其是AI Agent的…

JavaScript实现一个函数,将数组扁平化(flatten),即把多维数组转为一维数组。

大白话实现一个函数&#xff0c;将数组扁平化&#xff08;flatten&#xff09;&#xff0c;即把多维数组转为一维数组。 思路 实现数组扁平化的基本思路是遍历数组中的每个元素&#xff0c;如果元素是数组&#xff0c;就递归地将其扁平化并添加到结果数组中&#xff1b;如果元…

麒麟操作系统安装人大金仓数据库

如果你想拥有你从未拥有过的东西&#xff0c;那么你必须去做你从未做过的事情 在当前数字化转型和信息安全备受重视的背景下&#xff0c;众多公司积极推进国产化改造进程。在操作系统领域&#xff0c;统信、open 欧拉、中标麒麟、银河麒麟等国产操作系统崭露头角&#xff0c;逐…

开发SAPUI5 Fiori应用并部署到SAP系统

首先新建一个项目文件夹 在VScode中打开 打开SAP Fiori&#xff08;需要先下载安装&#xff0c;参考上上一篇文章&#xff09; ,选择已添加的SAP S4 ERP系统 ,点击创建Firoi应用。 如果没有添加系统的&#xff0c;点击添加按钮&#xff0c;添加即可&#xff0c;注意&#xff…

右键添加:新建HTML模板文件

使用注册表给Windows右键添加:新建HTML文档模板的功能_注册表右键新建-CSDN博客 新建文件有了&#xff0c;但是没有引用模板文件&#xff0c;是空文件。 默认改成 htmlfile 模板成功

[极客大挑战 2019]Knife——3.20BUUCTF练习day4(1)

[极客大挑战 2019]Knife——3.20BUUCTF练习day4(1) 很简单 蚁剑连接 根目录下有flag flag{f77e8444-dd87-48b3-8fe0-a735b5a5c708}

力扣22.括号生成

22. 括号生成 - 力扣&#xff08;LeetCode&#xff09; 代码区&#xff1a; class Solution {vector<string> ans; public:vector<string> generateParenthesis(int n) {dfs(0,0,n,"");return ans;}void dfs(int left,int right,int n,string str){if(l…

第37周:文献阅读

目录 摘要 Abstract 文献阅读 问题引入 研究背景 研究意义 研究目的 实验方法 TimeGAN 数据增强 预测模型的独立性 创新点 实验研究 数据准备 合成数据分析 模型比较 总结 摘要 该文献围绕利用 TimeGAN 提高供热变电站热负荷预测精度展开。结构上&#x…

NFS 安装与测试

NFS 安装与测试 服务器 # NFS 共享目录 mkdir -p ${HOME}/Share/nfs && sudo chown -R nobody:nogroup ${HOME}/Share/nfs# 安装 NFS Server sudo apt install nfs-kernel-server# 配置 NFS 目录 sudo cp -arf /etc/exports /etc/exports.bak sudo tee -a /etc/exports…

算法题(103):数独

审题&#xff1a; 本题需要我们找出数独的解&#xff0c;并打印出来 时间复杂度分析&#xff1a; 本题是9*9的数独格子&#xff0c;所以数据量小于25&#xff0c;可以使用2^n的算法 思路&#xff1a; 方法一&#xff1a;深度优先搜索 首先确定搜索及插入策略&#xff1a; 我们采…

snmp/mib采用子代理模式,编码,部署

0.环境 0.1 编译net-snmp cd net-snmp-5.7.2 ./configure --prefix/usr/local/snmp BEGIN failed--compilation aborted at Makefile.PL line 1. make: *** [perlmakefiles] Error 2 yum install cpan -y make && make install /…

# [RPA] 使用八爪鱼进行高效网页数据采集

在许多行业中&#xff0c;数据是核心资产。然而&#xff0c;虽然许多网站的文本内容可以免费访问&#xff0c;但手动一条一条采集&#xff0c;不仅耗时耗力&#xff0c;还容易出错。这种情况下&#xff0c;使用自动化工具来提高采集效率就显得尤为重要。本文将介绍 八爪鱼 这一…

IDI_APPLICATION 与 IDC_ARROW资源存放在工程的哪个路径?

书籍&#xff1a;《windows程序设计(第五版)》的开始 环境&#xff1a;visual studio 2022 内容&#xff1a;HELLOWIN程序 说明&#xff1a;以下内容大部分来自腾讯元宝。 IDI_APPLICATION 和 IDC_ARROW 是 ​Windows 系统预定义的资源标识符&#xff0c;它们并不以文件形式…

算法 | 优化算法比较

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== 优化算法 ‌一、主流优化算法分类‌1‌、传统梯度类算法‌2‌、启发式算…

腾讯云HAI1元体验:轻松调用DeepSeek-R1模型搭建网站

前言 随着云计算和人工智能技术的不断发展&#xff0c;构建和部署智能化的网页变得越来越简单。腾讯云提供的HAI&#xff08;人工智能平台&#xff09;和DeepSeek&#xff08;智能搜索引擎&#xff09;服务&#xff0c;能帮助开发者快速搭建智能化网页&#xff0c;提升用户体验…