Назад | Перейти на главную страницу

изменение пароля пользователя pam_ldap с использованием rootbinddn в Debian Jessie

При настройке pam_ldap в Debian Jessie при изменении пароля конечного пользователя используется rootbinddn, обходя наложение ppolicy OpenLDAP. Это позволяет конечным пользователям изменять свои пароли без соответствия политике паролей, определенной в OpenLDAP, например, они могут повторять пароли и игнорировать минимальную длину пароля. Я хотел бы, чтобы изменения пароля выполнялись с использованием DNS конечных пользователей с соблюдением политик паролей.

Каждая соответствующая конфигурация, которую я могу придумать, соответствует моей рабочей конфигурации в Debian Squeeze / Wheezy, но эта проблема возникает во всех протестированных установках 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, подтверждается журналами аудита на сервере 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 для Wheezy. Я внес различные изменения в конфигурацию PAM, которые либо не устранили проблему, либо полностью нарушили аутентификацию LDAP. Включив отладку в pam_ldap, оставив ее выключенной в libnss-ldap, я убедился, что маршрутизация смены пароля обрабатывается pam_ldap, а не libnss-ldap. Я просмотрел код пакета pam_ldap, чтобы узнать, могу ли я определить, где что-то идет не так.

Обновление: в попытке отладить это, у меня есть работающая система Jessie, в которой я понизил следующие пакеты, чтобы попытаться определить, какой пакет вызывает проблему: libpam-modules 1.1.3-7.1 libpam-modules-run 1.1.3- 7.1 libpam-runtime 1.1.3-7.1 passwd 1: 4.1.5.1-1 libpam0g 1.1.3-7.1 libpam-ldap 184-8.6

Я также попытался удалить libpam-systemd

Обновление 2: после различных тестов я определил, что проблема связана с libldap. Если система wheezy обновлена ​​до версии 2.4.31 + действительно2.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, чтобы правильно изменять пароли.