Вопрос: Ошибка аутентификации PAM_LDAP с правильными учетными данными на freebsd


Мне нужно, чтобы наши серверы freebsd авторизовались через AD, но это дает мне проблемы.

Окружающая среда: Бэкэнд AD (Win 2k8r2). Это работает с другими хостами linux, которые через SSSD
FreeBSD 9.1 для клиентских серверов

Я настроил все, о чем я могу думать, и я думаю, что это правильно, но когда я пытаюсь войти в систему с учетной записью AD, она не работает:

pam_ldap: error trying to bind as user "CN=testuser,CN=Users,DC=example,DC=com" (Invalid credentials)

Поэтому я знаю, что он проходит мимо первоначального связывания, поскольку DN, который он возвращает, является правильным и поступает с сервера AD. Когда он пытается связать с этим DN, он не может, что приводит к сбою auth. Я протестировал учетные записи тестового пользователя на сервере AD, используя ldapsearch и даже установил его как DN связывания по умолчанию в ldap.conf, и он работает для всех тестов.

Я не могу для жизни понять, почему работает первоначальное связывание, но тогда сбой пользователя не выполняется.

Для справки, вот мои файлы конфигурации:

/usr/local/etc/ldap.conf

pam_login_attribute uid
base dc=example,dc=com
uri ldap://xxx.xxx.xxx.xxx/
ssl no
binddn CN=ro_user,CN=Users,DC=example,DC=com
bindpw somerandompw

/usr/local/etc/openldap/ldap.conf

pam_login_attribute uid
base dc=example,dc=com
uri ldap://xxx.xxx.xxx.xxx/
ssl no

/etc/pam.d/sshd

auth        sufficient  pam_opie.so     no_warn no_fake_prompts
auth        requisite   pam_opieaccess.so   no_warn allow_local
auth        sufficient  /usr/local/lib/pam_ldap.so  no_warn debug
auth        required    pam_unix.so     no_warn try_first_pass

account     required    pam_nologin.so
account     required    pam_login_access.so
account     required    pam_unix.so
account         required        /usr/local/lib/pam_ldap.so      no_warn ignore_authinfo_unavail ignore_unknown_user

session     required    pam_permit.so

password    required    pam_unix.so     no_warn try_first_pass

РЕДАКТИРОВАТЬ: У меня возникла мысль - кто-нибудь знает, может ли pam_ldap использовать тот же процесс связывания / аутентификации для первоначального связывания и связывания аутентификации? Я изо всех сил пытаюсь понять, как связывание может быть успешным, когда оно является первоначальным связыванием, но терпит неудачу, когда оно является связующим для аутентификации.


6
2018-02-26 06:06


Источник




Ответы:


Несколько вещей:

1.) Если вы используете имя пользователя getent passwd $ для пользователя, который существует только в ldap, он отбрасывает правильную запись?

2.) Как выглядит ваш файл /etc/pam.d/system-auth.

3.) Правильно ли он возвращает результаты для

ldapsearch -D $BINDDN -W -H ldap://$HOST 'uid=$RANDOM_USER'

Наконец, похоже, что binddn у вас в /usr/local/etc/ldap.conf использует ro_user, а патч binddn - auth'ing with is testuser. Почему расхождение. Убедитесь, что оба работают с ldapsearch


1
2018-03-05 16:42





Я изо всех сил старался изо дня в день с очень похожей ошибкой выше. В моем случае я видел такие сообщения:

Nov 26 15:19:25 digitalocean sshd[2373]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=60.196-30-62.static.virginmediabusiness.co.uk
Nov 26 15:19:25 digitalocean sshd[2373]: pam_ldap: error trying to bind as user "cn=dan.howard,ou=users,dc=example,dc=com" (Invalid credentials)
Nov 26 15:19:27 digitalocean sshd[2373]: Failed password for invalid user dan.howard from 62.30.196.60 port 63534 ssh2

«Недопустимые учетные данные» - это немного красная селедка здесь, и важным было «недопустимый пользователь dan.howard». По-видимому, NSS сначала ищет имя пользователя, и если оно не распознает имя, то пароль, отправленный на сервер LDAP, будет буквенной строкой «INCORRECT», которая, конечно, обязательно ошибается и кажется очень странное поведение для меня (подробнее https://unix.stackexchange.com/questions/163213/while-trying-to-ssh-pam-ldap-always-sends-the-password-incorrect-causing-bind)

Я видел множество учебных пособий, в которых мне было предложено добавить ldap в файл /etc/nsswitch.conf для строк passwd, group и shadow, а затем перезапустить nscd.

Я сделал это, и он сказал [ok], поэтому я не мог понять, что происходит не так.

Оказывается, у меня не было установленного модуля ldap nss. Все, что мне нужно было сделать, это:

apt-get install libnss-ldap

Затем NSS смог идентифицировать пользователей LDAP, что означало, что PAM отправит правильные пароли, и я смог войти в систему. Надеюсь, это поможет кому-то другому.


0
2017-11-26 22:40