ปิดใช้งานโมดูล PAM สำหรับกลุ่ม


10

ฉันเพิ่งเปิดใช้งานการตรวจสอบสิทธิ์แบบสองปัจจัยโดยใช้ google-authenticator บนเซิร์ฟเวอร์ SSH ของฉัน อย่างไรก็ตามตอนนี้ฉันกำลังประสบปัญหา:

ฉันมีกลุ่มผู้ใช้ที่แตกต่างกันบนเซิร์ฟเวอร์ที่ฉันใช้สำหรับ SFTP แต่กลุ่มนั้นไม่สามารถเข้าสู่ระบบได้อีกต่อไปเนื่องจาก 2FA ไม่ได้ตั้งค่าสำหรับผู้ใช้ในกลุ่ม เป็นไปได้หรือไม่ที่จะปิดการใช้งานโมดูล google-authenticator สำหรับกลุ่มนั้น? การเปิดใช้งานสำหรับผู้ใช้ในกลุ่มไม่ใช่ตัวเลือกเนื่องจากผู้ใช้หลายคนจะใช้บัญชีนี้

PS: ฉันใช้ openssh-server


ตอบในความคิดเห็นนี้ - หวังว่าจะช่วยให้askubuntu.com/a/1051973/846342
Abhimanyu Garg

คำตอบ:


13

คุณสามารถใช้pam_succeed_ifโมดูล (ดูหน้าคู่มือ) ก่อนที่pam_google_authenticatorจะข้ามส่วนนี้สำหรับกลุ่มของคุณ:

# the other authentication methods, such as @include common-auth
auth [success=1 default=ignore] pam_succeed_if.so user ingroup group
auth required pam_google_authenticator ...

2
มันอาจจะแทน[success=1 default=ignore] requiredตอนนี้ผู้ใช้ที่ไม่อยู่ในกลุ่มจะนำไปสู่ความล้มเหลวในการตรวจสอบสิทธิ์ฉันคิดว่า success=1จะทำให้ข้ามวิธีถัดไปdefault=ignoreจะหมายความว่าผู้ใช้ที่ไม่อยู่ในกลุ่มจะย้ายไปยังวิธีถัดไป
muru

@muru ใช่คุณเห็นได้ชัดว่าถูกต้อง ยังคงเรียนรู้รายละเอียดและทุกมายากลของสแต็คของ PAM :)
Jakuje

สิ่งนี้ขึ้นอยู่กับว่าคุณมี "AuthenticationMethods" หลายรายการใน / etc / ssh / sshd_config หรือไม่ เมื่อเพิ่มบรรทัดข้างต้นแล้วฉันยังคงได้รับ 'สิทธิ์การใช้งานที่ถูกปฏิเสธ (แป้นพิมพ์แบบอินเทอร์แอคทีฟ)'
Arj

@Arj นี่หมายความว่าคุณมีการกำหนดค่าที่แตกต่างกันดังนั้นคำตอบเฉพาะนี้จึงไม่เหมาะกับคุณ
Jakuje

1

ไคลเอนต์ SFTP บางตัวสามารถจัดการ 2FA ได้ ตัวอย่างเช่นฉันใช้ 2FA กับ FileZilla และ WinSCP และทำงานได้ ฉันยังมีการตั้งค่าการตรวจสอบสิทธิ์ ssh-key และใช้งานได้กับ 2FA

อย่างไรก็ตามคำถามของคุณน่าสนใจและฉันทำแบบสอบถามสั้น ๆ ฉันพบคำตอบนี้

ดังนั้นจึงเป็นไปได้ (และง่าย) ในการรันแยกอินสแตนซ์ ssh ฉันทดสอบแล้ว

  1. ทำสำเนาsshd_configไฟล์แยกต่างหาก

    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_pwd
    $ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config_2fa
    
  2. แก้ไขconfigไฟล์ใหม่เหล่านี้ หนึ่งในสิ่งที่คุณต้องเปลี่ยนคือพอร์ต shh ตามตัวอย่าง:

    2.a) sshd_config_pwdบรรทัดเฉพาะคือ:

    Port 1022
    ...
    PasswordAuthentication yes
    ChallengeResponseAuthentication no
    UsePAM no
    

    2.b) sshd_config_2faบรรทัดเฉพาะคือ:

    Port 2022
    ...
    PasswordAuthentication no
    ChallengeResponseAuthentication yes
    UsePAM yes
    
  3. เปิดพอร์ตที่จำเป็นลงในไฟร์วอลล์ ตามตัวอย่าง:

    $ sudo ufw limit 1022
    $ sudo ufw limit 2022
    
  4. เรียกใช้อินสแตนซ์ ssh ใหม่:

    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_pwd
    $ sudo /usr/sbin/sshd -f /etc/ssh/sshd_config_2fa
    

