LDAP 身份验证失败

LDAP 身份验证失败

我尝试设置一个 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 文件

结构.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

添加用户组.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 重新配置 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

返回 dn 条目

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 密码,我获得了 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

答案1

看起来您提供了 binddn,但凭据不正确。内容/etc/ldap.secret和您在提示中输入的内容-W完全相同吗?


rootbinddn是客户端计算机上 root 使用的 binddn。它通常不应是后缀的 rootdn,因为这意味着计算机受到攻击也会影响目录。


在极少数情况下,使用sssdover pam_ldapand nss-ldap/nss-ldapd并不是正确的选择。这不是其中之一。(根据我的经验,它仅限于验证非 posix 帐户。)


在处理 RFC2307 与 RFC2307bis 组时,还有其他问题,但在此之前您就已经失败了。当这成为您的实际问题时,请再问另一个问题。

相关内容