我正在尝试根据以下信息在我的 OpenLDAP 2.4.44 实例中启用用户密码策略:osixia/docker-openldapDocker 镜像。
基本上,遵循这个描述,我在我的 OpenLDAP 实例中设置了以下结构:
ldapsearch -h localhost -p 1389 -D "cn=admin,dc=mycompany,dc=io" -w mypassword -b "dc=mycompany,dc=io" -s sub "(objectclass=*)"
# mycompany.io
dn: dc=mycompany,dc=io
objectClass: top
objectClass: dcObject
objectClass: organization
o: Example Inc.
dc: mycompany
# admin, mycompany.io
dn: cn=admin,dc=mycompany,dc=io
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword:: hashhashhash
# my-group, mycompany.io
dn: ou=my-group,dc=mycompany,dc=io
objectClass: organizationalUnit
objectClass: extensibleObject
objectClass: top
ou: my-group
# policies, mycompany.io
dn: ou=policies,dc=mycompany,dc=io
objectClass: organizationalUnit
objectClass: extensibleObject
objectClass: top
ou: policies
# passwordDefault, policies, mycompany.io
dn: cn=passwordDefault,ou=policies,dc=mycompany,dc=io
objectClass: pwdPolicy
objectClass: person
objectClass: top
cn: passwordDefault
sn: passwordDefault
pwdAttribute: 2.5.4.35
pwdAllowUserChange: TRUE
pwdCheckQuality: 2
pwdExpireWarning: 600
pwdFailureCountInterval: 30
pwdGraceAuthNLimit: 5
pwdLockout: TRUE
pwdLockoutDuration: 0
pwdMaxAge: 0
pwdMaxFailure: 10
pwdMaxRecordedFailure: 10
pwdMinAge: 0
pwdMinLength: 8
pwdMustChange: FALSE
pwdSafeModify: FALSE
pwdInHistory: 2
# test-admin, my-group, mycompany.io
dn: uid=test-admin,ou=my-group,dc=mycompany,dc=io
uid: test-admin
userPassword:: hashhashhash
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
# test-user-1, my-group, mycompany.io
dn: uid=test-user-1,ou=my-group,dc=mycompany,dc=io
uid: test-user-1
userPassword:: hashhashhash
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
# test-user-2, my-group, mycompany.io
dn: uid=test-user-2,ou=my-group,dc=mycompany,dc=io
uid: test-user-2
objectClass: account
objectClass: simpleSecurityObject
objectClass: top
userPassword:: hashhashhash
# search result
search: 2
result: 0 Success
# numResponses: 9
# numEntries: 8
因此,根据政策,我预计我test-user-2
将不能使用相同的密码两次(pwdInHistory: 2
)。
因此,我尝试验证:
ldappasswd -h localhost -p 1389 -D "uid=test-user-2,ou=my-group,dc=mycompany,dc=io" -W -A -S
但不幸的是,我可以test-user-2
随意重复使用旧密码。所以,很遗憾,密码策略不起作用。
有人能发现我的配置中的错误吗?
我如何验证密码策略是否正在应用?
如何在 OpenLDAP 中验证密码策略是否已启用且处于活动状态?
答案1
我的设置中存在两个问题。
pwdPolicy 架构中没有“sn”属性。因此,为了创建策略,需要将其从 ldif 文件中删除
我的 OpenLDAP 实例中的 cn=config 处于活动状态,但密码策略模块未激活。必须使用以下命令行命令加载以下 LDIF 文件
激活策略文件
dn: cn=module,cn=config
cn: module{0}
objectClass: top
objectClass: olcModuleList
olcModuleLoad: ppolicy.la
olcModulePath: /usr/lib/ldap
dn: olcOverlay={0}ppolicy,olcDatabase={1}hdb,cn=config
objectClass: olcPPolicyConfig
objectClass: olcOverlayConfig
olcOverlay: ppolicy
olcPPolicyDefault: cn=passwordDefault,ou=policies,dc=mycompany,dc=io
olcPPolicyForwardUpdates: FALSE
olcPPolicyHashCleartext: TRUE
olcPPolicyUseLockout: FALSE
上传命令
ldapmodify -h localhost -p 1389 -D "cn=admin,cn=config" -w config -a -f ./activate-ppolicy.ldif
请注意特殊cn=admin,cn-config
用户名(不同于主根管理员帐户cn=admin,dc=mycompany,dc=io
)和默认密码“config”。