以下是在 CentOS 7 上部署 OpenLDAP 服务并完成初始化的详细操作步骤,整合了最佳实践和关键注意事项:


​一、环境准备​

  1. ​系统更新与依赖安装​

    sudo yum update -y
    sudo yum install -y openldap openldap-servers openldap-clients openldap-devel
    • 安装核心组件:openldap-servers(服务端)、openldap-clients(客户端工具)。
  2. ​设置主机名(可选但推荐)​

    sudo hostnamectl set-hostname ldap.example.com  # 替换为实际域名
    echo "127.0.0.1 ldap.example.com" | sudo tee -a /etc/hosts

⚙️ ​​二、服务启动与初始化​

  1. ​启动服务并设置开机自启​

    sudo systemctl start slapd
    sudo systemctl enable slapd
    sudo systemctl status slapd # 确认状态为 active (running)
  2. ​生成管理员密码哈希​

    sudo slappasswd
    # 输入密码后生成哈希,如:{SSHA}5d2e8c2a4b4f5c6a2d5e8c2a4b4f5c6a2d5e8c2a
    # 记录此哈希值(后续配置需使用)[1,4](@ref)
  3. ​初始化数据库配置​

    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 文件操作)​

  1. ​配置根域与管理员(创建 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
  2. ​创建基础目录结构(创建 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
      # 输入管理员密码

​四、安全与防火墙配置​

  1. ​开放防火墙端口​

    sudo firewall-cmd --add-port=389/tcp --permanent  # LDAP
    sudo firewall-cmd --add-port=636/tcp --permanent # LDAPS(加密)
    sudo firewall-cmd --reload
  2. ​配置 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

​五、验证与服务测试​

  1. ​查询目录结构​

    ldapsearch -x -b "dc=example,dc=com" -D "cn=admin,dc=example,dc=com" -W
    # 输入密码后应看到 base.ldif 中定义的条目
  2. ​添加测试用户(示例)​

    • 创建 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 进行可视化操作。


️ ​​关键注意事项​

  1. ​权限控制​​:

    • 通过 olcAccess 精确管理密码修改权限(如禁止普通用户查看他人密码)。
  2. ​备份配置​​:

    • 定期备份 /etc/openldap/slapd.d//var/lib/ldap/
  3. ​高可用建议​​:

    • 生产环境建议部署 ​​主从复制(Syncrepl)​​ 避免单点故障。

​故障排查​​:若连接失败,检查:

  • 防火墙状态 firewall-cmd --list-all
  • 服务日志 journalctl -u slapd
  • 证书权限(LDAPS 需确保私钥为 ldap 用户可读)

通过以上步骤,OpenLDAP 服务已部署完成,可用于企业用户管理、应用集成等场景。进一步可结合 SSSDFreeIPA 实现系统级认证集成。

CentOS 7 上部署 OpenLDAP 服务的更多相关文章

  1. 在CentOS 8 上 部署 .Net Core 应用程序

    在Centos 8 上 部署 .Net Core 应用程序     -- 记录篇 1.更新dnf 源 1 dnf update 2.安装 Asp.Net Core 运行时 1 dnf install ...

  2. 在 CentOS7 上部署 zookeeper 服务

    在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...

  3. 如何在CentOS 7上部署Google BBR【搬运、机翻】

    如何在CentOS 7上部署Google BBR 本文章搬运自 https://www.vultr.com/docs/how-to-deploy-google-bbr-on-centos-7 [注:文 ...

  4. 在CentOS 7上部署Ghost博客

    作者:waringid 一.简介 跟静态博客不同的是,Ghost 这种轻量级的动态博客,有一个管理后台,可以直接写作和管理博客.本质上,跟 WordPress 是相通的,只是 Ghost 搭建在 No ...

  5. OpenStack-Ocata版+CentOS7.6 云平台环境搭建 — 5.在控制节点上部署计算服务Nova

    计算服务Nova使用OpenStack Compute来托管和管理云计算系统. OpenStack Compute是基础架构即服务(IaaS)系统的主要部分. 主要模块用Python实现.OpenSt ...

  6. Azure上部署FTP服务

    FTP是个比较复杂的协议,其协议分为控制层和数据层,工作模式分为主动和被动两种模式. 在默认的Active模式下其工作原理如下: 可以看到,客户端发起FTP的请求道服务器端,FTP的端口是21.用户在 ...

  7. CentOS 7 上部署Mono 4 和Jexus 5.6

    概述 在这篇文章中我们将讨论如何在CentOS 7操作系统,安装 jexus. mono 和 配置 jexus,因此它将能够在这种环境中运行一个asp.net mvc 4 应用.这篇文章是描述如何在 ...

  8. 在linux上部署tomcat服务

    在linux上部署tomcat 1.安装JDK 2.下载tomcat http://tomcat.apache.org/download-70.cgi 3.上传到服务器,并解压 4.上传war包或者已 ...

  9. CentOS上部署JAVA服务【转】

    http://www.th7.cn/Program/java/201511/686437.shtml 本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境.如何开 ...

  10. centos上部署nginx服务

    Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由Igor Sysoev为俄罗斯访问量第二的R ...

随机推荐

  1. 使用php的openssl_encrypt和python的pycrypt进行跨语言的对称加密和解密问题

    最近有一个业务需求,需要前端传递一个密码到后端,期间要对传递的密码通过进行对称加密,我们约定使用成熟的AES加密方法. 前端使用php,后端用python,但是发现前端兄弟加密后的字符串,在pytho ...

  2. 实现低PE策略的回测

    回测的基本流程 首先需要声明下,此回测属于日间回测,即当天收盘后对交易信号进行检测,得到买入或卖出检测结果,然后由第二天开盘后根据前一天的检测结果完成交易. 其次要对账户进行除权除息处理.因为除权除息 ...

  3. Linux,yum错误,There are no enabled repos.(学习)

    1.yum yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包(RPM 是 Red H ...

  4. JAVA JUC干货之线程池实现原理和源码详解(上)

    目录 综述 七个核心参数 线程工厂 拒绝策略 AbortPolicy CallerRunsPolicy DiscardOldestPolicy DiscardPolicy 自定义拒绝策略 监控线程池运 ...

  5. git命令--拉取代码和切换分支

      git一般有很多分支,我们clone到本地的代码都是master分支,那么如何切换到其它分支呢?本文介绍主要操作流程和命令,包括拉取仓库代码.查看分支和切换分支,至于如何提交代码,需要的童鞋自己查 ...

  6. Django Web应用开发实战第二章

    一.基本配置信息 """ Django settings for myblog project. Generated by 'django-admin startproj ...

  7. Python 潮流周刊#105:Dify突破10万星、2025全栈开发的最佳实践

    本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...

  8. ArcGIS Pro SDK 001 基于SDK创建第一个插件

    ArcGIS Pro SDK只能开发ArcGIS Pro软件上的插件,不能单独开发独立的应用程序.ArcMap是32位的,在处理大数据时,经常会崩溃,但同样的数据和逻辑,因为ArcGIS Pro是64 ...

  9. PHP:多级目录删除

    <?php // Author: windlike // Create Time: 2007-07-10 // Blog: windlike.cublog.cn function delDir( ...

  10. 全球首位 AI 程序员 Devin 诞生了,对于程序员的影响到底多大?

    当我第一次看到Devin的演示视频时,我的手机差点掉在地上. 不是因为兴奋,而是因为一种前所未有的恐惧和震撼. 作为一个在程序员这条路上摸爬滚打了快10年的老司机,我见证了太多技术的更迭和变革.从最初 ...