วิธีการใช้เซิร์ฟเวอร์ ssh กับ PAM แต่ไม่อนุญาตให้ใช้รหัสผ่านรับรองความถูกต้อง?


13

บทเรียนมากมายบอกให้คุณตั้งค่าเซิร์ฟเวอร์ ssh ดังนี้:

ChallengeResponseAuthentication no
PasswordAuthentication no
UsePAM no 

แต่ด้วยการตั้งค่านี้คุณไม่สามารถใช้ PAM ได้เนื่องจากฉันวางแผนที่จะใช้ 2 ปัจจัยการรับรองความถูกต้องกับ Google Authenticator (รหัสผ่าน OTP OnTime) ฉันต้องการ PAM

ดังนั้นวิธีการกำหนดค่าเดเบียนเจสซี deamon สดเดเบียนถ้าฉันต้องการที่จะป้องกันการเข้าสู่ระบบด้วยรหัสผ่านปกติ แต่ยังคงอนุญาตให้ใช้ PAM

บางทีคำถามที่แน่นอนคือวิธีกำหนดค่า pam ให้ไม่อนุญาตรหัสผ่าน?

รายละเอียดเกี่ยวกับการรับรองความถูกต้องของ PAM

การปิดใช้งานการรับรองความถูกต้องด้วยรหัสผ่านของ PAM นั้นค่อนข้างง่าย มันจำเป็นสำหรับ GNU / Linux ดิสทริบิวชันทั้งหมด (ยกเว้น Slackware ที่น่าทึ่ง) พร้อมกับ FreeBSD หากคุณไม่ระวังคุณสามารถตั้งค่า PasswordAuthentication เป็น 'ไม่' และยังคงเข้าสู่ระบบด้วยรหัสผ่านผ่านการตรวจสอบ PAM ปรากฎว่าคุณต้องตั้งค่า 'ChallengeResponseAuthentication' เป็น 'ไม่' เพื่อปิดใช้งานการรับรองความถูกต้อง PAM อย่างแท้จริง Free man page ของ FreeBSD มีสิ่งนี้ที่จะพูดซึ่งอาจช่วยชี้แจงสถานการณ์เล็กน้อย:

โปรดทราบว่าหาก ChallengeResponseAuthentication คือ 'ใช่' และนโยบายการรับรองความถูกต้อง PAM สำหรับ sshd รวมถึง pam_unix (8) การตรวจสอบรหัสผ่านจะได้รับอนุญาตผ่านกลไกการตอบสนองต่อความท้าทายโดยไม่คำนึงถึงมูลค่าของ PasswordAuthentication

http://www.unixlore.net/articles/five-minutes-to-more-secure-ssh.html

คำตอบ:


23

บางทีคำถามที่แน่นอนคือวิธีกำหนดค่า pam ให้ไม่อนุญาตรหัสผ่าน?

แก้ไข. คุณพบความจริงว่าการตั้งค่าUsePAM noเป็นคำแนะนำที่ไม่ดีโดยทั่วไปแล้ว ไม่เพียง แต่ป้องกันการพิสูจน์ตัวตนแบบ PAM ทุกรูปแบบ แต่ยังปิดใช้งานaccountและsessionโมดูล การควบคุมการเข้าถึงและการกำหนดค่าเซสชันเป็นสิ่งที่ดี

ก่อนอื่นมาสร้างรายการข้อกำหนด:

  • OTP pam_google_authenticator.soผ่าน นี้ต้องและUsePAM yes ChallengeResponseAuthentication yesคุณกำลังแจ้งให้พวกเขาสำหรับข้อมูลประจำตัวหลังจากทั้งหมด!
  • ไม่มีการตรวจสอบรหัสผ่านในรูปแบบอื่นผ่าน PAM นี่หมายถึงการปิดใช้งานauthโมดูลใด ๆที่อาจอนุญาตให้ส่งรหัสผ่านผ่านการkeyboard-interactiveเข้าสู่ระบบ (ซึ่งเราต้องเปิดใช้งานสำหรับ OTP)
  • การพิสูจน์ตัวตนจากคีย์ เราจำเป็นต้องมีการpublickeyรับรองความถูกต้องและบางทีgssapi-with-micหากคุณมี Kerberos ที่กำหนดค่าไว้

