Невозможно подключиться к ldap

Вопрос или проблема

У меня есть открытый 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 также очень полезны для диагностики ситуации. Не забывайте также обращать внимание на техническую документацию и сообщества пользователей для получения дополнительной помощи.

Оцените материал
Добавить комментарий

Капча загружается...