Score:2

libpam-ldapd - การตรวจสอบสิทธิ์ LDAP บน Debian 11 ไม่ทำงาน

ธง ke

ฉันเห็นคำถามอื่น ๆ หลายข้อที่นี่เกี่ยวกับปัญหาที่คล้ายกัน แต่ฉันไม่พบสิ่งที่ใช้ได้ผลจริงสำหรับฉัน

เป้าหมายของฉันคือการพิสูจน์ตัวตน (สำหรับ SSH เป็นหลัก) เครื่อง Debian ทั้งหมดกับไดเร็กทอรี UCS (OpenLDAP) - ในอนาคตเฉพาะเมื่อผู้ใช้เป็นสมาชิกของกลุ่ม ldap ที่ระบุเท่านั้น แต่ตอนนี้ฉันกำลังดิ้นรนเพื่อให้มันใช้งานได้โดยไม่ต้องเป็นสมาชิกกลุ่ม

ฉันมักจะได้รับข้อผิดพลาด:

nslcd: [7b23c6] <authc="test"> DEBUG: ldap_sasl_bind("uid=test,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local") (ppolicy=ใช่)
nslcd: [7b23c6] <authc="test"> DEBUG: ldap_parse_result() ผลลัพธ์: ข้อมูลรับรองไม่ถูกต้อง
nslcd: [7b23c6] <authc="test"> DEBUG: ไม่สามารถผูกกับเซิร์ฟเวอร์ LDAP ldap://ldap.securitywho.local: ข้อมูลรับรองไม่ถูกต้อง
nslcd: [7b23c6] <authc="test"> DEBUG: ldap_unbind()
nslcd: [7b23c6] <authc="test"> uid=test,cn=users,dc=securitywho,dc=local: ข้อมูลรับรองไม่ถูกต้อง
nslcd: [7b23c6] <authc="test"> DEBUG: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [7b23c6] <authc="test"> DEBUG: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local

ผู้ใช้การผูกกำลังทำงานอยู่ ฉันตรวจสอบทุกอย่างด้วยคำสั่ง ldapsearch - ทุกอย่างทำงานได้ดีกับผู้ใช้การผูก และถ้าฉันใช้รหัสผ่านผิด การดีบักจะแสดงข้อผิดพลาดว่าฟังก์ชันการผูกไม่ทำงาน

ใช้ Ldapsearch - และใช้งานได้:

ldapsearch -x -H ldap://ldap.securitywho.local -D "uid=srv_linux,cn=users,dc=securitywho,dc=local" -b cn=users,dc=securitywho,dc=local -W

สนิปจากเอาต์พุต:

# ทดสอบ ผู้ใช้ securitywho.local
dn: uid=test,cn=users,dc=security who,dc=local
krb5MaxLife: 86400
krb5MaxRenew: 604800
uid: ทดสอบ
หมายเลขรหัส: 2008
SN: ทดสอบ
จีคอส: ทดสอบ
ชื่อที่แสดง: ทดสอบ
ไดเรกทอรีบ้าน: /home/test
ล็อกอินเชลล์: /bin/bash
mailForwardCopyToSelf: 0
ซีเอ็น: ทดสอบ
krb5PrincipalName: [email protected]
shadowLastChange: 18992
sambaBadPasswordCount: 0
sambaBadรหัสผ่านเวลา: 0
sambaAcctFlags: [U ]
objectClass: shadowAccount
objectClass: ด้านบน
objectClass: sambaSamAccount
objectClass: ติดตั้งอัตโนมัติ
objectClass: unventionPWHistory
objectClass: บุคคล
objectClass: krb5KDCEntry
objectClass: unventionObject
objectClass: inetOrgPerson
objectClass: krb5Principal
objectClass: organizationalPerson
objectClass: unventionMail
objectClass: posixบัญชี
sambaSID: S-1-5-21-258973841-725078507-1497259816-5016
gidNumber: 5001
sambaPrimaryGroupSID: S-1-5-21-258973841-725078507-1497259816-513
unventionObjectType: ผู้ใช้/ผู้ใช้

