Я видел здесь несколько других вопросов, касающихся аналогичной проблемы, но я не нашел ничего, что действительно сработало для меня.
Моя цель - аутентифицировать (в основном для SSH) все машины Debian в каталоге UCS (OpenLDAP) - в будущем только тогда, когда пользователь является членом определенной группы ldap. Но в настоящее время я изо всех сил пытаюсь заставить его работать даже без членства в группе.
Я всегда получаю ошибку:
nslcd: [7b23c6] <authc="test"> ОТЛАДКА: ldap_sasl_bind("uid=test,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local") (ppolicy=yes)
nslcd: [7b23c6] <authc="test"> DEBUG: ldap_parse_result() результат: неверные учетные данные
nslcd: [7b23c6] <authc="test"> DEBUG: не удалось выполнить привязку к серверу LDAP ldap://ldap.securitywho.local: неверные учетные данные
nslcd: [7b23c6] <authc="test"> ОТЛАДКА: ldap_unbind()
nslcd: [7b23c6] <authc="test"> uid=test,cn=users,dc=securitywho,dc=local: неверные учетные данные
nslcd: [7b23c6] <authc="test"> ОТЛАДКА: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [7b23c6] <authc="test"> ОТЛАДКА: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local
Пользователь привязки работает, я все проверил с помощью команды ldapsearch - там все работает нормально с пользователем привязки, и если я использую неправильный пароль, отладка показывает ошибку, что функция привязки не работает.
Ldapsearch использовал - и он работает:
ldapsearch -x -H ldap://ldap.securitywho.local -D "uid=srv_linux,cn=users,dc=securitywho,dc=local" -b cn=users,dc=securitywho,dc=local -W
Снимок из вывода:
# тест, пользователи, securitywho.local
DN: uid=test,cn=users,dc=securitywho,dc=local
krb5MaxLife: 86400
krb5MaxRenew: 604800
ИД: тест
uidNumber: 2008
сн: тест
гекос: тест
отображаемое имя: тест
homeDirectory: /home/test
логинShell: /bin/bash
mailForwardCopyToSelf: 0
Сп: тест
krb5PrincipalName: [email protected]
shadowLastChange: 18992
самбаBadPasswordCount: 0
самбабадпассвордтиме: 0
sambaAcctFlags: [U]
класс объекта: shadowAccount
класс объекта: верхний
класс объекта: sambaSamAccount
класс объекта: автомонтирование
класс объекта: univentionPWHistory
класс объекта: человек
класс объекта: krb5KDCEntry
класс объекта: univentionObject
класс объекта: инетОргперсон
класс объекта: krb5Principal
objectClass: организацияPerson
класс объекта: univentionMail
класс объекта: posixAccount
самбаSID: S-1-5-21-258973841-725078507-1497259816-5016
номер гида: 5001
sambaPrimaryGroupSID: S-1-5-21-258973841-725078507-1497259816-513
univentionObjectType: пользователи/пользователь
Просто чтобы убедиться, что мой тестовый пользователь работает, я запустил команду ldapsearch с тестовым пользователем — и здесь все сработало. Я проверил это с несколькими учетными записями в каталоге OpenLDAP, все работали здесь, но ни одна, когда я пробовал это для SSH.
ldapsearch -x -H ldap://ldap.securitywho.local -D "uid=test,cn=users,dc=securitywho,dc=local" -b cn=users,dc=securitywho,dc=local -W
Конфигурация /etc/nsLCd.conf
# /etc/nsLCd.conf
# Конфигурационный файл nslcd. См. nslcd.conf(5)
# для подробностей.
# Пользователь и группа nslcd должны работать как.
uid nslcd
гид nslcd
# Расположение, в котором должны быть доступны серверы LDAP.
URI ldap://ldap.securitywho.local
# База поиска, которая будет использоваться для всех запросов.
база cn=users,dc=securitywho,dc=local
# Используемая версия протокола LDAP.
#ldap_версия 3
# DN для привязки для обычного поиска.
binddn uid=srv_linux,cn=users,dc=securitywho,dc=local
bindpw <SUPERSECUREPASSWORD>
# DN, используемый для изменения пароля пользователем root.
#rootpwmoddn cn=admin,dc=пример,dc=com
# параметры SSL
#ssl выключен
#tls_reqcert никогда
#tls_cacertfile /etc/ssl/certs/ca-certificates.crt
# Область поиска.
#область подпрограммы
пароль фильтра (objectClass=*)
карта passwd uid uid
тень фильтра (objectClass=*)
uid карты теней uid
Полный вывод отладки nslcd:
root@ipam:~# nslcd -d
nslcd: ОТЛАДКА: NSS_LDAP nss-pam-ldapd 0.9.11
nslcd: ОТЛАДКА: CFG: потоки 5
nslcd: ОТЛАДКА: CFG: uid nslcd
nslcd: ОТЛАДКА: CFG: gid 117
nslcd: DEBUG: CFG: uri ldap://ldap.securitywho.local
nslcd: ОТЛАДКА: CFG: ldap_version 3
nslcd: DEBUG: CFG: binddn uid=srv_linux,cn=users,dc=securitywho,dc=local
nslcd: ОТЛАДКА: CFG: bindpw ***
nslcd: DEBUG: CFG: base cn=users,dc=securitywho,dc=local
nslcd: DEBUG: CFG: область действия
nslcd: DEBUG: CFG: deref никогда
nslcd: DEBUG: CFG: ссылки да
nslcd: DEBUG: CFG: псевдонимы фильтров (objectClass=nisMailAlias)
nslcd: DEBUG: CFG: фильтровать эфиры (objectClass=ieee802Device)
nslcd: DEBUG: CFG: группа фильтров (objectClass=posixGroup)
nslcd: DEBUG: CFG: фильтровать хосты (objectClass=ipHost)
nslcd: DEBUG: CFG: фильтровать сетевую группу (objectClass=nisNetgroup)
nslcd: DEBUG: CFG: фильтровать сети (objectClass=ipNetwork)
nslcd: DEBUG: CFG: пароль фильтра (objectClass=*)
nslcd: DEBUG: CFG: фильтрация протоколов (objectClass=ipProtocol)
nslcd: DEBUG: CFG: фильтровать rpc (objectClass=oncRpc)
nslcd: DEBUG: CFG: службы фильтрации (objectClass=ipService)
nslcd: DEBUG: CFG: тень фильтра (objectClass=*)
nslcd: DEBUG: CFG: сопоставление группы userPassword "*"
nslcd: DEBUG: CFG: map passwd userPassword "*"
nslcd: DEBUG: CFG: map passwd gecos "${gecos:-$cn}"
nslcd: DEBUG: CFG: сопоставление теневого пароля пользователя "*"
nslcd: DEBUG: CFG: отображать тень shadowLastChange "${shadowLastChange:--1}"
nslcd: DEBUG: CFG: map shadow shadowMin "${shadowMin:--1}"
nslcd: DEBUG: CFG: map shadow shadowMax "${shadowMax:--1}"
nslcd: DEBUG: CFG: map shadow shadowWarning "${shadowWarning:--1}"
nslcd: DEBUG: CFG: map shadow shadowInactive "${shadowInactive:--1}"
nslcd: DEBUG: CFG: map shadow shadowExpire "${shadowExpire:--1}"
nslcd: DEBUG: CFG: map shadow shadowFlag "${shadowFlag:-0}"
nslcd: DEBUG: CFG: pam_authc_ppolicy да
nslcd: ОТЛАДКА: CFG: bind_timelimit 10
nslcd: DEBUG: CFG: лимит времени 0
nslcd: DEBUG: CFG: idle_timelimit 0
nslcd: DEBUG: CFG: reconnect_sleeptime 1
nslcd: ОТЛАДКА: CFG: reconnect_retrytime 10
nslcd: DEBUG: CFG: ssl выключен
nslcd: DEBUG: CFG: требование tls_reqcert
nslcd: ОТЛАДКА: CFG: размер страницы 0
nslcd: ОТЛАДКА: CFG: nss_min_uid 0
nslcd: ОТЛАДКА: CFG: nss_uid_offset 0
nslcd: ОТЛАДКА: CFG: nss_gid_offset 0
nslcd: DEBUG: CFG: nss_nested_groups нет
nslcd: DEBUG: CFG: nss_getgrent_skipmembers нет
nslcd: DEBUG: CFG: nss_disable_enumeration нет
nslcd: DEBUG: CFG: validnames /^[a-z0-9._@$()]([a-z0-9._@$() \~-]*[a-z0-9._@$ ()~-])?$/i
nslcd: DEBUG: CFG: ignorecase нет
nslcd: ОТЛАДКА: CFG: pam_authc_search БАЗА
nslcd: DEBUG: CFG: кэш dn2uid 15 м 15 м
nslcd: начиная с версии 0.9.11
nslcd: ОТЛАДКА: initgroups("nslcd",117) выполнено
nslcd: ОТЛАДКА: setgid(117) выполнено
nslcd: ОТЛАДКА: setuid(110) выполнено
nslcd: DEBUG: unlink() из /var/run/nslcd/socket не удалось (игнорируется): нет такого файла или каталога
nslcd: прием подключений
nslcd: [8b4567] ОТЛАДКА: подключение от pid=896662 uid=0 gid=0
nslcd: [8b4567] <authc="test"> ОТЛАДКА: nslcd_pam_authc("test","sshd","***")
nslcd: [8b4567] <authc="test"> ОТЛАДКА: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_initialize(ldap://ldap.securitywho.local)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_rebind_proc()
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_simple_bind_s("uid=srv_linux,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local")
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local
nslcd: [8b4567] <authc="test"> ОТЛАДКА: myldap_search(base="uid=test,cn=users,dc=securitywho,dc=local", filter="(objectClass=*)")
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_initialize(ldap://ldap.securitywho.local)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_rebind_proc()
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_sasl_bind("uid=test,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local") (ppolicy=yes)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_parse_result() результат: неверные учетные данные
nslcd: [8b4567] <authc="test"> DEBUG: не удалось выполнить привязку к серверу LDAP ldap://ldap.securitywho.local: неверные учетные данные
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_unbind()
nslcd: [8b4567] <authc="test"> uid=test,cn=users,dc=securitywho,dc=local: неверные учетные данные
nslcd: [8b4567] <authc="test"> ОТЛАДКА: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [8b4567] <authc="test"> ОТЛАДКА: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local
Я пытался поиграть с «областью поиска» в /etc/nslcd.conf, но никакая комбинация не заработала. Что я в настоящее время не вижу никаких проблем с конфигурацией - у кого-то была такая же проблема или кто-то может мне помочь?
Я установил все с помощью:
apt-get установить libpam-ldapd