OpenLDAP 2.5密码质量控制的正确实现方案问询
问题背景
OpenLDAP的ppolicy overlay提供密码策略控制,可配置最小密码长度、密码过期、最大失败登录锁定及密码历史等规则。
ppolicy还包含pwdCheckModule属性,可加载第三方模块以强制实施密码质量要求,如大小写字母、数字及特殊字符的数量限制。
根据slapo-ppolicy手册页:
pwdCheckModule是LDAP密码策略提案的非标准扩展
问题描述
目前可用的ppolicy第三方pwdCheckModule选择有限且缺乏维护。例如pqchecker已停止维护,使用其deb包在Ubuntu 22.04上安装后无法正常运行,报错提示缺少文件,经strace初步排查仍未明确原因,且会产生日志噪声。考虑到pqchecker及类似的BOFH、ppolicy-check-password的最后更新时间,这些方案均不可行。
当前临时解决方案
我们部署了OpenLDAP服务器用于商业应用及Linux系统认证,在Linux客户端使用nslcd和libpam-cracklib强制实施密码质量控制,运行状况良好。借助LDAP用户账户的shadownLastChange属性,用户首次登录Linux时需强制修改密码;密码长度等规则由ppolicy实施,密码质量由libpam-cracklib管控。
临时方案的缺陷
nslcd不支持配置用于修改用户密码的绑定DN:仅提供用于搜索DIT的绑定DN,以及root执行passwd命令时可选的绑定DN,但用户执行passwd命令时,nslcd会以用户身份绑定LDAP来修改密码。这要求用户账户拥有修改自身密码的权限,导致用户可直接使用ldappasswd命令修改密码,绕过libpam-cracklib的密码质量控制。尽管组织内用户责任心强且具备安全意识,但此问题可能导致安全审计不通过。
问询
在OpenLDAP 2.5中实现密码质量控制的正确方案是什么?我曾调研sssd是否能避免用户绑定LDAP修改密码,但未找到可行方法。
内容的提问来源于stack exchange,提问作者Arno