เพียงเพื่อยืนยันว่าผู้ทดสอบของฉันใช้งานได้ ฉันรันคำสั่ง ldapsearch กับผู้ใช้ผู้ทดสอบ - ทุกอย่างทำงานที่นี่เช่นกัน ฉันตรวจสอบว่ามีหลายบัญชีในไดเร็กทอรี OpenLDAP ทุกบัญชีทำงานที่นี่ แต่ไม่มีเลยเมื่อฉันลองใช้กับ SSH

ldapsearch -x -H ldap://ldap.securitywho.local -D "uid=test,cn=users,dc=securitywho,dc=local" -b cn=users,dc=securitywho,dc=local -W

กำหนดค่า /etc/nslcd.conf

# /etc/nslcd.conf
# ไฟล์กำหนดค่า nslcd ดู nslcd.conf(5)
#เพื่อดูรายละเอียด

# ผู้ใช้และกลุ่ม nslcd ควรทำงานเป็น
uid nslcd
gid nslcd

# ตำแหน่งที่ควรเข้าถึงเซิร์ฟเวอร์ LDAP
uri ldap://ldap.securitywho.local

# ฐานการค้นหาที่จะใช้สำหรับการค้นหาทั้งหมด
ฐาน cn=ผู้ใช้,dc=ความปลอดภัยใคร,dc=ท้องถิ่น

# เวอร์ชันโปรโตคอล LDAP ที่จะใช้
#ldap_version 3

# DN ที่จะผูกกับการค้นหาปกติ
binddn uid=srv_linux,cn=users,dc=security who,dc=local
bindpw <รหัสผ่านซุปเปอร์ซีเคียว>

# DN ใช้สำหรับแก้ไขรหัสผ่านโดยรูท
#rootpwmoddn cn=admin,dc=example,dc=com

# ตัวเลือก SSL
#ปิดssl
#tls_reqcert ไม่เคย
#tls_cacertfile /etc/ssl/certs/ca-certificates.crt

#ขอบเขตการค้นหา
#ขอบเขตย่อย
กรองรหัสผ่าน (objectClass=*)
รหัสผ่านแผนที่ uid uid

กรองเงา (objectClass=*)
แผนที่เงา uid uid

เสร็จสิ้นการดีบักเอาต์พุตของ nslcd:

root@ipam:~# nslcd -d
nslcd: DEBUG: NSS_LDAP nss-pam-ldapd 0.9.11
nslcd: DEBUG: CFG: เธรด 5
nslcd: DEBUG: CFG: uid nslcd
nslcd: DEBUG: CFG: gid 117
nslcd: DEBUG: CFG: uri ldap://ldap.securitywho.local
nslcd: DEBUG: CFG: ldap_version 3
nslcd: DEBUG: CFG: binddn uid=srv_linux,cn=users,dc=securitywho,dc=local
nslcd: DEBUG: CFG: bindpw ***
nslcd: DEBUG: CFG: ฐาน cn=users,dc=securitywho,dc=local
nslcd: DEBUG: CFG: ขอบเขตย่อย
nslcd: DEBUG: CFG: deref ไม่เคย
nslcd: DEBUG: CFG: การอ้างอิง ใช่
nslcd: DEBUG: CFG: กรองนามแฝง (objectClass=nisMailAlias)
nslcd: DEBUG: CFG: กรองอีเธอร์ (objectClass=ieee802Device)
nslcd: DEBUG: CFG: กลุ่มตัวกรอง (objectClass=posixGroup)
nslcd: DEBUG: CFG: กรองโฮสต์ (objectClass=ipHost)
nslcd: DEBUG: CFG: กรอง netgroup (objectClass=nisNetgroup)
nslcd: DEBUG: CFG: กรองเครือข่าย (objectClass=ipNetwork)
nslcd: DEBUG: CFG: กรองรหัสผ่าน (objectClass=*)
nslcd: DEBUG: CFG: กรองโปรโตคอล (objectClass=ipProtocol)
nslcd: DEBUG: CFG: กรอง rpc (objectClass=oncRpc)
nslcd: DEBUG: CFG: บริการตัวกรอง (objectClass=ipService)
nslcd: DEBUG: CFG: ตัวกรองเงา (objectClass=*)
nslcd: DEBUG: CFG: แมปกลุ่ม userPassword "*"
nslcd: DEBUG: CFG: แผนที่ passwd userPassword "*"
nslcd: DEBUG: CFG: แผนที่ passwd gecos "${gecos:-$cn}"
nslcd: DEBUG: CFG: map shadow userPassword "*"
nslcd: DEBUG: CFG: แผนที่เงา shadowLastChange "${shadowLastChange:--1}"
nslcd: DEBUG: CFG: แมป shadow shadowMin "${shadowMin:--1}"
nslcd: DEBUG: CFG: แผนที่ shadow shadowMax "${shadowMax:--1}"
nslcd: DEBUG: CFG: แผนที่เงา shadowWarning "${shadowWarning:--1}"
nslcd: DEBUG: CFG: map shadow shadowInactive "${shadowInactive:--1}"
nslcd: DEBUG: CFG: แผนที่ shadow shadowExpire "${shadowExpire:--1}"
nslcd: DEBUG: CFG: แผนที่เงา shadowFlag "${shadowFlag:-0}"
nslcd: DEBUG: CFG: pam_authc_ppolicy ใช่
nslcd: DEBUG: CFG: bind_timelimit 10
nslcd: DEBUG: CFG: เวลาจำกัด 0
nslcd: DEBUG: CFG: idle_timelimit 0
nslcd: DEBUG: CFG: reconnect_sleeptime 1
nslcd: DEBUG: CFG: reconnect_retrytime10
nslcd: DEBUG: CFG: ปิด ssl
nslcd: DEBUG: CFG: tls_reqcert ความต้องการ
nslcd: DEBUG: CFG: ขนาดหน้า 0
nslcd: ดีบัก: CFG: nss_min_uid 0
nslcd: DEBUG: CFG: nss_uid_offset 0
nslcd: DEBUG: CFG: nss_gid_offset 0
nslcd: DEBUG: CFG: nss_nested_groups ไม่
nslcd: DEBUG: CFG: nss_getgrent_skipmembers หมายเลข
nslcd: DEBUG: CFG: nss_disable_enumeration เลขที่
nslcd: DEBUG: CFG: ชื่อที่ถูกต้อง /^[a-z0-9._@$()]([a-z0-9._@$() \~-]*[a-z0-9._@$ ()~-])?$/i
nslcd: DEBUG: CFG: ละเว้นหมายเลขตัวพิมพ์
nslcd: DEBUG: CFG: pam_authc_search BASE
nslcd: DEBUG: CFG: แคช dn2uid 15m 15m
nslcd: เวอร์ชัน 0.9.11 เริ่มต้น
nslcd: DEBUG: initgroups("nslcd",117) เสร็จแล้ว
nslcd: DEBUG: setgid(117) เสร็จแล้ว
nslcd: DEBUG: setuid(110) เสร็จแล้ว
nslcd: DEBUG: unlink() ของ /var/run/nslcd/socket ล้มเหลว (ละเว้น): ไม่มีไฟล์หรือไดเร็กทอรีดังกล่าว
nslcd: ยอมรับการเชื่อมต่อ
nslcd: [8b4567] DEBUG: การเชื่อมต่อจาก pid=896662 uid=0 gid=0
nslcd: [8b4567] <authc="test"> DEBUG: nslcd_pam_authc("ทดสอบ","sshd","***")
nslcd: [8b4567] <authc="test"> DEBUG: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_initialize(ldap://ldap.securitywho.local)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_rebind_proc()
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_simple_bind_s("uid=srv_linux,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local
nslcd: [8b4567] <authc="test"> DEBUG: myldap_search(base="uid=test,cn=users,dc=securitywho,dc=local", filter="(objectClass=*)")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_initialize(ldap://ldap.securitywho.local)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_rebind_proc()
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_sasl_bind("uid=test,cn=users,dc=securitywho,dc=local","***") (uri="ldap://ldap. securitywho.local") (ppolicy=ใช่)
nslcd: [8b4567] <authc="test"> DEBUG: ldap_parse_result() ผลลัพธ์: ข้อมูลรับรองไม่ถูกต้อง
nslcd: [8b4567] <authc="test"> DEBUG: ไม่สามารถผูกกับเซิร์ฟเวอร์ LDAP ldap://ldap.securitywho.local: ข้อมูลรับรองไม่ถูกต้อง
nslcd: [8b4567] <authc="test"> DEBUG: ldap_unbind()
nslcd: [8b4567] <authc="test"> uid=test,cn=users,dc=securitywho,dc=local: ข้อมูลรับรองไม่ถูกต้อง
nslcd: [8b4567] <authc="test"> DEBUG: myldap_search(base="cn=users,dc=securitywho,dc=local", filter="(&(objectClass=*)(uid=test))")
nslcd: [8b4567] <authc="test"> DEBUG: ldap_result(): uid=test,cn=users,dc=securitywho,dc=local

สิ่งที่ฉันพยายามคือเล่นกับ "ขอบเขตการค้นหา" ใน /etc/nslcd.conf แต่ไม่มีชุดค่าผสมใดที่ทำให้มันใช้งานได้ สิ่งที่ฉันไม่พบปัญหาการกำหนดค่าใดๆ ในขณะนี้ มีใครพบปัญหาแบบเดียวกันหรือสามารถช่วยเหลือฉันได้บ้าง ฉันติดตั้งทุกอย่างด้วย:

apt-get ติดตั้ง libpam-ldapd
Score:1
ธง ke

หลังจากผ่านไปหลายชั่วโมง การดีบักของ wireshark แสดงให้เห็นว่า BIND-Request สำหรับผู้ใช้ BIND ถูกส่งไปยัง ldapserver อย่างถูกต้อง (BIND ด้วยการตรวจสอบสิทธิ์อย่างง่าย --> ไม่มีการเข้ารหัส) แต่ผู้ใช้ทดสอบของฉันไม่ได้ส่งรหัสผ่านจริงไปยังเซิร์ฟเวอร์ ldap ซึ่งหมายความว่าการตรวจสอบสิทธิ์จะต้องไม่สำเร็จ --> ทดสอบด้วย SSH

ฉันพยายามลงชื่อเข้าใช้คอนโซลในเครื่องและเห็นว่าการเข้าสู่ระบบสำเร็จแล้วเกี่ยวกับการดีบัก nslcd - แต่ /var/log/auth.log แสดง:

1 ม.ค. 14:01:43 น. ipam เข้าสู่ระบบ [489]: pam_unix (เข้าสู่ระบบ: รับรองความถูกต้อง): ตรวจสอบผ่าน; ไม่รู้จักผู้ใช้
1 ม.ค. 14:01:43 น. เข้าสู่ระบบ ipam [489]: pam_unix (เข้าสู่ระบบ: รับรองความถูกต้อง): การตรวจสอบสิทธิ์ล้มเหลว; logname=LOGIN uid=0 euid=0 tty=/dev/tty1 ruser= rhost=
1 มกราคม 14:01:43 น. เข้าสู่ระบบ ipam[489]: pam_unix(เข้าสู่ระบบ:บัญชี): ไม่สามารถระบุผู้ใช้ (จาก getpwnam(ทดสอบ))
1 ม.ค. 14:01:43 น. การเข้าสู่ระบบ ipam[489]: การตรวจสอบสิทธิ์ล้มเหลว

แต่ตอนนี้ทุกอย่างทำงานได้ดี - ฉันจะแก้ไขได้อย่างไร --> รีบูต

ไม่ต้องทำการเปลี่ยนแปลงการกำหนดค่าอีกต่อไป การกำหนดค่าของฉันในโพสต์เริ่มต้นนั้นถูกต้องและทำงานได้ดีในขณะนี้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา