CentOS 7 搭建 LDAP 目录服务
# CentOS 7 搭建 LDAP 目录服务1. 服务介绍LDAPLightweight Directory Access Protocol用于集中保存用户、用户组、组织结构和认证属性。企业可让 Linux 登录、Apache、Samba、邮件系统等服务共用一套账号目录减少多台服务器重复创建账号的问题。本实验使用 OpenLDAP 创建dcchinaskills,dccn目录树并添加组织单元、用户和用户组。2. 准备运行环境• 操作系统CentOS 7.x。• 服务器主机名ldap或按实验拓扑设置。• 操作账号root 或具备 sudo 权限的管理员账号。• 网络要求服务器使用固定 IP客户端能够解析并访问 LDAP 服务器。• 软件要求YUM 软件源可用。• 时间要求服务端和客户端时间保持一致后续启用 TLS 或集中认证时可减少证书和认证异常。cat /etc/centos-release hostnamectl ip addr ip route getent hosts ldap3. 相关知识• LDAP 默认使用 TCP 389LDAPS 默认使用 TCP 636。• DN 是条目的完整名称例如uidzsuser,ouusers,dcchinaskills,dccn。• Base DN 是目录树查询起点本实验为dcchinaskills,dccn。• 管理员 DN 为cnadmin,dcchinaskills,dccn。• LDIF 是 LDAP 条目导入格式。属性名和属性值之间必须保留冒号及空格多个条目之间建议留空行。•slappasswd用于生成 SSHA 密码摘要不要把管理员明文密码直接写入公开配置。• 不建议直接随意修改slapd.d中的动态配置。修改前先备份并使用slaptest检查配置。• 查询失败时重点检查 Base DN、绑定 DN、密码、访问控制、服务监听和日志。4. 实验步骤4.1 安装并启动 OpenLDAPyum install -y openldap-servers openldap-clients cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap /var/lib/ldap/DB_CONFIG systemctl enable --now slapd systemctl status slapd --no-pager4.2 生成管理员密码摘要slappasswd输入两次管理员密码保存生成的{SSHA}开头摘要。4.3 配置客户端默认查询参数编辑/etc/openldap/ldap.confvi /etc/openldap/ldap.conf示例BASE dcchinaskills,dccn URI ldap://127.0.0.14.4 配置数据库后缀和管理员 DN修改前备份动态配置目录cp -a /etc/openldap/slapd.d /etc/openldap/slapd.d.bak vi /etc/openldap/slapd.d/cnconfig/olcDatabase{2}hdb.ldif按实验目录规划检查或修改以下属性olcSuffix: dcchinaskills,dccn olcRootDN: cnadmin,dcchinaskills,dccn olcRootPW: {SSHA}替换为slappasswd生成的摘要4.5 配置监控数据库访问vi /etc/openldap/slapd.d/cnconfig/olcDatabase{1}monitor.ldif确认监控规则中的管理员 DN 与本实验一致。检查配置并重启服务slaptest -u chown -R ldap:ldap /etc/openldap/slapd.d /var/lib/ldap systemctl restart slapd4.6 导入常用 Schemaldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif若返回Already exists说明对应 Schema 已导入不要重复处理。4.7 创建根域条目创建rootdn.ldifcat rootdn.ldif EOF dn: dcchinaskills,dccn objectClass: top objectClass: dcObject objectClass: organization o: chinaskills dc: chinaskills EOF导入根域ldapadd -x -D cnadmin,dcchinaskills,dccn -W -f rootdn.ldif4.8 创建用户和用户组组织单元创建group.ldifcat group.ldif EOF dn: ouusers,dcchinaskills,dccn objectClass: organizationalUnit ou: users dn: ougroup,dcchinaskills,dccn objectClass: organizationalUnit ou: group EOF导入组织单元ldapadd -x -D cnadmin,dcchinaskills,dccn -W -f group.ldif4.9 创建 LDAP 用户以zsuser为例创建zsuser.ldifcat zsuser.ldif EOF dn: uidzsuser,ouusers,dcchinaskills,dccn objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount uid: zsuser cn: zsuser userPassword: ChinaSkill21 shadowLastChange: 0 shadowMax: 0 shadowWarning: 0 loginShell: /bin/bash uidNumber: 1008 gidNumber: 1008 homeDirectory: /home/zsuser gecos: zsuser EOF导入用户ldapadd -x -D cnadmin,dcchinaskills,dccn -W -f zsuser.ldif按相同格式创建lsusr和wuusr确保每个用户的uidNumber唯一且homeDirectory与用户名对应lsusr: uidNumber 1009, gidNumber 1009, homeDirectory /home/lsusr wuusr: uidNumber 1010, gidNumber 1010, homeDirectory /home/wuusr4.10 创建用户组并添加成员创建download.ldifcat download.ldif EOF dn: cndownload,ougroup,dcchinaskills,dccn objectClass: posixGroup gidNumber: 10001 cn: download memberUid: zsuser memberUid: lsusr memberUid: wuusr EOF导入用户组ldapadd -x -D cnadmin,dcchinaskills,dccn -W -f download.ldif如需让 Apache 使用 LDAP 认证可安装对应模块yum install -y mod_ldap5. 验证结果5.1 服务端验证systemctl is-active slapd ss -lntp | grep :389 slaptest -u ldapsearch -x -H ldap://127.0.0.1 -b dcchinaskills,dccn -LLL dn ldapsearch -x -H ldap://127.0.0.1 -D cnadmin,dcchinaskills,dccn -W -b ouusers,dcchinaskills,dccn (objectClassposixAccount) uid uidNumber gidNumber homeDirectory ldapsearch -x -H ldap://127.0.0.1 -D cnadmin,dcchinaskills,dccn -W -b ougroup,dcchinaskills,dccn (cndownload) memberUid journalctl -u slapd -n 50 --no-pager5.2 客户端验证客户端安装查询工具后执行yum install -y openldap-clients ldapsearch -x -H ldap://LDAP服务器IP -b dcchinaskills,dccn -LLL dn ldapwhoami -x -H ldap://LDAP服务器IP -D cnadmin,dcchinaskills,dccn -W能够查询根域、用户和download用户组ldapwhoami返回管理员 DN服务端 389 端口正常监听说明 LDAP 目录服务配置成功。6. 常见故障排查•Invalid credentials (49)检查绑定 DN 和密码是否正确。•No such object (32)检查查询 Base DN 是否已经导入。•Cant contact LDAP server (-1)检查slapd状态、389 端口、防火墙和服务器地址。• Schema 导入失败检查是否重复导入以及 LDIF 路径是否正确。• 用户无法登录LDAP 查询成功不等于系统已启用 LDAP 登录还需配置 SSSD 或 NSS/PAM。