CentOS 7 上部署 OpenLDAP 服务
以下是在 CentOS 7 上部署 OpenLDAP 服务并完成初始化的详细操作步骤,整合了最佳实践和关键注意事项:
一、环境准备
系统更新与依赖安装
sudo yum update -y
sudo yum install -y openldap openldap-servers openldap-clients openldap-devel
- 安装核心组件:
openldap-servers
(服务端)、openldap-clients
(客户端工具)。
- 安装核心组件:
设置主机名(可选但推荐)
sudo hostnamectl set-hostname ldap.example.com # 替换为实际域名
echo "127.0.0.1 ldap.example.com" | sudo tee -a /etc/hosts
⚙️ 二、服务启动与初始化
启动服务并设置开机自启
sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd # 确认状态为 active (running)
生成管理员密码哈希
sudo slappasswd
# 输入密码后生成哈希,如:{SSHA}5d2e8c2a4b4f5c6a2d5e8c2a4b4f5c6a2d5e8c2a
# 记录此哈希值(后续配置需使用)[1,4](@ref)
初始化数据库配置
sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd
三、核心配置(LDIF 文件操作)
配置根域与管理员(创建
init.ldif
)dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com # 替换为实际域名
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}5d2e8c2a4b4f5c6a2d5e8c2a4b4f5c6a2d5e8c2a # 替换为生成的哈希
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: to attrs=userPassword by self write by anonymous auth by dn="cn=admin,dc=example,dc=com" write by * none
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
- 应用配置:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f init.ldif
- 应用配置:
创建基础目录结构(创建
base.ldif
)dn: dc=example,dc=com
objectClass: top
objectClass: domain
dc: example
dn: cn=admin,dc=example,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP Administrator
dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Groups,dc=example,dc=com
objectClass: organizationalUnit
ou: Groups
- 导入数据:
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f base.ldif
# 输入管理员密码
- 导入数据:
四、安全与防火墙配置
开放防火墙端口
sudo firewall-cmd --add-port=389/tcp --permanent # LDAP
sudo firewall-cmd --add-port=636/tcp --permanent # LDAPS(加密)
sudo firewall-cmd --reload
配置 TLS 加密(可选但推荐)
- 生成自签名证书:
sudo mkdir /etc/openldap/certs
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /etc/openldap/certs/ldap.key \
-out /etc/openldap/certs/ldap.crt
sudo chmod 600 /etc/openldap/certs/ldap.key
- 创建
tls.ldif
:dn: cn=config
changetype: modify
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/openldap/certs/ldap.crt
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/openldap/certs/ldap.key
- 应用配置:
sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f tls.ldif
sudo systemctl restart slapd
- 生成自签名证书:
五、验证与服务测试
查询目录结构
ldapsearch -x -b "dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -W
# 输入密码后应看到 base.ldif 中定义的条目
添加测试用户(示例)
- 创建
user.ldif
:dn: uid=testuser,ou=People,dc=example,dc=com
objectClass: inetOrgPerson
cn: Test User
sn: User
uid: testuser
userPassword: {SSHA}hashed_password # 用 slappasswd 生成
- 导入用户:
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f user.ldif
- 创建
️ 六、管理工具与维护
命令行工具:
- 查询:
ldapsearch -x -b "dc=example,dc=com" "(uid=testuser)"
- 删除:
ldapdelete -x -D "cn=admin,dc=example,dc=com" -W "uid=testuser,ou=People,dc=example,dc=com"
- 查询:
图形化工具:
安装phpLDAPadmin
或使用Apache Directory Studio
进行可视化操作。
️ 关键注意事项
权限控制:
- 通过
olcAccess
精确管理密码修改权限(如禁止普通用户查看他人密码)。
- 通过
备份配置:
- 定期备份
/etc/openldap/slapd.d/
和/var/lib/ldap/
。
- 定期备份
高可用建议:
- 生产环境建议部署 主从复制(Syncrepl) 避免单点故障。
故障排查:若连接失败,检查:
- 防火墙状态
firewall-cmd --list-all
- 服务日志
journalctl -u slapd
- 证书权限(LDAPS 需确保私钥为
ldap
用户可读)
通过以上步骤,OpenLDAP 服务已部署完成,可用于企业用户管理、应用集成等场景。进一步可结合 SSSD
或 FreeIPA
实现系统级认证集成。
CentOS 7 上部署 OpenLDAP 服务的更多相关文章
- 在CentOS 8 上 部署 .Net Core 应用程序
在Centos 8 上 部署 .Net Core 应用程序 -- 记录篇 1.更新dnf 源 1 dnf update 2.安装 Asp.Net Core 运行时 1 dnf install ...
- 在 CentOS7 上部署 zookeeper 服务
在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...
- 如何在CentOS 7上部署Google BBR【搬运、机翻】
如何在CentOS 7上部署Google BBR 本文章搬运自 https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7 [注:文 ...
- 在CentOS 7上部署Ghost博客
作者:waringid 一.简介 跟静态博客不同的是,Ghost 这种轻量级的动态博客,有一个管理后台,可以直接写作和管理博客.本质上,跟 WordPress 是相通的,只是 Ghost 搭建在 No ...
- OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova
计算服务Nova使用OpenStack Compute来托管和管理云计算系统. OpenStack Compute是基础架构即服务(IaaS)系统的主要部分. 主要模块用Python实现.OpenSt ...
- Azure上部署FTP服务
FTP是个比较复杂的协议,其协议分为控制层和数据层,工作模式分为主动和被动两种模式. 在默认的Active模式下其工作原理如下: 可以看到,客户端发起FTP的请求道服务器端,FTP的端口是21.用户在 ...
- CentOS 7 上部署Mono 4 和Jexus 5.6
概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mvc 4 应用.这篇文章是描述如何在 ...
- 在linux上部署tomcat服务
在linux上部署tomcat 1.安装JDK 2.下载tomcat http://tomcat.apache.org/download-70.cgi 3.上传到服务器,并解压 4.上传war包或者已 ...
- CentOS上部署JAVA服务【转】
http://www.th7.cn/Program/java/201511/686437.shtml 本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境.如何开 ...
- centos上部署nginx服务
Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...
随机推荐
- 使用php的openssl_encrypt和python的pycrypt进行跨语言的对称加密和解密问题
最近有一个业务需求,需要前端传递一个密码到后端,期间要对传递的密码通过进行对称加密,我们约定使用成熟的AES加密方法. 前端使用php,后端用python,但是发现前端兄弟加密后的字符串,在pytho ...
- 实现低PE策略的回测
回测的基本流程 首先需要声明下,此回测属于日间回测,即当天收盘后对交易信号进行检测,得到买入或卖出检测结果,然后由第二天开盘后根据前一天的检测结果完成交易. 其次要对账户进行除权除息处理.因为除权除息 ...
- Linux,yum错误,There are no enabled repos.(学习)
1.yum yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包(RPM 是 Red H ...
- JAVA JUC干货之线程池实现原理和源码详解(上)
目录 综述 七个核心参数 线程工厂 拒绝策略 AbortPolicy CallerRunsPolicy DiscardOldestPolicy DiscardPolicy 自定义拒绝策略 监控线程池运 ...
- git命令--拉取代码和切换分支
git一般有很多分支,我们clone到本地的代码都是master分支,那么如何切换到其它分支呢?本文介绍主要操作流程和命令,包括拉取仓库代码.查看分支和切换分支,至于如何提交代码,需要的童鞋自己查 ...
- Django Web应用开发实战第二章
一.基本配置信息 """ Django settings for myblog project. Generated by 'django-admin startproj ...
- Python 潮流周刊#105:Dify突破10万星、2025全栈开发的最佳实践
本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- ArcGIS Pro SDK 001 基于SDK创建第一个插件
ArcGIS Pro SDK只能开发ArcGIS Pro软件上的插件,不能单独开发独立的应用程序.ArcMap是32位的,在处理大数据时,经常会崩溃,但同样的数据和逻辑,因为ArcGIS Pro是64 ...
- PHP:多级目录删除
<?php // Author: windlike // Create Time: 2007-07-10 // Blog: windlike.cublog.cn function delDir( ...
- 全球首位 AI 程序员 Devin 诞生了,对于程序员的影响到底多大?
当我第一次看到Devin的演示视频时,我的手机差点掉在地上. 不是因为兴奋,而是因为一种前所未有的恐惧和震撼. 作为一个在程序员这条路上摸爬滚打了快10年的老司机,我见证了太多技术的更迭和变革.从最初 ...