При конфигурировании pam_ldap на Debian Jessie, изменения пароля конечного пользователя используют rootbinddn, обходя наложение политики OpenLDAP. Это позволяет конечным пользователям изменять свои пароли, не соответствуя политике паролей, определенной в OpenLDAP, например, они могут повторить пароли и проигнорировать минимальную длину пароля. Я хотел бы, чтобы изменения пароля были сделаны, использовав конечных пользователей dn с осуществленными политиками паролей.
Каждая соответствующая конфигурация я могу думать о соответствиях моя рабочая конфигурация на Debian, Сжимает/Хрипящей, но эта проблема происходит на всех протестированных установках Debian Jessie.
Я создал ошибку Debian, но продолжаю исследовать возможность (вероятность), что это - ошибка конфигурации. https://bugs.debian.org/cgi-bin/bugreport.cgi? bug=790488
Блоки соответствующих файлов конфигурации следующие:
/etc/pam_ldap.conf и libnss-ldap.conf идентичны:
debug 0
base dc=internal,dc=net
uri ldaps://ldap-server/
ldap_version 3
rootbinddn cn=admin,dc=internal,dc=net
port 636
pam_password exop
ssl on
tls_checkpeer yes
tls_cacertfile /etc/ssl/certs/ldap-server.pem
/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 try_first_pass
password requisite pam_deny.so
password required pam_permit.so
/etc/nsswitch.conf:
passwd: compat ldap
group: compat ldap
shadow: compat
То, что пароль изменяется rootbinddn, подтверждено от auditlogs на Сервере OpenLDAP, пример записи изменения пароля с сервера Debian Wheezy, сопровождаемого Сервером Debian Jessie:
# modify 1435351337 dc=internal,dc=net uid=wrttest,ou=People,dc=internal,dc=net IP=172.16.11.141:48084 conn=1066
dn: uid=wrttest,ou=People,dc=internal,dc=net
changetype: modify
replace: userPassword
userPassword:: e1NTSEFUdIkewk5eUlOaFA4bmMvMzlvVjg=
-
replace: pwdChangedTime
pwdChangedTime: 20150626204217Z
-
delete: pwdHistory
pwdHistory: 20150327201545Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}NxOHHViV
zwlUZs2TKWKJsdatrfeO3OF
-
add: pwdHistory
pwdHistory: 20150626204217Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}DJJkErb9
CEyPPPYYYAAAAESjR3wDqRj9
-
replace: entryCSN
entryCSN: 20150626204217.320385Z#000000#001#000000
-
replace: modifiersName
modifiersName: uid=wrttest,ou=People,dc=internal,dc=net
-
replace: modifyTimestamp
modifyTimestamp: 20150626204217Z
-
# end modify 1435351337
# modify 1435595556 dc=internal,dc=net cn=admin,dc=internal,dc=net IP=172.16.11.158:34413 conn=1080
dn: uid=wrttest,ou=People,dc=internal,dc=net
changetype: modify
replace: userPassword
userPassword:: e1HUHJFIzFeQHpacEJQGd2VvU08=
-
replace: pwdChangedTime
pwdChangedTime: 20150629163236Z
-
delete: pwdHistory
pwdHistory: 20150626204102Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}Xi1p3Z44556K5c
5tcFOeLaBIL1i
-
add: pwdHistory
pwdHistory: 20150629163236Z#1.3.6.1.4.1.1466.115.121.1.40#38#{SSHA}13lTJmGHfgf
Y45672xoyuVVswcgIP
-
replace: entryCSN
entryCSN: 20150629163236.253982Z#000000#001#000000
-
replace: modifiersName
modifiersName: cn=admin,dc=internal,dc=net
-
replace: modifyTimestamp
modifyTimestamp: 20150629163236Z
-
# end modify 1435595556
Пытаясь определить, куда проблема прибывала из, я понизил пакет Debian Jessie до Хрипящей версии libpam-ldap. Я внес различные изменения в конфигурацию PAM, это или не изменил проблему или повредил аутентификацию LDAP полностью. От включения, отлаживающего в pam_ldap при оставлении его в libnss-ldap, я убедился, что маршрутизация изменения пароля обрабатывалась pam_ldap не libnss-ldap. Я рассмотрел код pam_ldap пакета, чтобы видеть, мог ли я определить, где вещи шли не так, как надо.
Обновление: В попытке отладить это, у меня есть рабочая система Jessie, где я понизил следующие пакеты, чтобы попытаться определить, какой пакет вызывает проблему: libpam-модули 1.1.3-7.1 libpam-modules-run 1.1.3-7.1 1.1.3-7.1 passwd 1:4.1.5.1-1 libpam0g 1.1.3-7.1 libpam-ldap 184-8.6 libpam-во-время-выполнения
Я также пытался удалить libpam-systemd
Обновление 2: После различного тестирования я решил, что проблема с libldap. Если хрипящая система обновлена до версии бэкпортов 2.4.31+really2.4.40+dfsg-1~bpo70+1, она начинает показывать поведение. И если jessie система понижена до 2.4.31-2, она прекращает показывать проблему. Я отправил обновление ошибки Debian и попытался повторно присвоить ее libldap-2.4-2
Ошибка, вызывающая эту конкретную проблему, уже давно присутствует в исходном коде libpam-ldap, но ее эффект проявился только после исправления отдельной ошибки в библиотеке gnutls, которую использует libldap-2.4-2. Подробности можно найти в разъясняющем письме от Райана Тэнди на странице ошибок Debian для этой проблемы. ( Ошибка Debian 790488 ).
Я уже знал, что libpam-ldap активно не разрабатывалась, но предоставляла функции, которые упускала libpam-ldapd (в частности, поддержка политики паролей). Я решил, что лучшим вариантом было бы перевести более новые системы на систему sssd, которая находится в стадии активной разработки, поддерживает наложения политик паролей и другие функции.
Прекратите использовать RootDN каталога в качестве DNS для учетной записи root локальной системы. Rootdn каталога не подлежит контролю доступа. Используйте (при необходимости создайте) запись DNS с соответствующими разрешениями на вашем сервере LDAP для правильного изменения паролей.