จะปฏิเสธการเข้าถึงบัญชี AD ที่ปิดใช้งานผ่าน kerberos ใน pam_krb5 ได้อย่างไร?


10

ฉันมีไดเรกทอรี AD / Linux / LDAP / KRB5 ที่ใช้งานได้และการตั้งค่าการรับรองความถูกต้องมีปัญหาเล็กน้อย เมื่อบัญชีถูกปิดใช้งานการรับรองความถูกต้อง publickey SSH ยังคงอนุญาตให้เข้าสู่ระบบของผู้ใช้

เป็นที่ชัดเจนว่าลูกค้า kerberos สามารถระบุบัญชีที่ถูกปิดใช้งานเนื่องจาก kinit และ kpasswd ส่งคืน "ข้อมูลประจำตัวของลูกค้าถูกเพิกถอน" โดยไม่มีรหัสผ่าน / การโต้ตอบเพิ่มเติม

PAM สามารถกำหนดค่า (ด้วย "UsePAM ใช่" ใน sshd_config) เพื่อไม่อนุญาตให้ลงชื่อเข้าใช้สำหรับบัญชีที่ถูกปิดการใช้งานซึ่งการรับรองความถูกต้องจะทำโดย publickey? ดูเหมือนจะใช้งานไม่ได้:

account     [default=bad success=ok user_unknown=ignore] pam_krb5.so

กรุณาอย่าแนะนำ winbind ในคำตอบของคุณ - เราไม่ได้ใช้มัน

คำตอบ:


4

ฉันได้อ่านที่อื่นเพื่อขอให้ SSH เป็น "แก้ไข" เพื่อให้บัญชีที่ล็อคไม่สามารถเข้าสู่ระบบผ่าน SSH ได้ (ดู Debian bug 219377) คำขอนี้ถูกปฏิเสธเป็นแพทช์ "เพราะมันทำลายความคาดหวังบางอย่างจากผู้ใช้ [ใครคือ] เคยใช้ passwd -l เพียงล็อค passwd" (ดู Debian bug 389183) เช่นบางคนต้องการให้สามารถล็อคบัญชีจากการเข้าสู่ระบบด้วยรหัสผ่าน แต่ยังอนุญาตให้เข้าถึงคีย์ SSH ได้