แค่นั้นแหละ.


สิ่งนี้จะตอบคำถามได้อย่างไร สิ่งที่คุณแก้ไขในการsshd_configใช้ PAM ที่แตกต่างกันและไม่ใช้ 2FA
Jakuje

@Jakuje ฉันได้อัพเดทคำตอบแล้ว
pa4080

ตกลงดังนั้นประเด็นคือ "ไม่ได้ใช้ PAM" อาจทำงานได้ในบางกรณี แต่ PAM ไม่เพียง แต่เกี่ยวกับการตรวจสอบสิทธิ์ แต่ยังตั้งค่าเซสชันและอื่น ๆ อีกมากมายดังนั้นจึงอาจหยุดทำงานในแต่ละวัน การเปลี่ยนพอร์ตทำให้เกิดความสับสนโดยเฉพาะอย่างยิ่งถ้าคุณต้องการให้บุคคลที่สามเชื่อมต่อกับเซิร์ฟเวอร์ของคุณ แม้ว่าใช่ทางออกที่เป็นไปได้
Jakuje

ใช่มันเป็นเพียงวิธีการแก้ปัญหาที่เป็นไปได้ซึ่งยังไม่สมบูรณ์เพราะฉันไม่ทราบวิธีการเริ่มต้นอินสแตนซ์ ssh ที่แยกต่างหากเหล่านี้เมื่อเริ่มต้นระบบ
pa4080

0

ต่อไปนี้จะทำให้ Google 2FA บังคับใช้สำหรับผู้ใช้ทุกคน
ยกเว้นผู้ใช้ที่เป็นของsudoและผู้ดูแลระบบกลุ่ม
(หมายถึงถ้าผู้ใช้จาก sudo กลุ่มหรือผู้ดูแลระบบไม่ได้มีการกำหนดค่า 2FA ก็จะรับรองความถูกต้องเขา / เธออยู่บนพื้นฐานกุญแจสาธารณะของพวกเขา):

ไฟล์: /etc/pam.d/sshd

auth required pam_google_authenticator.so nullok
auth optional pam_succeed_if.so user ingroup sudo
auth optional pam_succeed_if.so user ingroup admin

ไฟล์: /etc/ssh/sshd_config

AuthenticationMethods publickey,keyboard-interactive
UsePAM yes
ChallengeResponseAuthentication yes

ผล:

          |  Belongs to sudo or  |  Has 2FA Already Setup      |  Authentication Result
          |  admin group         |  in ~/.google_authenticator | 
----------+----------------------+-----------------------------+------------------------
User A    |          NO          |       NO                    | DENIED LOGIN UNTIL 2FA IS SETUP
User B    |          YES         |       NO                    | CAN LOGIN (PRIVATE/PUBLIC KEY USED)

User C    |          NO          |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

User D    |          YES         |       YES                   | CAN LOGIN (PRIVATE/PUBLIC KEY AND 2FA USED)

ตามเอกสาร README.md ของ Google Authenticator :

nullok

PAM ต้องการความสำเร็จอย่างน้อยหนึ่งคำตอบจากโมดูลและ nullok ทำให้โมดูลนี้บอกว่า IGNORE ซึ่งหมายความว่าหากใช้ตัวเลือกนี้อย่างน้อยหนึ่งโมดูลอื่นจะต้องมีความสำเร็จดังกล่าว วิธีหนึ่งในการทำเช่นนี้คือการเพิ่มการรับรองความถูกต้อง pam_permit.so ที่ส่วนท้ายของการกำหนดค่า PAM

สิ่งนี้ทำให้การใช้nullokที่นี่ปลอดภัย

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