Вопрос или проблема
У меня openldap и сервер Debian 8. Я хочу настроить аутентификацию ldap. Я установил ldap-utils libnss-ldapd libpam-ldapd и настроил их.
# getent passwd user.name
user.name:x:1537:3174:User Name:/home/user.name:/bin/bash
# getent shadow user.name
user.name:*:15140:0:99999:7:::0
Когда я вхожу в систему, у меня возникает следующая ошибка:
19 сен 17:49:49 LDAPClient login[475]: pam_unix(login:auth): ошибка аутентификации; logname=LOGIN uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=name.user
19 сен 17:49:49 LDAPClient login[475]: pam_ldap(login:auth): ошибка аутентификации; user=name.user
19 сен 17:49:53 LDAPClient login[475]: НЕУДАЧНЫЙ ВХОД (1) на ‘/dev/tty1’ ДЛЯ ‘name.user’, ошибка аутентификации
Я также настраивал ssh, но ошибка та же:
19 сен 17:46:37 LDAPClient sshd[807]: pam_unix(sshd:auth): ошибка аутентификации; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.60.92 user=name.user
19 сен 17:46:37 LDAPClient sshd[807]: pam_ldap(sshd:auth): ошибка аутентификации; user=name.user
19 сен 17:46:39 LDAPClient sshd[807]: Неверный пароль для name.user с 192.168.60.92 порт 63122 ssh2
19 сен 17:46:43 LDAPClient sshd[807]: pam_ldap(sshd:auth): ошибка аутентификации; user=name.user
19 сен 17:46:45 LDAPClient sshd[807]: Неверный пароль для name.user с 192.168.60.92 порт 63122 ssh2
Как это исправить? У меня нет идеи:
# /etc/nsswitch.conf
#
# Пример конфигурации функции GNU Name Service Switch.
# Если у вас установлены пакеты `glibc-doc-reference` и `info`, попробуйте:
# `info libc "Name Service Switch"` для получения информации об этом файле.
passwd: compat ldap
group: compat ldap
shadow: compat ldap
gshadow: files
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
Проблема была в acl:
olcAccess: {2}to dn.subtree="ou=People,dc=example,dc=com"
by peername.ip="192.168.250.78" read
by peername.ip="xx.xx.xx.xx" read
by peername.ip="192.168.250.204" read
by dn="cn=replica,dc=example,dc=com" read
by group.exact="cn=Directory Administrators,dc=example,dc=com" manage
by dn.subtree="ou=Special Users,dc=example,dc=com" read
by dn.subtree="ou=Special Users,dc=example,dc=com" read
!!!by * none
olcAccess: {5}to *
by peername.ip="xx.xx.xx.xx" read
by peername.ip="192.168.250.204" read
by group.exact="cn=Directory Administrators,dc=example,dc=com" manage
by dn="cn=admin,dc=example,dc=com" write
by dn="cn=replica,dc=example,dc=com" read
by dn.subtree="ou=Special Users,dc=example,dc=com" read
!!!by * none
Если вы проверите свой shadow, вы не установили пароль для вашей учетной записи.
user.name:*:15140:0:99999:7:::0
—- *
означает отсутствие пароля.
Система не позволяет вход без пароля.
ПОПРОБУЙТЕ создать пароль для вашей учетной записи и повторите попытку входа
Ответ или решение
Ошибка pam_unix(sshd:auth): authentication failure
указывает на проблему с аутентификацией пользователя при попытке входа в систему через SSH. Чтобы решить эту проблему, необходимо проверить несколько ключевых аспектов конфигурации вашего сервера, который использует OpenLDAP для аутентификации пользователей.
Анализ проблемы
Ваши логи указывают на несколько ошибок аутентификации:
Sep 19 17:49:49 LDAPClient login[475]: pam_unix(login:auth): authentication failure; logname=LOGIN uid=0 euid=0 tty=/dev/tty1 ruser= rhost= user=name.user
Sep 19 17:49:49 LDAPClient login[475]: pam_ldap(login:auth): Authentication failure; user=name.user
Также вы указали, что у пользователя name.user
в разделе shadow
в /etc/shadow
стоит *
:
user.name:*:15140:0:99999:7:::0
Этот символ *
указывает на то, что пользователю не установлен пароль, что и является основной причиной ошибки аутентификации. В большинстве систем Unix/Linux аутентификация по умолчанию требует наличие пароля для входа.
Решение проблемы
-
Установка пароля для пользователя:
Вам нужно установить пароль для пользователяname.user
. Вы можете сделать это с помощью следующей команды:sudo passwd name.user
После выполнения этой команды вам будет предложено ввести новый пароль для данного пользователя. Убедитесь, что вы используете сложный пароль, чтобы соблюсти требования безопасности.
-
Проверка ACL в OpenLDAP:
Вы упомянули, что возможные проблемы могут быть связаны с ACL (Access Control List) в OpenLDAP. Убедитесь, что пользователь, которому вы пытаетесь установить пароль, имеет доступ в соответствии с заданными доступами.Ваша конфигурация доступа выглядит так:
olcAccess: {2}to dn.subtree="ou=People,dc=example,dc=com" by * none
Это означает, что все пользователи не имеют доступа к этому поддереву. Возможно, вам потребуется изменить правила доступа, чтобы разрешить аутентификацию. Например, оставив только необходимые базы данных для аутентификации.
-
Проверка конфигурации PAM:
Убедитесь, что файлы конфигурации PAM корректно настроены для использования LDAP. Проверьте файл/etc/pam.d/sshd
и убедитесь, что в нем включены директивы для LDAP.Пример настройки для SSH может выглядеть так:
auth required pam_unix.so nullok auth sufficient pam_ldap.so account required pam_unix.so account sufficient pam_ldap.so
Это позволит системе использовать как локальную аутентификацию, так и LDAP.
-
Перезапустите службы:
После всех изменений не забудьте перезапустить службу SSH и, если необходимо, OpenLDAP:sudo systemctl restart ssh sudo systemctl restart slapd
-
Тестирование:
Попробуйте заново войти в систему с установленным паролем для пользователя. Если аутентификация пройдет успешно, ошибки в логах должны исчезнуть.
Заключение
Анализируя сообщение об ошибке pam_unix(sshd:auth): authentication failure
, становится ясным, что отсутствие пароля является ключевой проблемой. Установка пароля и корректная настройка ACL в OpenLDAP помогут решить ваши проблемы с аутентификацией. Не забывайте поддерживать вашу конфигурацию в актуальном состоянии, чтобы избежать подобных ситуаций в будущем.