โดยปกติการรับรองความถูกต้องด้วยคีย์จะข้ามการตรวจสอบสิทธิ์แบบ PAM โดยสิ้นเชิง นี่จะหยุดเราในแทร็กของเราด้วย openssh เวอร์ชันเก่า แต่ Debian 8 (jessie) สนับสนุน AuthenticationMethodsคำสั่ง สิ่งนี้ทำให้เราต้องการวิธีการตรวจสอบความถูกต้องหลายวิธี แต่ใช้ได้กับลูกค้าที่ใช้ SSHv2 เท่านั้น


ตั้งค่า sshd

/etc/ssh/sshd_configด้านล่างนี้เป็นเส้นที่ผมขอแนะนำสำหรับ ตรวจสอบให้แน่ใจว่าคุณมีวิธีการเข้าถึงระบบนี้โดยที่sshdคุณไม่ได้ทำอะไรบางอย่าง!

# Require local root only
PermitRootLogin no

# Needed for OTP logins
ChallengeResponseAuthentication yes
UsePAM yes

# Not needed for OTP logins
PasswordAuthentication no

# Change to to "yes" if you need Kerberos. If you're unsure, this is a very safe "no".
GSSAPIAuthentication no


# Require an OTP be provided with key based logins
AuthenticationMethods publickey,keyboard-interactive

# Use this instead for Kerberos+pubkey, both with OTP
#
#AuthenticationMethods gssapi-with-mic,keyboard-interactive publickey,keyboard-interactive

อย่าลืมโหลดซ้ำsshdเมื่อมีการเปลี่ยนแปลงเหล่านี้แล้ว

การกำหนดค่า PAM

เรายังต้องกำหนดค่า PAM สมมติว่ามีการติดตั้ง Debian 8 (ตามคำถามของคุณ):

  • แสดงความคิดเห็นจาก@include common-auth/etc/pam.d/sshd
  • ทบทวน/etc/pam.d/sshdและยืนยันว่าไม่มีเส้นเริ่มต้นด้วยการauthที่มีอยู่ ไม่ควรมีหากเป็นการติดตั้งที่สะอาด แต่จะปลอดภัยที่สุด
  • เพิ่มรายการสำหรับauthpam_google_authenticator.so

จำไว้ว่ารหัสผ่านท้องถิ่นยังคงใช้งานได้

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


ยังไม่ได้ทดสอบมัน แต่มันดูสมเหตุสมผลและมี 5 upvotes ฉันคิดว่าฉันยอมรับได้
c33s

ฉันได้ทดสอบตัวเองแล้ว หากคุณต้องการปิดการใช้งานรหัสผ่านอย่างสมบูรณ์คุณต้องตั้ง ChallengeResponseAuthentication no ดูblog.tankywoo.com/linux/2013/09/14/…
ไม่ระบุชื่อ

@anonymous อ้างถึงคำถามของ OP และสัญลักษณ์แสดงหัวข้อย่อยแรก การปิดใช้งานChallengeResponseAuthenticationจะแบ่งวิธีการรับรองความถูกต้องแบบแป้นพิมพ์แบบโต้ตอบซึ่งจำเป็นสำหรับโมดูลการตรวจสอบความถูกต้อง PAM ที่จัดการ OTP (ต้องการโดย OP) การปิดใช้งาน CRA นั้นปลอดภัยต่อการทำงานหากคุณมีโมดูล PAM เป็นศูนย์ในauthกองซ้อนที่ต้องยิงเท่านั้น หากPasswordAuthenticationและGSSAPIAuthenticationถูกปิดการใช้งานรหัสผ่านจะไม่ได้รับการยอมรับเว้นแต่ PAM จะมีโมดูลตรวจสอบความถูกต้องที่เปิดใช้งานซึ่งจะขอให้มัน
Andrew B

(ที่กล่าวว่ามันยังคงเป็นลิงค์ที่ยอดเยี่ยม)
แอนดรู B

1

เพื่อไม่อนุญาตการร้องขอรหัสผ่าน

แสดงความคิดเห็นบรรทัดนี้

#auth       substack     password-auth

ใน /etc/pam.d/sshd

และต้องแน่ใจว่าไม่มี nullok ที่ส่วนท้ายของบรรทัดนี้ยกเว้นว่าจะเป็นการดีที่จะรับรองความถูกต้องผ่าน ssh โดยไม่ต้องใช้ OTP

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