การ จำกัด การเข้าสู่ระบบบัญชีโดยใช้ LDAP และ PAM


14

ฉันหวังว่าปรมาจารย์ PAM / LDAP บางคนอาจช่วยฉันได้ที่นี่ ฉันเพิ่งตั้งค่าไดเรกทอรี LDAP บน Ubuntu Server เพื่อระงับบัญชีสำหรับลูกค้าของฉัน (สำหรับใช้กับระบบบนเว็บ) และพนักงาน (ที่จะต้องลงชื่อเข้าใช้ผ่าน SSH)

การตรวจสอบสิทธิ์ LDAP ทำงานได้อย่างสมบูรณ์ อย่างไรก็ตามฉันไม่สามารถใช้ข้อ จำกัด บัญชีได้: บัญชีพนักงานจะมี ID ระหว่าง2001และ2999และจะเป็นสมาชิกของssh-usersกลุ่มเพื่ออนุญาตให้พวกเขาลงชื่อเข้าใช้เซิร์ฟเวอร์

ข้อ จำกัด ในคำถามอยู่ใน/etc/ldap.confและpam_min_uid, และpam_max_uidpam_groupdn

pam_groupdnมี DN ทั้งหมดในssh-usersกลุ่ม ของฉัน pam_min_uid= 2000และ=pam_max_uid2999

ตอนนี้ฉันสามารถทำให้พวกมันทำงานได้โดยการเพิ่ม:

account [success=1 default=ignore] pam_ldap.so

ดังกล่าวข้างต้นสายในpam_unix.so /etc/pam.d/common-accountอย่างไรก็ตามบัญชี Unix ท้องถิ่นนั้นไม่สามารถเข้าสู่ระบบได้: เซิร์ฟเวอร์ SSH ฆ่าการเชื่อมต่อทันทีที่ลอง

ฉันได้ตั้งค่าpam_ldap.soโมดูลsufficientเป็นไฟล์ข้างต้น แต่จากนั้นผู้ใช้ที่ไม่ถูกต้องจะได้รับข้อความแจ้งว่าไม่สามารถเข้าสู่ระบบได้

ดังนั้นฉันจะตั้งค่าข้อ จำกัด บัญชีเหล่านี้สำหรับผู้ใช้ LDAP ได้อย่างไรในขณะที่ยังอนุญาตให้ผู้ใช้ UNIX เข้าสู่ระบบได้

ในขณะที่คุณสามารถเดาได้ว่าฉันเป็นมือใหม่สำหรับ PAM แม้ว่าฉันจะจัดการเพื่อให้โมดูล "สร้างไดเรกทอรีบ้านโดยอัตโนมัติ" ทำงาน :-)

ขอบคุณมากแอนดี้

คำตอบ:


11

PAM มีความสามารถในการ จำกัด การเข้าถึงตามรายการควบคุมการเข้าใช้ (อย่างน้อยใน Ubuntu) ซึ่งเช่นคำตอบของ kubanskamac (+1) ถือว่ากลุ่มเป็นกลุ่ม posix ไม่ว่าจะถูกเก็บไว้ใน LDAP /etc/groupหรือ NIS

/etc/security/access.confเป็นไฟล์รายการเข้าถึง ในไฟล์ของฉันฉันสิ้นสุด:

-:ALL EXCEPT root sysadmin (ssh-users):ALL

สิ่งนี้ปฏิเสธทุกคนยกเว้น root, sysadmin และในกลุ่ม ssh-users (ซึ่งอยู่ใน LDAP) ทุกที่ที่พวกเขาเข้าสู่ระบบ (ที่สองALL)

จากนั้นในไฟล์บัญชี PAM ของฉัน (นี่คือโมดูลบัญชี) ฉันเพิ่มท้ายที่สุด:

account required pam_access.so

ซึ่งบอกให้ PAM ใช้ไฟล์นี้ มันทำงานได้ดี :-)


เป็นเรื่องน่าสังเกตว่าคุณอาจต้องวาง pam_access.so ไว้ที่จุดเริ่มต้นของไฟล์บัญชี PAM ของคุณเพื่อให้มีผล
crb

5

ฉันจะใช้

auth required    pam_listfile.so   sense=accept item=group file=/etc/groups.allow onerr=fail

เพื่ออนุญาตเฉพาะกลุ่มเฉพาะ (ทั้งสำหรับกลุ่มโลคัลและกลุ่ม LDAP) วิธีนี้คุณไม่ต้องระบุอะไรเลยldap.confเลย

หากคุณต้องการให้สิทธิ์ในแบบของคุณคุณไม่ควรกรองผู้ใช้ในรหัสผ่าน "บัญชี" ฉันเชื่อว่าคุณควรจะทำมันผ่าน "รับรองความถูกต้อง" ประการที่สองอย่างที่คุณเห็นว่าตัวเอง pam_unix ประมวลผลทั้งบัญชีท้องถิ่นและ LDAP (อย่างน้อยใน "บัญชี" ผ่าน) ดังนั้นดูเหมือนว่าไม่จำเป็นต้องมี pam_ldap เลย

แก้ไข: ประการที่สามถ้าคุณยืนยันที่จะมีสิ่งที่ "บัญชี" ผ่าน (ซึ่งฉันเชื่อว่าอาจมีผลข้างเคียงที่แปลก) ลำดับของคุณควรลงท้ายด้วย: ... , "เพียงพอ pam_ldap", "ต้องการ pam_localuser", "ต้องการ pam_unix" . ฉันหมายความว่าหากคุณมีโมดูลอื่นให้ย้ายไปก่อน pam_ldap มิฉะนั้นจะถูกละเว้นสำหรับบัญชี LDAP เนื่องจากส่วน "เพียงพอ"


ฉันคิดว่า pam_unix กำลังใช้การเรียก getent เพื่อดึงข้อมูลบัญชี - ซึ่งใช้ LDAP ใน /etc/nsswitch.conf บรรทัดเหล่านั้นถูกเพิ่มเข้ากับไฟล์กำหนดค่า PAM โดยตัวติดตั้งแพ็คเกจ libpam-ldap การกระทำเริ่มต้นของ pam_groupdn ไม่ได้ทำอะไรและในขณะที่ค้นหาคำตอบบางคนบอกว่ามันจะไม่มีผลเว้นแต่ว่าจะมีการใช้โมดูล pam_ldap.so ในระหว่างการ "ผ่าน" บัญชี หากเป็นไปได้ฉันควรเก็บการตั้งค่าไว้ใน ldap.conf เนื่องจากเกี่ยวข้องกับ LDAP โดยเฉพาะ
Andy Shellam

(1) คุณถูกต้องเกี่ยวกับ pam_unix (2) ฉันกำลังอัปเดตคำตอบของฉันด้วยคำแนะนำ pam_localuser
kubanczyk

ทุกสิ่งที่ฉันอ่านเกี่ยวกับ PAM บ่งชี้ว่าบัญชีเป็นส่วนที่ถูกต้องสำหรับสิ่งนี้ รับรองความถูกต้อง - ระบุผู้ใช้และรับรองความถูกต้องของบัญชีบัญชี - ตรวจสอบลักษณะบัญชีผู้ใช้เช่นอายุรหัสผ่านข้อ จำกัด เวลาเข้าสู่ระบบและข้อ จำกัด การเข้าสู่ระบบระยะไกลนี่ไม่ใช่ปัญหาการตรวจสอบสิทธิ์ - เนื่องจากชื่อผู้ใช้ / รหัสผ่านถูกต้อง ระบุ. มันเป็นข้อ จำกัด บัญชีเพราะฉันไม่ต้องการให้บางบัญชีสามารถเข้าสู่ระบบได้
Andy Shellam

0

เพียงเพิ่มไปที่ @ andy-shellam นี่คือcommon-accountไฟล์ของฉัน:

account [success=2 new_authtok_reqd=done default=ignore] pam_unix.so
account [success=1 default=ignore]            pam_ldap.so
account requisite                     pam_deny.so
account required                      pam_access.so
account required                      pam_permit.so
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.