PAM จะไม่ปฏิเสธการรับรองความถูกต้องของคีย์ SSH สำหรับบัญชีที่เพิ่งถูกล็อค (เช่นเนื่องจากการพยายามใช้รหัสผ่านไม่ถูกต้องเนื่องจากการรับรองความถูกต้องของคีย์ SSH ได้รับการออกแบบมาเพื่อไม่ให้ความสนใจใด ๆ กับฟิลด์รหัสผ่าน

ฉันเข้าใจว่ารายการแฮชรหัสผ่านถูกตรวจสอบโดยปริยายที่เวลา pam_authenicate () ไม่ใช่เวลา pam_acct_mgmt () pam_unix.so pam_sm_acct_mgmt () ไม่ตรวจสอบแฮชของรหัสผ่านเลยและ pam_authenticate () จะไม่ถูกเรียกในระหว่างการตรวจสอบสิทธิ์กุญแจสาธารณะ

หากคุณต้องการปิดใช้งานบัญชีจากส่วนกลางไม่ให้เข้าสู่ระบบจะมีวิธีแก้ไขอื่น ๆ ที่เป็นไปได้ ได้แก่ :

การเปลี่ยนล็อกอินเชลล์

(ใหม่) ย้ายไฟล์ authorized_keys ของพวกเขา

ตัวเลือกอื่นสำหรับการปฏิเสธการเข้าถึงอาจเป็นการใช้งาน DenyGroups หรือ AllowGroups ใน sshd_config (จากนั้นเพิ่มผู้ใช้ในกลุ่ม "sshdeny" หรือลบออกจากกลุ่ม "sshlogin" เพื่อปิดการใช้งานพวกเขาจากการเข้าสู่ระบบ) (อ่านที่นี่: https://help.ubuntu.com/8.04/serverguide/user-management .html )

จากhttp://web.archiveorange.com/archive/v/67CtqEoe5MhDqkDmUMuL ฉันอ่าน: "ปัญหาคือ pam_unix ตรวจสอบเพียงวันหมดอายุของรายการเงาไม่ใช่เนื้อหาช่องแฮชรหัสผ่าน" หากเป็นจริงจะหมดอายุบัญชีแทนที่จะล็อคสิ่งที่คุณต้องการ?

คำตอบสำหรับคำถามของคุณอาจเป็น "ใช่ถ้าคุณปิดใช้งานที่อื่นนอกเหนือจากฟิลด์รหัสผ่าน"


4

ทำการบ้านเพิ่มเติมและตอบคำถามของฉันเอง

ใน RedHat's pam_krb5 ( pam_krb5-2.3.14-1/src/acct.c) ยกเว้นว่าโมดูลเข้าร่วมในระยะการพิสูจน์ตัวตนแล้วฟังก์ชัน pam_sm_acct_mgmt () จะส่งกลับ PAM_IGNORE หรือ PAM_USER_UNKNOWN ขึ้นอยู่กับการกำหนดค่าของโมดูล มันจะต้องมีการเปลี่ยนแปลงรหัส pam_krb5 เพื่อทำสิ่งที่ฉันต้องการ

คำตอบของ JohnGH เป็นวิธีแก้ปัญหาที่ดี ใช้คุณลักษณะ "พร็อกซี" เพื่อถ่ายทอดความหมายเดียวกันเช่นการแบ่งเปลือกหรือเพิ่มกลุ่ม "ผู้ใช้ที่พิการ"

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


2

การพิสูจน์ตัวตนโดยใช้คีย์ SSH ไม่ขึ้นกับ PAM คุณมีวิธีแก้ไขปัญหาต่อไปนี้:

  • ปิดใช้งานการพิสูจน์ตัวตนแบบ keybased ใน sshd_config
  • เปลี่ยนและคอมไพล์ sshd ใหม่และเพิ่ม hook เพื่อให้ keybased auth ตรวจสอบด้วยว่าบัญชีนั้นถูกต้องผ่าน pam หรือไม่

หากคุณต้องการใช้การล็อกอินแบบไม่มีรหัสผ่านผ่าน Kerberos คุณต้องตรวจสอบให้แน่ใจว่า:

  • คุณไม่ได้ใช้ pam สำหรับ sshd
  • คุณได้ตั้งค่า Kerberos อย่างถูกต้อง เช่นคุณสามารถทำได้kinit -k host/server1.example.com@DOMAIN
  • คุณ sshd ได้รับการกำหนดค่าให้ใช้ gssapi:

    KerberosAuthentication ใช่ GSSAPIA การรับรองใช่ GSSAPICleanupCredentials ใช่ UsePAM ไม่

  • คุณใช้ไคลเอนต์ kerberized ssh เช่น PuTTY v0.61 หรือใหม่กว่า


1
ฉันไม่เห็นด้วยว่าการตรวจสอบรหัสสาธารณะของ SSH นั้นไม่ขึ้นอยู่กับ PAM การเพิ่มaccount optional pam_echo.so file=/etc/redhat-releaseใน /etc/pam.d/sshd ทำให้เนื้อหาไฟล์ถูกพิมพ์ขณะใช้การลงชื่อเข้าใช้การรับรองความถูกต้องด้วยคีย์ (ลอง)
Phil

ฉันคิดว่าแพมใช้สำหรับบัญชีเท่านั้น (เช่นเพื่อสร้างโฮมโฟลเดอร์) และไม่ใช่สำหรับการรับรองความถูกต้อง ฉันกำลังตรวจสอบกรณีนี้ในขณะนี้
Mircea Vutcovici
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.