ดังนั้นหลังจากการทดสอบและการพูดคุยอย่างถี่ถ้วนแล้ว ฉันก็ไม่สามารถแก้ปัญหานี้ด้วยตัวเองได้อีกต่อไป
เป้าหมาย: การตรวจสอบสิทธิ์ผ่าน ssh ด้วยคีย์สาธารณะหรือรหัสผ่าน และใช้ PAM สำหรับ MFA
ระบบที่ใช้คือ Ubuntu Server 20.04
การแยกสิ่งนี้ออกเป็นส่วนที่สามารถจัดการได้ยังแสดงให้เห็นถึงความยากลำบากในการรวมส่วนต่างๆ
การรับรองความถูกต้องด้วยคีย์สาธารณะและการใช้ PAM สำหรับ MFA นั้นไม่ใช่ปัญหา การรับรองความถูกต้องด้วยรหัสผ่านและการใช้ PAM สำหรับ MFA นั้นไม่ใช่ปัญหา การใช้คีย์สาธารณะหรือรหัสผ่านจะแตกต่างกันเล็กน้อย การรวมกับ MFA ดูเหมือนจะเป็นไปไม่ได้
ดูเหมือนว่าปัญหาจะอยู่ที่วิธีที่ SSHD ตรวจสอบผู้ใช้ด้วยรหัสผ่านSSHD ไม่สามารถทำได้หากไม่มี PAM เนื่องจากไฟล์เงาของผู้ใช้จะไม่สามารถอ่านได้หากไม่มี PAM การเปิดใช้งาน PAM และการเปิดใช้งาน pam_env.so และ pam_sssd.so สำหรับ auth stack ช่วยแก้ปัญหานี้ได้
ดังนั้นเมื่อใช้ PAM ฉันสามารถตรวจสอบสิทธิ์ด้วยคีย์สาธารณะหรือรหัสผ่านก็ได้ สิ่งที่ฉันไม่เข้าใจคือเหตุใด SSHD จึงต้องการไฟล์เงาของผู้ใช้สำหรับการตรวจสอบรหัสผ่าน ไม่ใช่สำหรับคีย์สาธารณะ ฉันยังคงได้รับกลุ่มของฉันและทุกอย่างโดยใช้พับลิกคีย์โดยไม่มี PAM และใช้ SSSD เพื่อจัดเตรียมพับลิกคีย์ด้วยคำสั่ง Authorized_keys
ในการตรวจสอบสิทธิ์โดยใช้รหัสผ่าน ฉันต้องการโมดูล pam ที่เกี่ยวข้องใน auth stack
สิ่งนี้จะไม่เป็นปัญหามากนัก แต่เป้าหมายคือการเปิดใช้งาน MFA และไม่แจ้งให้ผู้ใช้ป้อนรหัสผ่านเว้นแต่จะมีความจำเป็น MFA จะต้องดำเนินการโดยใช้ PAM การใช้ PAM ร่วมกับพับลิกคีย์ไม่ใช่ปัญหา วิธีการตั้งค่า "publickey,keyboard-interactive" ใน sshd_config ส่งผ่านสิ่งนี้ไปยัง PAM และตั้งค่าโมดูล PAM หลังจาก pam_env.so สำหรับ MFA อนุญาต
แต่การเปิดใช้งานเมธอด "รหัสผ่าน คีย์บอร์ด-อินเทอร์แอคทีฟ" ต้องใช้โมดูล pam_sss.so ดังนั้น ฉันจะได้รับพร้อมท์ให้ใส่รหัสผ่าน แม้ว่าฉันจะใช้วิธีคีย์สาธารณะก็ตาม จากนั้นจึงถาม MFA
ฉันจะแก้ไขปัญหานี้อย่างไร เพื่อให้ฉันสามารถตรวจสอบสิทธิ์ผ่าน ssh ด้วยรหัสผ่านจาก sssd หรือพับลิกคีย์จาก sssd และขั้นตอนต่อไป PAM เป็นข้อกำหนดหรือไม่สำหรับรหัสผ่าน (ไม่ควรอย่างยิ่ง) ไม่ว่าจะด้วยวิธีใด จะใช้ MFA ได้อย่างไร
เนื่องจากสิ่งนี้ยังคงวนเวียนอยู่ในหัวของฉัน ฉันแน่ใจว่าฉันสามารถอธิบายสิ่งต่าง ๆ ได้ดีขึ้น แต่ได้พยายามอย่างดีที่สุดเพื่ออธิบายปัญหาของฉัน
สิ่งที่ฉันได้อ่านคือ sssd, pam_ssh, pam_sssd, pam_ssh_agent_auth, sshd อ่านเอกสารประกอบสำหรับ DUO, Google MFA, RedHat
ความคิดใด ๆ หรือความคิด?
ข้อเสนอแนะใด ๆ ที่จะได้รับการชื่นชมอย่างมาก
ขอบคุณ!