以下是在 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 实现系统级认证集成。

posted on 2025-07-01 10:05  LeeHang  阅读(414)  评论(0)    收藏  举报