搭建 LDAP 服务
搭建 LDAP(轻型目录访问协议)服务器是实现企业级集中身份认证和权限管理的核心步骤。最常用的开源实现是 OpenLDAP。
以下是在基于 Debian/Ubuntu 的 Linux 系统上搭建 OpenLDAP 服务器的详细步骤。
环境准备与安装
在开始之前,请确保你的系统软件包是最新的,并设置好主机名。
在安装过程中,系统会提示你设置 LDAP 管理员密码。请务必记住这个密码,稍后配置时会频繁使用。
配置 OpenLDAP 服务器
虽然安装时已经初始化了部分设置,但通常我们需要根据具体的域名(如 example.com)进行自定义配置。
重新配置 slapd
执行以下命令进入交互式配置界面:
配置建议:
- Omit OpenLDAP server configuration? 选择 No。
- DNS domain name: 输入你的域名(例如
centre.example.com)。这将决定你的基准识别名(Base DN),如dc=centre,dc=example,dc=com。 - Organization name: 输入你的组织名称。
- Administrator password: 输入之前设置的管理员密码。
- Database backend: 建议选择 MDB。
- Remove database when slapd is purged? 选择 No。
- Move old database? 选择 Yes。
理解 LDAP 层级结构
LDAP 的数据是以树状结构存储的。为了方便管理,我们通常会创建两个"组织单元"(Organizational Units, OU):一个存放用户(Users),一个存放组(Groups)。
创建组织单元 (OU)
在 LDAP 中,我们使用 LDIF (LDAP Data Interchange Format) 文件来添加或修改目录。
创建一个名为 base.ldif 的文件:
导入数据:
添加用户和组
创建一个名为 groups.ldif 的文件来定义一个新组:
创建一个名为 users.ldif 的文件来定义一个新用户:
如果您将来要集成 GitLab、Jenkins 或 VPN,它们通常会搜索
uid属性来验证登录名。
FAQ
如果不需要为该用户授予服务器的登录权限,是不是可以移除 objectClass: posixAccount?
是的,完全可以移除,但你需要注意属性之间的"绑定关系"。
如果你只需要这个用户用于 Web 应用登录(如 GitLab, Jenkins, Wiki)或作为电子邮件联系人,而不需要他通过 SSH 或控制台登录 Linux 服务器,移除 posixAccount 是更规范的做法。
当你移除 objectClass: posixAccount 时,以下属性必须一并删除,因为它们属于该类定义的"强制或可选属性":
uidNumbergidNumberhomeDirectoryloginShell
此外, shadowAccount 通常也与系统登录挂钩,如果不需要管理 Linux 密码过期策略,也可以一并移除。
后续建议与管理工具
命令行管理 LDAP 较为繁琐,建议使用以下工具进行可视化操作:
- phpLDAPAdmin: 基于 Web 的管理界面,适合快速上手;
- Apache Directory Studio: 强大的跨平台桌面客户端,适合复杂的架构设计。
- 安全加固: 默认情况下 LDAP 是明文传输的,建议配置 LDAPS (LDAP over SSL/TLS) 来加密 636 端口的通信。