前言
OpenLDAP是一款轻量级目录访问协议,属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用,当然,家用也很适合。
需求闲谈
打造一个比较完善的家庭网络系统,比如即时聊天工具rocketchat、源码仓库gitlab、堡垒机jumpserver、知识库wiki、虚拟化管理平台proxmox、网盘nextcloud、家庭影音jellyfin等等一系列应用,每个应用都设置一套独立的账号密码,管理起来相当的炸裂。好在它们有个共同的优点,集成优秀的OpenLDAP,那么开始本文的故事。
OpenLDAP作为家庭数据中心的核心认证服务,应部署到能够被公共访问的区域,我将它放置到了网络管理区,该区域最新的访问控制策略实行了白名单,可以放心把它放这里。ldap服务对外暴露ldaps协议端口636,其他应用统一通过这个协议对接。另外,设置web化的管理系统,方便系统管理员对它进行管理。同时,还需要设置自助服务,对于家里多个用户的场景,怎么的也得让他们能自己改自己应用账号的密码吧,一条龙服务必须安排到位。
基础软件部署
这里我已经给大家准备好了,依旧采用docker-compose编排,只需要做相应的配置即可自己使用。项目地址为:https://github.com/evling2020/openldap.git
克隆该项目到本地
git clone https://github.com/evling2020/openldap.git
更新 docker-compose.yml
文件中的环境变量为自己的信息,域名信息、管理账号信息等,尤其是画红框的部分。
修改ssp openldap自助改密服务系统的配置文件 ssp/config.inc.local.php
,更新里边ldap管理账号的信息,要与上边配置的保持一致。邮件发送部分,如果有专用的发件邮箱,也可以补充填写,如果没有发件邮箱,也可以不用变更。为了系统的安全性,变量 keyphrase
建议大家也要更改一下。这个文件是从 ssp 主配置文件摘取的一部分,如需更高的定制,可以从主配置文件里拷贝更多设置变量以满足自己的需求。
完成配置后,即刻拉起服务。
docker compose up -d
服务端口说明:
8080: openldap 自助改密服务
8443: openldap 后台管理服务
369,636: ldap、ldaps协议端口
账号信息配置
我这里采用实验机器10.32.12.100进行演示,域名采用 evling.tech 。打开openldap后台管理服务 https://10.32.12.100:8443/ ,登录时需要注意用户名的格式
接下来我们创建两个 OU ,一个用来放置用户账号信息,包括实体账号和虚拟账号,一个用来放置应用分组。
点击根分枝,在它下面创建一个子选项。
选择 OU 模版
输入OU名称为users
确认好信息点击提交
采用同样的方式在users下面创建2个子选项,一个名叫people,一个名叫virtual。
然后尝试在people下创建一个实体账号,账号的类别选用inetOrgPerson即可。
点击ou=people,创建子选项
选取最后一个默认模版
鼠标下滑找到 inetOrgPerson 并选中,点击继续
来到创建用户的详情页面,RDN要选取uid,设置cn、sn、displayName、Email、givenName、Password、User Name等基础属性,不用全部填写。
确认好账户信息,点击提交
创建应用分组。这里以proxmox为例。
点击ou=apps,创建子选项,模版选取最后一个默认,跟创建用户一样。在对象类别处选groupOfNames,这里不要选groupOfUniqueNames,因为在构建镜像时memberOf没有启用这项,如必须使用,请自行修改构建镜像。
RDN选cn,cn填写proxmox,成员那里选择刚创建的用户jmeade2
确认proxmox分组信息,并点击提交
至此已完成用户和分组的创建
应用对接openldap
proxmox对接示例
用户过滤器
(memberOf=cn=proxmox,ou=apps,dc=evling,dc=tech)
jumpserver对接示例
这里罗列两个示例,其他请自行研究。
用户自助改密
用户自助改密服务提供了两种方式,一种是通过验证旧密码改密,一种是发送邮件链接改密。
打开8080端口,这里以http://10.32.12.100:8080/ 为例,首页就是以验证旧密码进行改密,用在密码泄漏等场景。
点击Email,进入邮箱找回密码模式,输入自己的账户名和邮箱地址,提交即可。
结语
至此,前文所有需求皆已实现,开启的统一账号管理之旅吧,欢迎沟通交流属于你的专属最佳实践。