Я пытаюсь создать каталог LDAP, который позволит мне аутентифицировать пользователей Debian. После завершения настройки сервера LDAP и файлов PAM аутентификация не выполняется. Я думаю, что клиент не находит пользователя ldap в каталоге. Когда я пытаюсь войти в систему с пользователем ldap, он говорит о неправильном входе в систему, а когда я пытаюсь войти в систему с локальными пользователями, он запрашивает у меня пароль, а затем пароль LDAP.
Сервер
1) Сначала я установил ldap-utils libldap-2.4-2 libldap-2.4-2-dbg slapd slapd-dbg
2) В файле /etc/ldap/ldap.conf:
BASE dc=example,dc=com
URI ldap://192.168.1.254/
3)
dpkg-reconfigure slapd
Проверяю, что информация о домене верна: верна.
4)
ldapsearch -x
Это соответствует тому, что я выбрал раньше.
5) Я создаю файлы .ldif для каталога и пользователей
structure.ldif:
dn: ou=users,dc=example,dc=com
objectClass: organizationalUnit
u: users
description: users
dn: ou=computers,dc=example,dc=com
objectClass: organizationalUnit
ou: computers
description: computers
dn: ou=sale,ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: sale
description: sale
dn: ou=direction,ou=users,dc=example,dc=com
objectClass: organizationalUnit
ou: direction
description: direction
dn: cn=sale,ou=sale,ou=users,dc=example,dc=com
objectClass: posixGroup
gidNumber: 501
cn: sale
description: Sale group
dn: cn=direction,ou=direction,ou=users,dc=example,dc=com
objectClass: posixGroup
gidNumber: 502
cn: direction
description: Direction group
dn: cn=pauldupont,cn=direction,ou=direction,ou=users,dc=newsoft,dc=ch
cn=pauldupont,cn=direction,ou=direction,ou=users,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
uid: pauldupont
userPassword: pauldupont
cn: pauldupont
uidnumber: 1050
gidnumber: 501
homeDirectory: /home/profils/pauldupont
sn: pauldupont
adduseringroup.ldif:
dc: cn=sale,ou=sale,ou=users,dc=example,dc=com
changetype: modify
add: memberuid
memberuid: uid=pauldupont,cn=direction,ou=direction,ou=users,dc=example,dc=com
6) Отправляю файлы в каталог:
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f file.ldif
6)
ldapsearch -x
Информация есть.
Клиент
1) Я установил ldap-utils libldap-2.4-2 libldap-2.4-2-dbg slapd slapd-dbg libnss-ldap libpam-ldap libpam-modules libpam-cracklib nscd
2) конфигурация libnss-ldap: ip сервера: 192.168.1.254, dc = example, dc = com
3) конфигурация libpam-ldap: нет, что администратор LDAP похож на локального пользователя, нет, что сервер LDAP запрашивает информацию перед выполнением запросов
4) dpkg-reconfigure libnss-ldap
Информация верна.
5) В файле /etc/ldap/ldap.conf
BASE dc=example,dc=com
URI ldap://192.168.1.254/
6) В файле /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
7) В файле /etc/libnss-ldap.conf
base dc=example,dc=com
uri ldap://192.168.1.254/
ldap_version 3
rootbinddn cn=admin,dc=example,dc=com
8) В файле /etc/libnss-ldap.secret
ldap password
9) В файле /etc/pam_ldap.conf:
base dc=example,dc=com
uri ldap://192.168.1.254/
rootbinddn cn=admin,dc=example,dc=com
port 389
scope sub
bind_timelimit 30
idle_timelimit 3600
pam_filter objectClass=posixAccount
pam_login_attribute uid
10) В файлах /etc/pam.d/common-auth & common-account & common-session я добавил внизу:
auth sufficient pam_ldap.so
11) В файле /etc/pam.d/common-password я добавил внизу:
password sufficient pam_ldap.so use_first_pass
12)
getent passwd && getent group
Показывает только локальных пользователей и группы.
13) Кажется, что клиент обращается к серверу:
ldapsearch -x -H "ldap://192.168.1.254" -b "dc=example,dc=com" dn
возвращает мне записи DNS
14) getent passwd pauldupont
Мне ничего не возвращает, и когда я проверяю /var/log/auth.log:
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: failed to bind to LDAP server ldap:///192.168.1.254/: Invalid credentials
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: reconnecting to LDAP server...
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: failed to bind to LDAP server ldap:///192.168.1.254/: Invalid credentials
May 12 10:43:36 CLI1-DIR-DEB nscd: nss_ldap: reconnecting to LDAP server...
May 12 10:43:37 CLI1-DIR-DEB nscd: nss_ldap: failed to bind to LDAP server ldap:///192.168.1.254/: Invalid credentials
May 12 10:43:37 CLI1-DIR-DEB nscd: nss_ldap: could not search LDAP server - Server is unavailable
Кажется, учетные данные неверны. Я проверил все файлы конфигурации выше и не нашел никаких ошибок.
Кто-нибудь знает, в чем проблема?
Спасибо за помощь.
Я использую Debian Jessie 8.0 AMD64 для клиента и сервера
uname -a: Linux SRV1-DEB 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt9-3 ~ deb8u1 (2015-04-24) x86_64 GNU / Linux
OpenLDAP 2.4
РЕДАКТИРОВАТЬ : Как только я добавил пароль в файл /etc/ldap.secret, и я сделал getent passwd, У меня есть пользователи ldap, но я все еще не могу подключиться.
Как только я попытался подключиться, у меня есть это в файле журнала:
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_mail(login:session): user unknown
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_loginuid(login:session): error_ log for user-name'pauldupont' does not exist
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_unix(login:session): session opened for user pauldupont by LOGIN(uid=0)
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_systemd(login:session): Failed to get user data
May 18 09:09:53 CLI1-DIR-DEB login[904]: pam_systemd(login:session): Failed to get user data
May 18 09:09:53 CLI1-DIR-DEB login[904]: User not known to the underlying authentication module
Похоже, вы предоставляете binddn, но учетные данные для него плохие. Содержимое /etc/ldap.secret
и что вы положили в -W
подскажите точно так же?
rootbinddn
binddn, используемый пользователем root на клиентской машине. Обычно это не rootdn суффикса, так как это будет означать, что компрометация машины также поставит под угрозу каталог.
Есть несколько ситуаций, в которых использование sssd
над pam_ldap
и nss-ldap
/nss-ldapd
не правильный выбор. Это не из тех. (По моему опыту, это было ограничено аутентификацией учетных записей, отличных от posix.)
Здесь есть другие ошибки при работе с группами RFC2307 vs. RFC2307bis, но до этого вы терпите неудачу. Когда это станет вашей реальной проблемой, задайте другой вопрос.