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

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, он не может, что приводит к сбою аутентификации. Я протестировал кредиты тестового пользователя на сервере 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 использует один и тот же процесс привязки / аутентификации для начальной привязки и привязки аутентификации? Я изо всех сил пытаюсь понять, как привязка может быть успешной, когда это начальная привязка, но терпит неудачу, когда это привязка для аутентификации.

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

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, будет буквальной строкой 'НЕПРАВИЛЬНО', что, конечно, обязательно неверно и кажется очень странное поведение со мной (подробнее 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.

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

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

apt-get установить libnss-ldap

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

Пара вещей:

1.) Если вы вводите getent passwd $ username для пользователя, который существует только в 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 pam аутентифицируется с помощью testuser. Почему несоответствие. Убедитесь, что оба работают с ldapsearch

В моем случае, если это может помочь, я забыл добавить ldap модуль в /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat ldap
group:          compat ldap
shadow:         compat ldap
gshadow:        files ldap