我们在 ldap 服务器上安装了 ppolicy overlay。密码策略可以在 X 次错误密码尝试后正确锁定用户,但我们无法强制用户更改密码。
当我们为用户设置 pwdReset=TRUE 属性时,用户可以从 Ubuntu 客户端机器照常登录。
Ldap 服务器和客户端根据 Ubuntu 操作指南进行设置:https://help.ubuntu.com/12.10/serverguide/openldap-server.html
客户端机器使用 pam_ldap
配置文件 /etc/ldap.conf 有“pam_lookup_policy yes”行
但是 pwdReset 属性被忽略。
根据我在互联网上看到的内容,pam_ldap 应该遵守 ppolicy 并要求用户在设置 pwdReset 时更改密码。但这对我们来说不起作用。
如何让 ubuntu 客户端尊重 pwdReset 属性?
也许我可以打开 pam_ldap 的调试日志?但我不知道该怎么做...
答案1
您必须确保将其pwdMustChange
设置TRUE
为用户的有效密码策略。
看slapo-ppolicy 手册页了解更多信息。
答案2
我也遇到了这个问题——我的特殊问题是,虽然一些第三方应用程序(在我们的例子中是 Okta)会查找pwdReset
,但pam_ldap
插件却不会。
看完pam_ldap
此处托管的源代码后:https://github.com/wfhu/pam_ldap-- 我得出的结论是pam_ldap
完全忽略了pwdReset
OpenLDAP 的一部分ppolicy.schema
。您可以在此处找到 OpenLDAP 使用的架构:http://www.zytrax.com/books/ldap/ape/ppolicy.html
注意:我认为问题在于 OpenLDAP 策略属性与 LDAP 服务器实现所使用的原始模式(Netscape?/UniversityOfMichigan?/Sun?)不同,而这正是所pam_ldap
期望的。
什么做正常工作是objectClassshadow*
的一部分的属性shadowAccount
。
[步骤适用于 Ubuntu]
通过检查确保您的用户在 LDAP 中设置了密码策略
pwdPolicySubentry
:ldapsearch (...) -b dc=example,dc=org "(uid=testinguser)" pwdPolicySubentry
检查你的用户
shadow*
信息slapcat -a uid=testinguser
设置
shadowLastChange
为 0 以允许pam_ldap
识别过期的密码pwdReset
这可以通过检查和更新的脚本来完成shadowLastChange
。
设置完成后,PAM 将正确地强制用户在登录时更改密码。
也可以看看: http://www.openldap.org/lists/openldap-technical/201210/msg00044.html