Вопрос или проблема
У меня есть открытый LDAP сервер:
IP : 192.168.0.70 (dell)
DIT :
(видно через ldapphpadmin)
А для патриции дюше:
dn cn=patricia duchesne,ou=users,dc=memorandum,dc=pro
cn patricia duchesne
gidnumber 501
givenname patricia
homedirectory /home/users/pduchesne
loginshell /bin/bash
objectclass inetOrgPerson | posixAccount | top
sn duchesne
uid pduchesne
uidnumber 1000
userpassword {MD5}eFI0F0...
Затем у меня есть LDAP клиент:
IP : 192.168.0.60 (pb)
NSSWitch настроен:
$cat /etc/nsswitch.conf
passwd: files ldap
group: files ldap
shadow: files ldap
gshadow: files
hosts: files mdns4_minimal [NOTFOUND=return] dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis
также и ldap-auth:
$ cat /etc/auth-client-config/profile.d/ldap-auth-config
[lac_ldap]
nss_passwd=passwd: files ldap
nss_group=group: files ldap
nss_shadow=shadow: files ldap
nss_netgroup=netgroup: nis
и libnss:
$ cat /etc/libnss-ldap.conf
uri ldap://192.168.0.70
base dc=memorandum,dc=pro
Я могу получить информацию о пользователе ldap:
$ getent passwd | tail -n 1
pduchesne:*:1000:501:patricia duchesne:/home/users/pduchesne:/bin/bash
Но я не могу подключиться:
С IP : 192.168.0.80
$ ssh [email protected]
[email protected]'s password:
Доступ запрещен, пожалуйста, попробуйте еще раз.
[email protected]'s password:
Доступ запрещен, пожалуйста, попробуйте еще раз.
[email protected]'s password:
Доступ запрещен (publickey,password).
Что я пропустил?
Я смотрел сотни веб-страниц, но не нашел способа настроить все это 🙁
https://help.ubuntu.com/community/LDAPClientAuthentication
https://askubuntu.com/questions/127389/how-to-configure-ubuntu-as-an-ldap-client
https://www.digitalocean.com/community/tutorials/how-to-authenticate-client-computers-using-ldap-on-an-ubuntu-12-04-vps
Найдя эту страницу: https://www.vincentliefooghe.net/content/openldap-gestion-des-logs
Я понял, что не знаю, где находятся журналы ldap 🙁
ИЗМЕНЕНИЕ
Следуя: https://help.ubuntu.com/community/LDAPClientAuthentication
PAM конфигурация на 192.168.0.60:
$ cat /usr/share/pam-configs/my_mkhomedir
Name: activate mkhomedir
Default: yes
Priority: 900
Session-Type: Additional
Session:
required pam_mkhomedir.so umask=0022 skel=/etc/skel
Обновление:
$ sudo pam-auth-update
[sudo] пароль для romain:
LDAP Пароль:
Файл
$ cat /etc/security/group.conf
полностью прокомментирован
Я не использовал nscd:
$ /etc/init.d/nscd stop
[....] Остановка nscd (через systemctl): nscd.service==== АВТЕНТИФИКАЦИЯ ДЛЯ org.freedesktop.systemd1.manage-units ===
Требуется аутентификация для остановки 'nscd.service'.
Аутентификация как: romain,,, (romain)
Пароль:
LDAP Пароль:
==== АУТЕНТИФИКАЦИЯ ЗАВЕРШЕНА ===
. ок
Я не использовал раздел [LDAP Host Access Authorization]. Должен ли я?
ИЗМЕНЕНИЕ 2
Подробный ssh:
romain@Mac:~$ ssh -v pduchesne@pb
OpenSSH_6.9p1, LibreSSL 2.1.8
debug1: Чтение конфигурационных данных /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config строка 20: Применение параметров для *
debug1: /etc/ssh/ssh_config строка 102: Применение параметров для *
debug1: Подключение к pb [192.168.0.60] порт 22.
debug1: Подключение установлено.
debug1: файл идентификации /Users/romain/.ssh/id_rsa тип 1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_rsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_dsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_dsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_ecdsa тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_ecdsa-cert тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_ed25519 тип -1
debug1: key_load_public: Нет такого файла или каталога
debug1: файл идентификации /Users/romain/.ssh/id_ed25519-cert тип -1
debug1: Включение совместимого режима для протокола 2.0
debug1: Локальная версия строки SSH-2.0-OpenSSH_6.9
debug1: Удаленная версия протокола 2.0, удаленная версия программного обеспечения OpenSSH_7.2p2 Ubuntu-4ubuntu2.1
debug1: сравнение: OpenSSH_7.2p2 Ubuntu-4ubuntu2.1 pat OpenSSH* compat 0x04000000
debug1: Аутентификация к pb:22 как 'pduchesne'
debug1: SSH2_MSG_KEXINIT отправлено
debug1: SSH2_MSG_KEXINIT получено
debug1: kex: server->client [email protected] <implicit> none
debug1: kex: client->server [email protected] <implicit> none
debug1: ожидание SSH2_MSG_KEX_ECDH_REPLY
debug1: Серверный ключ хоста: ecdsa-sha2-nistp256 SHA256:OIiYKNK9FOdhlu2sVahXFoXYCjxmxTQ7NrZtA75Vwps
debug1: Хост 'pb' известен и соответствует ECDSA ключу хоста.
debug1: Найден ключ в /Users/romain/.ssh/known_hosts:18
debug1: SSH2_MSG_NEWKEYS отправлено
debug1: ожидание SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS получено
debug1: SSH2_MSG_SERVICE_REQUEST отправлено
debug1: SSH2_MSG_SERVICE_ACCEPT получено
debug1: Аутентификация, которая может продолжаться: publickey,password
debug1: Следующий метод аутентификации: publickey
debug1: Предложение RSA публичного ключа: /Users/romain/.ssh/id_rsa
debug1: Аутентификации, которые могут продолжаться: publickey,password
debug1: Попытка частного ключа: /Users/romain/.ssh/id_dsa
debug1: Попытка частного ключа: /Users/romain/.ssh/id_ecdsa
debug1: Попытка частного ключа: /Users/romain/.ssh/id_ed25519
debug1: Следующий метод аутентификации: password
pduchesne@pb's password:
debug1: Аутентификации, которые могут продолжаться: publickey,password
Доступ запрещен, пожалуйста, попробуйте еще раз.
pduchesne@pb's password:
debug1: Аутентификации, которые могут продолжаться: publickey,password
Доступ запрещен, пожалуйста, попробуйте еще раз.
pduchesne@pb's password:
debug1: Аутентификации, которые могут продолжаться: publickey,password
debug1: Больше нет методов аутентификации для попытки.
Доступ запрещен (publickey,password).
ИЗМЕНЕНИЕ 3
Добавление хеша пароля пользователя на ldap сервере (см. дамп пользователя в начале)
ИЗМЕНЕНИЕ 4
Следуя предложению @grawity, я установил libpam-ldapd:
romain@pb$ sudo apt-get install libpam-ldapd
[sudo] пароль для romain:
LDAP Пароль:
Следующие пакеты были автоматически установлены и больше не требуются:
auth-client-config ldap-auth-config
Используйте 'sudo apt autoremove', чтобы удалить их.
Следующие пакеты будут УДАЛЕНЫ:
libpam-ldap
Следующие НОВЫЕ пакеты будут установлены:
libpam-ldapd
Вы хотите продолжить? [Y/n] Y
(...)
Настройка libpam-ldapd:amd64 (0.9.6-3) ...
Затем я настроил /etc/nslcd.conf
, где я заметил, что я не указал явно использовать ldap версию 3 (я не знаю, какая версия по умолчанию?):
romain@pb$ sudo cat /etc/nslcd.conf | grep "^[^#]"
uid nslcd
gid nslcd
uri ldap://192.168.0.70
base dc=memorandum,dc=pro
ldap_version 3
tls_cacertfile /etc/ssl/certs/ca-certificates.crt
Перезапустил nslcd:
romain@pb$ sudo service nslcd restart
и попытался подключиться с моего mac:
romain@Mac:~$ ssh pduchesne@pb
что сработало… как-то :
romain@Mac:~$ ssh pduchesne@pb
pduchesne@pb's password:
Добро пожаловать в Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-53-generic x86_64)
* Документация: https://help.ubuntu.com
* Управление: https://landscape.canonical.com
* Поддержка: https://ubuntu.com/advantage
197 пакетов можно обновить.
4 обновления являются обновлениями безопасности.
*** Требуется перезагрузка системы ***
Последний вход: Пт Янв 13 11:12:23 2017 с 192.168.0.80
romain@pb:~$ pwd
/home/users/pduchesne
romain@pb:~$ whoami
romain
Новый вопрос (для Изменения 4)
Почему я не меняю пользователя ??
Я ожидал войти на ‘pb’ как ‘pduchesne’ :-/
Старый вопрос (до Изменения 4)
Я не знаю, какие файлы проверить – любые советы приветствуются.
Ваша показанная конфигурация на самом деле не упоминает ничего, что может быть использовано для аутентификации; то есть нет метода для проверки введенного пароля.
Ваша конфигурация nsswitch1 действительно содержит shadow: ldap
, но ваш дамп объекта пользователя на самом деле не упоминает каких-либо “shadow” атрибутов – так что нет информации, которую getent shadow
мог бы получить. Хотя это нормально, потому что раскрытие информации shadow через LDAP не было бы очень безопасно в любом случае.
Вместо этого вам следует настроить pam_ldap
(libpam-ldapd), который пытается аутентифицироваться (привязаться) к LDAP серверу, используя указанный пароль. Для этого необходимо поместить хеш пароля в формате LDAP в атрибут userPassword
пользователя (который также отсутствует в вашем дампе).
Обратите внимание, что отдельные libnss-ldap (и libpam-ldap) имеют несколько недостатков и в основном устарели – у вас будет гораздо более надежная конфигурация с nslcd + libnss-ldapd + libpam-ldapd вместо этого.
1 “Смена службы имен”, а не “ведьма NSS”
Ответ или решение
Проблема подключения к LDAP: Возможные причины и решения
Введение
Подключение к LDAP может представлять собой сложную задачу из-за множества переменных, которые задействованы в процессе авторизации. В данной ситуации вы сталкиваетесь с проблемой входа в систему через SSH с использованием учетной записи, хранящейся в OpenLDAP. Ваша конфигурация требует детального анализа на предмет обнаружения возможных ошибок. Рассмотрим последовательность действий и настройки, которые помогут вам идентифицировать и устранить проблему.
1. Проверка конфигурации LDAP
Сначала убедитесь, что у вас правильные настройки LDAP:
-
Проверьте файл
/etc/libnss-ldap.conf
:uri ldap://192.168.0.70 base dc=memorandum,dc=pro
-
Убедитесь, что указанный IP-адрес (192.168.0.70) действительно доступен и правильно указан, и что служба LDAP работает.
2. Аутентификация через PAM
Для обеспечения аутентификации через LDAP вам необходимо убедиться, что PAM настроен корректно. Если у вас установлена библиотека libpam-ldap
, рекомендуется обновить вашу конфигурацию до libpam-ldapd
, которая обеспечивает надежную работу с LDAP.
Проверьте, как настроен PAM для вашего клиента с помощью:
sudo cat /etc/pam.d/common-auth
sudo cat /etc/pam.d/common-account
sudo cat /etc/pam.d/common-session
Вам нужно убедиться, что в этих файлах присутствуют записи для PAM LDAP. Например, для аутентификации может присутствовать строка:
auth required pam_unix.so nullok
auth required pam_ldap.so
3. Параметры NSSWitch
Ваш конфигурационный файл /etc/nsswitch.conf
выглядит правильно, но убедитесь, что все необходимые параметры присутствуют. Например:
passwd: files ldap
group: files ldap
shadow: files ldap
4. Проверка пользователя LDAP
Убедитесь, что вы правильно установили пароль для учетной записи pduchesne
. У вас в LDAP конфигурации необходимо наличие атрибута userPassword
, который должен содержать корректный хеш пароля. Обратите внимание, что хеширование пароля фиксируется в формате, который соответствует используемой вами версии LDAP. В вашем случае он выглядит как {MD5}eFI0F0...
. Если вы не уверены, что хеш пароля корректен, попробуйте установить его заново, как это описано в документации OpenLDAP.
5. Логи LDAP
Если у вас есть доступ к серверу LDAP, проверьте журналы на наличие ошибок аутентификации. Обычно они находятся в /var/log/syslog
или /var/log/slapd.log
, в зависимости от вашей конфигурации. Активация подробного логирования может помочь выявить источник ошибки.
Для этого можно изменить настройки логирования, добавив или изменив строки в конфиге slapd:
loglevel stats,throttle
6. Проверка подключения к серверу LDAP
Используйте утилиты, такие как ldapsearch
, для проверки подключения к вашему LDAP серверу:
ldapsearch -x -H ldap://192.168.0.70 -b "dc=memorandum,dc=pro" -D "cn=admin,dc=memorandum,dc=pro" -W
Введите пароль для администратора LDAP, чтобы проверить успешность подключения.
7. Устранение неполадок при SSH
Если вам удалось успешно подключиться к серверу LDAP, но при попытке SSH возникает ошибка, как показано в выводе ssh -v
, это может быть связано с неправильной аутентификацией пользователя на сервере:
Permission denied, please try again.
В этом случае проверьте следующее:
- На сервере SSH (
pb
) должно быть правильно настроено разрешение на использование LDAP для аутентификации. - Убедитесь, что предоставление доступа не заблокировано в файлах конфигурации SSH, например, в
/etc/ssh/sshd_config
.
Заключение
Если все вышеперечисленные шаги не решают вашу проблему, может быть полезно рассмотреть альтернативные решения, такие как использование nslcd
вместо libnss-ldap
и libpam-ldap
, поскольку это может позитивно отразиться на управлении аутентификацией и производительности. Системные журналы и детальная информация через -v
в SSH также очень полезны для диагностики ситуации. Не забывайте также обращать внимание на техническую документацию и сообщества пользователей для получения дополнительной помощи.