Я пытаюсь включить политики паролей пользователей в моем экземпляре OpenLDAP 2.4.44 на основе osixia / docker-openldap Образ Docker.
В основном, следуя это описание, Я установил следующую структуру в моем экземпляре 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, что политика паролей включена и активна?
В моей настройке было 2 проблемы.
В схеме pwdPolicy нет атрибута sn. Итак, чтобы создать политику, ее нужно удалить из файла ldif
В моем экземпляре OpenLDAP был активен cn = config, но модуль политики паролей не был активирован. Следующий файл LDIF необходимо было загрузить с помощью следующей команды командной строки
активировать-ppolicy.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
имя пользователя (отличается от основной учетной записи администратора root cn=admin,dc=mycompany,dc=io
) с паролем по умолчанию "config".