OpenLDAP ppolicy 与 passwd 配合使用,但与 ldappasswd 不配合使用

OpenLDAP ppolicy 与 passwd 配合使用,但与 ldappasswd 不配合使用

我已经研究这个问题大约一个星期了,但似乎无法弄清楚为什么会发生这种情况。

我已经开始passwd工作,让用户从客户端机器更改自己的 ldap 密码,并且它与 ppolicy 覆盖一起工作:

$ passwd
Current Password: 
New password: 
BAD PASSWORD: The password is shorter than 8 characters
New password: 
BAD PASSWORD: The password is a palindrome
New password: 
BAD PASSWORD: The password is the same as the old one
passwd: Have exhausted maximum number of retries for service
passwd: password unchanged

然而,当我使用ldappasswd它来更改密码时,它允许我创建一个字母密码和回文密码,但是不是我的历史记录中的密码:

$ ldappasswd -H ldap://**** -x -D "uid=test,ou=Users,dc=***,dc=***,dc=***" -W -A -S
Old password: 
Re-enter old password: 
New password: 
Re-enter new password: 
Enter LDAP Password: 
$
# no issues entering "a" as the password (this is bad)
$ ldappasswd -H ldap://**** -x -D "uid=test,ou=Users,dc=***,dc=***,dc=***" -W -A -S
Old password: 
Re-enter old password: 
New password: 
Re-enter new password: 
Enter LDAP Password: 
Result: Constraint violation (19)
Additional info: Password is in history of old passwords
$
# entered "password" as the password and it doesn't let me change it

理想情况下,我希望两者passwdldappasswd遵循密码策略。

以下是 slapd 配置中的访问规则:

/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif

...
# manager is the root bind dn, with password in /etc/ldap.secret
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn.base="uid=manager,ou=Users,dc=***,dc=***,dc=***" write by anonymous auth by * none
olcAccess: {1}to * by * read by dn.base="uid=manager,ou=Users,dc=***,dc=***,dc=***" write
...

在我看来,这就像passwd绑定到根 DN,因为删除管理员帐户的访问权限会导致passwd完全停止工作,并且ldappasswd不受影响。

任何帮助都将受到赞赏。

答案1

那些来自passwd 看起来根本不像是来自政策覆盖。 他们来自当地的最有可能的是,其他 PAM 模块所做的检查pam_cracklib。当然,本地 PAM 配置对直接联系 LDAP 服务器的工具没有影响。

换句话说,听起来您的本地工具运行良好,但是策略覆盖不是工作正常(即,它没有正确执行最小长度限制;而是由您的本地配置来执行该限制)。

(另外,如果你的 PAM LDAP 配置设置为使用“管理员”DN 进行绑定……那就有点坏的。这意味着任何服务器上获得 root 权限(甚至只是“文件读取”漏洞)的人都可以立即从 /etc/ldap.conf 获取管理员密码并获得对 LDAP 目录的完全访问权限。)

相关内容