以下是在 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 实现系统级认证集成。
浙公网安备 33010602011771号