Как мне заставить парольную политику openldap работать на 12.04 или 14.04?
Я установил оверлей, установил политику по умолчанию, я вижу в syslog
что на политику ссылаются, но она, похоже, не применяется.
В частности, я тестировал pwdMinLength
из 10. Однако я могу изменить пароль на любой из 6 символов или более. Я перепутался с slapd
конфигурации, pam
, ldap.conf
... Я просто не могу понять это.
Вот мой /etc/pam.d/common-passwd
:
password [success=2 default=ignore] pam_unix.so obscure sha512
password [success=1 user_unknown=ignore default=die] pam_ldap.so
password requisite pam_deny.so
password required pam_permit.so
Вот мое наложение:
root@ldap:/etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb# cat olcOverlay\=\{0\}ppolicy.ldif
# AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify.
# CRC32 e13ac822
dn: olcOverlay={0}ppolicy
objectClass: olcOverlayConfig
objectClass: olcPPolicyConfig
olcOverlay: {0}ppolicy
olcPPolicyDefault: cn=default,ou=policies,dc=mydomain,dc=local
olcPPolicyUseLockout: FALSE
olcPPolicyForwardUpdates: FALSE
structuralObjectClass: olcPPolicyConfig
entryUUID: 73ace97c-bd97-1033-89a7-83eeab8cfd47
creatorsName: cn=config
createTimestamp: 20140821155626Z
olcPPolicyHashCleartext: TRUE
entryCSN: 20140822194949.226250Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20140822194949Z
root@ldap:/etc/ldap/slapd.d/cn=config# grep -r pol *
cn=module{0}.ldif:olcModuleLoad: {1}ppolicy
cn=schema/cn={4}ppolicy.ldif:dn: cn={4}ppolicy
cn=schema/cn={4}ppolicy.ldif:cn: {4}ppolicy
cn=schema.ldif: w policy state updates to be forwarded via updateref' SYNTAX OMsBoolean SINGL
olcDatabase={1}hdb/olcOverlay={0}ppolicy.ldif:dn: olcOverlay={0}ppolicy
olcDatabase={1}hdb/olcOverlay={0}ppolicy.ldif:olcOverlay: {0}ppolicy
olcDatabase={1}hdb/olcOverlay={0}ppolicy.ldif:olcPPolicyDefault: cn=default,ou=policies,dc=mydomain,dc=local
Here is the policy:
dn: ou=policies,dc=mydomain,dc=local
objectClass: organizationalUnit
objectClass: top
ou: policies
structuralObjectClass: organizationalUnit
entryUUID: 02bd96f4-b6ac-1033-8430-5db15c0b2efc
creatorsName: cn=admin,dc=mydomain,dc=local
createTimestamp: 20140812203558Z
entryCSN: 20140812203558.385280Z#000000#000#000000
modifiersName: cn=admin,dc=mydomain,dc=local
modifyTimestamp: 20140812203558Z
dn: cn=default,ou=policies,dc=mydomain,dc=local
objectClass: pwdPolicy
objectClass: device
objectClass: top
pwdAttribute: userPassword
pwdMaxAge: 3024000
pwdExpireWarning: 1814400
pwdInHistory: 3
pwdMaxFailure: 3
pwdLockout: TRUE
pwdLockoutDuration: 600
pwdGraceAuthNLimit: 0
pwdFailureCountInterval: 0
pwdMustChange: TRUE
pwdAllowUserChange: TRUE
structuralObjectClass: device
entryUUID: 29977c86-b74c-1033-8432-5db15c0b2efc
creatorsName: cn=admin,dc=mydomain,dc=local
createTimestamp: 20140813154223Z
pwdMinLength: 10
cn: default
pwdCheckQuality: 2
pwdSafeModify: TRUE
entryCSN: 20140822193458.399642Z#000000#000#000000
modifiersName: cn=admin,dc=mydomain,dc=local
modifyTimestamp: 20140822193458Z
Я был вокруг и вокруг этого. Любая помощь будет оценена
1 ответ
Моя настройка ppolicy похожа на вашу конфигурацию, и она работает для меня. Я думаю, что все зависит от того, как вы проверяете свою политику паролей.
Я проверил это с помощью:
(пароль пользователя11 меняется):
ldappasswd -x -h ubuntu-vostro -D "cn = пользователь11, ou = пользователи, dc = ваш домен,dc=net" -W -S "cn= пользователь11, ou = пользователи, dc = ваш домен,dc=net" (примечание -D "cn = user11...")
phpLdapAdmin, залогинен как user11, очистил кеш, изменил пароль
self-service-password (скрипт php, работающий на сервере apache2), зарегистрированный как user11. Убедитесь, что в config.inc.php у вас есть $who_change_password = "user"; (не "менеджер").
Похоже, rootdn (менеджер / администратор) обходит все политики паролей, поэтому, если вы используете учетную запись rootdn (%ADMIN%) для изменения пароля пользователя, ваша политика pwdMinLength не будет выполняться принудительно.
Вы можете включить мониторинг openLDAP и запустить эту команду, чтобы убедиться, что ваш оверлей ppolicy правильно загружен: ldapsearch -x -D dc= ваш домен, dc = net -w -b 'cn = Overlays, cn = Monitor' -s base '(objectClass =) '''' +