บังคับใช้การพิสูจน์ตัวตนพับลิกคีย์ SSH สำหรับผู้ใช้ที่ระบุ


10

เป็นไปได้หรือไม่ที่จะบังคับให้ผู้ใช้บางคนเข้าสู่ระบบด้วยกุญแจสาธารณะในขณะที่อนุญาตให้ผู้ใช้รายอื่นเข้าสู่ระบบด้วยรหัสผ่าน? เนื่องจากการตรวจสอบคีย์สาธารณะ (ด้วยข้อความรหัสผ่าน) นั้นแข็งแรงกว่าการพิสูจน์ตัวตนด้วยรหัสผ่านเท่านั้นเราจึงต้องการให้ sudoers ลงชื่อเข้าใช้ด้วยรหัสสาธารณะ อย่างไรก็ตามมันไม่สะดวกในการบังคับให้ผู้ใช้ทั่วไปทำเช่นนั้น ในsshd_configฉันไม่เห็นการกำหนดค่าที่เกี่ยวข้องกับนโยบายใด ๆ

คำตอบ:


11

คุณมีตัวเลือกน้อย ในคำตอบนี้ฉันจะสมมติว่าคุณมีsudoersกลุ่มที่กำหนดไว้

ลองดูที่sshd_configหน้าคนและมองหาMatchคำสั่ง ซึ่งช่วยให้คุณระบุบล็อกการกำหนดค่าที่ใช้กับชุดย่อยของการเชื่อมต่อ ssh ของคุณเท่านั้น คุณสามารถทำสิ่งนี้:

Match Group sudoers
PasswordAuthentication no
ChallengeResponseAuthentication no

ในทางทฤษฎีคุณสามารถทำสิ่งที่คล้ายกับการกำหนดค่า PAM ซึ่งจะทำให้การตรวจสอบสิทธิ์ล้มเหลวโดยบุคคลในsudoersกลุ่ม นี่อาจจะเกี่ยวข้องกับโมดูลpam_succeed_if ... คุณสามารถเพิ่มสิ่งนี้ในการกำหนดค่าของคุณauthสำหรับ sshd:

auth        requisite     pam_succeed_if.so user notingroup sudoers quiet

ซึ่งหมายความว่าเฉพาะผู้ที่ไม่อยู่ในsudoersกลุ่มเท่านั้นที่สามารถตรวจสอบสิทธิ์ผ่าน PAM โปรดทราบว่านี่ไม่ได้ทดสอบ คุณสามารถใช้ โมดูลpam_listfileเพื่อทำสิ่งที่คล้ายกัน


1
ขอบคุณ! ฉันต้องทราบด้วยว่าคำสั่งจับคู่เปิดตัวใน OpenSSH 5.0 สำหรับการแจกแจงแบบอนุรักษ์นิยมเช่น CentOS อาจไม่สามารถใช้งานได้จริง
Crend King

สิ่งนี้ทำให้ OpenSSH 7.7p1 - ฉันต้องลบคำสั่ง ChallengeResponseAuthentication เพื่อให้รีสตาร์ท
rbsec

3

อีกคำตอบที่เป็นไปได้เช่น @larsks คำตอบไม่ทำงานสำหรับรุ่นของssh_dฉันเป็นรุ่นของฉันดูเหมือนว่าจะใช้เอกสารที่พบที่นี่ซึ่งระบุ:

สามารถใช้ได้เฉพาะคำหลักบางส่วนในบรรทัดต่อจากคำหลักที่ทำงานแบบจับคู่ คำหลักที่มีอยู่คือ . .

ChallengeResponseAuthenticationรายการคำหลักที่ไม่รวมถึง:

วิธีที่สนุกจริงๆที่ฉันพบคือการใช้AuthenticationMethodsซึ่งในกรณีของคุณจะทำงานเช่น:

Match Group sudoers
AuthenticationMethods 'publickey'

AuthenticationMethods รับรายการค่าที่คั่นด้วยเครื่องหมายจุลภาคซึ่งแทนชุดวิธีการที่ผู้ใช้ต้องผ่านก่อนเข้าถึงเซิร์ฟเวอร์

AuthenticationMethods 'publickey,password' จะบังคับให้ผู้ใช้ผ่านด้วยรหัสสาธารณะและรหัสผ่าน

man sshd_configหากต้องการอ่านเพิ่มเติม

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