Ldap

LDAP 身份驗證失敗

  • May 18, 2015

我嘗試設置一個允許我驗證 Debian 使用者的 LDAP 目錄。完成 LDAP 伺服器和 PAM 文件的配置後,身份驗證將失敗。我認為客戶端在目錄中找不到 ldap 使用者。當我嘗試使用 ldap 使用者登錄時,它說登錄錯誤,而當我嘗試使用本地使用者登錄時,它會詢問我密碼,然後是 LDAP 密碼。

伺服器

1)我首先安裝了ldap-utils libldap-2.4-2 libldap-2.4-2-dbg slapd slapd-dbg

  1. 在文件 /etc/ldap/ldap.conf 中:
BASE dc=example,dc=com    

URI ldap://192.168.1.254/
dpkg-reconfigure slapd

我檢查有關域的資訊是否正確:正確。

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

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
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

  1. libpam-ldap 配置:不是 LDAP 管理員像本地使用者,不是 LDAP 伺服器在查詢之前詢問資訊

  2. dpkg-重新配置 libnss-ldap

資訊是正確的。

  1. 在文件 /etc/ldap/ldap.conf
BASE dc=example,dc=com
URI ldap://192.168.1.254/
  1. 在文件 /etc/nsswitch.conf
passwd: compat ldap
group: compat ldap
shadow: compat ldap
  1. 在文件 /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
  1. 在文件 /etc/libnss-ldap.secret
ldap password
  1. 在文件 /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
  1. 在文件 /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
getent passwd && getent group

僅顯示本地使用者和組。

13)客戶端似乎與伺服器聯繫:

ldapsearch -x -H "ldap://192.168.1.254" -b "dc=example,dc=com" dn

把 dn 條目還給我

  1. 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

開放LDAP 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是客戶端機器上 root 使用的 binddn。它通常不應該是後綴的 rootdn,因為這意味著機器的危害也會危害目錄。


在少數情況下使用sssdoverpam_ldapnss-ldap/nss-ldapd不是正確的選擇。這不是其中之一。(根據我的經驗,它僅限於驗證非 posix 帳戶。)


在處理 RFC2307 與 RFC2307bis 組時,這裡還有其他一些問題,但在此之前你已經失敗了。當這成為您的實際問題時,請提出另一個問題。

引用自:https://serverfault.com/questions/691363