การตรวจสอบสิทธิ์ openldap ssh


3

ฉันกำลังพยายามตั้งค่าบนเซิร์ฟเวอร์ openldap ที่ทำงานบนเดเบียน 6 การรับรองความถูกต้อง ssh บนโฮสต์ ldap-client ชื่อ ldap_client

นี่คือสิ่งที่ ldapsearch ส่งคืนบนเซิร์ฟเวอร์:

dn: dc=localnet,dc=lan
objectClass: dcObject
objectClass: organization
dc: localnet 
o: Some_Enterprise
description: localnet.lan

dn: ou=people,dc=localnet,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=localnet,dc=lan
objectClass: top
objectClass: organizationalUnit
ou: groups

dn: uid=joe,ou=people,dc=localnet,dc=lan
objectClass: account
objectClass: posixAccount
cn: joe
uid: joe
uidNumber: 10001
gidNumber: 2000
homeDirectory: /home/joe
loginShell: /bin/sh
gecos: joe
description: joe

ในฝั่งไคลเอ็นต์ฉันได้กำหนดค่า libnss-ldap และ nsswitch.conf ดังนี้

passwd:         files ldap
group:          files ldap
shadow:         files ldap

ดังนั้น id คำสั่ง unix บนไคลเอ็นต์ (id joe) จะส่งคืน uid / gid ดังนั้นผู้ใช้จึงเป็นที่รู้จักโดย ldap

แต่หลังจากผ่านไปหลายชั่วโมงรอบ google ฉันไม่สามารถตั้งค่าการรับรองความถูกต้องบนไคลเอนต์ด้วย ssh

ฉันมีบรรทัดเหล่านี้ที่ /etc/pam.d/commun-account, community-auth และรหัสผ่านชุมชน

auth        sufficient      pam_ldap.so
auth        required        pam_unix.so nullok_secure

และสิ่งเหล่านี้ใน /etc/pam.d/ssh

auth    sufficient /lib/security/pam_ldap.so    no_warn
auth    required  pam_unix.so           no_warn try_first_pass
account required  /lib/security/pam_ldap.so no_warn ignore_authinfo_unavail ignore_unknown_user
account         required        pam_unix.so

ฉันมี usePam = yes บน /etc/ssh/sshd.conf

นี่คือผลลัพธ์ของ auth.log ที่ไคลเอ็นต์:

==> /var/log/auth.log <==
Dec  7 17:39:06 versionning sshd[3898]: pam_ldap: error trying to bind (Invalid credentials)
Dec  7 17:39:06 versionning sshd[3898]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=xxx.kimsufi.com  user=joe
Dec  7 17:39:08 versionning sshd[3898]: Failed password for joe from a.b.c.d port 58191 ssh2

บนเซิร์ฟเวอร์: ==> / var / log / syslog <== 7 ธันวาคม 16:42:43 ldap slapd [963]: <= bdb_equality_candidates: (uid) ไม่ได้จัดทำดัชนี

และด้วย tshark

LDAP bindResponse(1) invalidCredentials    

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


2
uid=joe,ou=people,dc=localnet,dc=lanไม่มีuserPasswordแอตทริบิวต์หรือ ACL ของเซิร์ฟเวอร์ LDAP ทำให้คุณไม่เห็น
84104

คำตอบ:


4

posixAccountชั้นวัตถุ LDAP มีuserPasswordแอตทริบิวต์ - รหัสผ่านชุดของโจนี่
เมื่อคุณทำเสร็จแล้วคุณสามารถผูกกับไดเรกทอรี LDAP เป็น Joe (คุณสามารถใช้ldapsearchเพื่อทดสอบได้) - หากใช้งานได้ pam_ldap ก็ควรใช้งานเช่นกัน


ขอบคุณสำหรับคำตอบที่รวดเร็ว ฉันได้เพิ่มรหัสผ่านที่เติมฟิลด์ userPassword และเพิ่มไฟล์ ldif ที่ใช้โดยผู้ใช้ joe อีกครั้ง รหัสคำสั่งยังคงส่งคืนข้อมูลที่เหมาะสมสำหรับ joe และไม่ประสบความสำเร็จในการเข้าสู่ระบบผ่าน ssh ฉันได้กำหนดค่าโมดูล libpam, libpam-ldap อีกครั้ง dpkg-reconfigure libpam-modules dpkg-reconfigure libpam-ldap และโปรแกรม dpkg แก้ไขปัญหานี้ นี่คือเนื้อหาของ /etc/pam.d/commun-account # นี่คือบัญชีต่อโมดูล (บล็อก "หลัก") บัญชี [สำเร็จ = 2 new_authtok_reqd = สำเร็จ default = เพิกเฉย] บัญชี pam_unix.so [สำเร็จ = 1 default = ละเว้น] p
philippe

2

joeวัตถุของคุณ( dn: uid=joe,ou=people,dc=localnet,dc=lan) ควรมีuserPasswordคุณสมบัติ คุณลักษณะนี้ถือแฮรหัสผ่านที่เป็นตัวแทนของรหัสผ่านของผู้ใช้ อ่านรหัสผ่านและ OpenLDAP ได้ที่นี่: http://www.openldap.org/faq/data/cache/419.html

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.