SSH: การตรวจสอบสองปัจจัย


30

ปัจจุบันฉันมี Ubuntu Server 12.04 ที่ใช้งาน OpenSSH พร้อมกับ Samba และบริการอื่น ๆ ปัจจุบันฉันมีการตั้งค่าการรับรองความถูกต้องของกุญแจสาธารณะและฉันสงสัยว่ามันเป็นไปได้หรือไม่ที่จะตั้งค่าการตรวจสอบความถูกต้องด้วยสองปัจจัย? ฉันดู Google Authenticator ซึ่งปัจจุบันฉันใช้กับบัญชี Gmail ของฉัน

ฉันพบโมดูล PAM ที่ดูเหมือนว่าจะเข้ากันได้ แต่ดูเหมือนว่าคุณถูกบังคับให้ใช้รหัสผ่านและรหัสที่สร้างขึ้น

ฉันสงสัยว่ามีวิธีใช้แอปพลิเคชัน Google Authenticator (หรือบางอย่างที่คล้ายกัน) พร้อมกับรหัสสาธารณะของฉันเพื่อตรวจสอบสิทธิ์ในเซิร์ฟเวอร์ SSH ของฉันหรือไม่


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

ไม่แน่ใจว่าทำไมถึงมี -1 นี่เป็นคำถามที่น่าสนใจมากและฉันก็อยากจะรู้คำตอบ (ไม่ใช่ว่าฉันมีแนวโน้มที่จะใช้มัน แต่ถึงกระนั้นก็ดีที่จะซ่อนไว้ในคลังความรู้)
Mark Henderson

@Pierre คุณต้องการทั้งการตรวจสอบสิทธิ์กุญแจสาธารณะและ Google OTP หรือไม่?
mgorven

@gorgor ใช่ฉันพยายามตั้งค่ารหัสสาธารณะและ Google OTP ฉันเคยได้ยินบางคนบอกว่ามันเพียงพอแล้วที่จะมีวลีรหัสผ่านในการนับเป็นสองปัจจัย แต่ฉันกังวลเกี่ยวกับมัลแวร์ที่ขโมยกุญแจที่ไม่ได้เข้ารหัสจากหน่วยความจำ ฉันอยากจะมีสองอุปกรณ์แยกต่างหากที่ใช้สำหรับการรับรองความถูกต้องฉันหวาดระแวงเล็กน้อย
Donkey คอนกรีต

สิ่งนี้มีวัตถุประสงค์เพื่อนำไปใช้อย่างเป็นทางการใน 6.2: bugzilla.mindrot.org/show_bug.cgi?id=983#c59
Tobias Kienzler

คำตอบ:


8

Red Hat ได้เพิ่ม patch ไปยัง OpenSSH ใน RHEL (และ CentOS) 6.3 เพื่อต้องการกลไกการพิสูจน์ตัวตนหลายอย่างดังนั้นคุณสามารถทำสิ่งนี้:

RequiredAuthentications2 publickey,keyboard-interactive

ดูบันทึกประจำรุ่นสำหรับรายละเอียดที่ไม่มากนัก

น่าเสียดายที่ฟีเจอร์นี้ไม่ได้อยู่ใน OpenSSH upstream หรือ Ubuntu 12.04 ดังนั้นถ้าคุณไม่ต้องการหา patch และคอมไพล์ OpenSSH อีกครั้งฉันเกรงว่าคุณจะโชคไม่ดี


ฉันต้องบอกว่าฉันซาบซึ้งในความพยายามที่คุณหาคำตอบให้ฉันฉันลองไปดูผลการค้นหาของ Google ไม่กี่หน้า แต่ทั้งหมดบอกเป็นนัยถึงสิ่งที่คุณพูดถึงฉันต้องใช้รหัสผ่านและ OTP เท่านั้น ฉันอาจจะสร้าง CentOS VM เพื่อเล่นกับคุณสมบัติ
Donkey คอนกรีต

@Pierre ไม่ว่าความพยายามมากผมรู้เกี่ยวกับคุณลักษณะนี้ก่อน ;-)
mgorven

ฉันได้พบข้อผิดพลาดที่สอดคล้องกันและบางบันทึกเพิ่มเติม จุดบกพร่องรวมถึงการแก้ไขเป็นสิ่งที่แนบมา
Robie Basak

และนี่เป็นข้อผิดพลาด openssh ต้นน้ำ ดูเหมือนว่าฟังก์ชั่นที่คุ้นเคยจะถูกอัปสตรีมใน openssh ในไม่ช้า
Robie Basak

openssh 6.2 ได้ลงสู่ระบบในการพัฒนา Ubuntu ดังนั้นบันทึกสำหรับภัยพิบัติใด ๆ ที่การสนับสนุนนี้จะอยู่ในรุ่น 13.10 ที่คาดไว้ มันใช้อัพสตรีมAuthenticationMethodsเพื่อระบุวิธีการที่จำเป็นหลายอย่างเพื่อให้คุณสามารถต้องการทั้งคีย์ ssh และ PAM โดยที่ PAM จะใช้ Google Authenticator จนจบ
Robie Basak

8

คุณกำลังมองหาDuo Security


1
นี้. ใช่. ฉันรักสิ่งนี้!
LVLAaron

แน่นอน - Duo ติดตั้งง่ายสำหรับ Unix / Linux (ลิงก์คำตอบ), OpenVPN ( duosecurity.com/docs/openvpn_as ) หรือบริการOTH TOTP หรือการจัดการรหัสผ่าน LastPass บริการใด ๆ ที่เข้ากันได้กับ Google Authenticator (ซึ่งใช้ TOTP) สามารถใช้กับแอพมือถือของ Duo หรือโทเค็นฮาร์ดแวร์ที่รองรับ TOTP
RichVel

5

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

หรือจะบอกเป็นอย่างอื่น: โทเค็นจำเป็นสำหรับการตรวจสอบรหัสผ่านเท่านั้นไม่ใช่คีย์ SSH

ข้อ จำกัด นี้ไม่ได้มาจากโมดูล Google Authenticator แต่อย่างใด แต่มาจาก SSH ซึ่งใช้การรับรองความถูกต้องสองปัจจัย (ผ่านChallengeResponseAuthentication) สำหรับ PAM แต่ไม่เรียก PAM เมื่อมีการให้รหัสสาธารณะที่ถูกต้อง


สิ่งนี้ถูกต้อง แต่ตอนนี้เปลี่ยนไป openssh 6.2 เพิ่มการAuthenticationMethodsกำหนดค่าพารามิเตอร์ที่สามารถพลิกได้ ตอนนี้คุณสามารถต้องการได้ทั้ง
Robie Basak

3

คำถามนี้มาจากปี 2012 ตั้งแต่ SSH มีการเปลี่ยนแปลงและโปรโตคอล SSH2 ได้รับการดำเนินการ

ในเวอร์ชันล่าสุดของ SSH (> = 6.2) man sshd_config กล่าวถึง:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

หน้านี้http://lwn.net/Articles/544640/ยังกล่าวถึงความเป็นไปได้ในการใช้การพิสูจน์ตัวตนแบบ publickey และ PAM ในเวลาเดียวกัน


2

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


1

รับ YubiKey และทำตามคู่มือนี้http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-using-yubikey-and-ssh-public-keys-together/

AFAIK นี่เป็นวิธีที่ดีที่สุดในการใช้ Yubikey บนเซิร์ฟเวอร์ของคุณสำหรับการเข้าถึง SSH คำแนะนำข้างต้นช่วยให้คุณสามารถใช้กุญแจสาธารณะ + yubikey ในขณะที่ถ้าคุณไปกับคู่มืออย่างเป็นทางการ ( http://code.google.com/p/yubico-pam/wiki/YubikeyAndSSHViaPAM ) มันไม่ทำงานกับ public- สำคัญ.

ขอแสดงความนับถือ, วีไอพี


0

หากคุณตั้งข้อความรหัสผ่านในคีย์ส่วนตัวของคุณแสดงว่าคุณมีการตรวจสอบสิทธิ์แบบสองปัจจัยแล้ว ในการเข้าสู่ระบบผู้คนจะต้อง:

  1. สิ่งที่คุณมี - กุญแจส่วนตัวของคุณ
  2. สิ่งที่คุณรู้ - ข้อความรหัสผ่านสำหรับคีย์ส่วนตัวของคุณ

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

2
ฉันไม่เห็นด้วยอย่างสิ้นเชิง หากคีย์และใบรับรองไม่ใช่ "สิ่งที่คุณมี" สิ่งเหล่านั้นคืออะไร พวกเขาไม่ใช่ "สิ่งที่คุณรู้" แน่นอน (คุณกำลังติดนิสัยการเรียนรู้คีย์ SSH หรือไม่) และไม่ใช่ "สิ่งที่คุณเป็น" สิ่งเหล่านี้เป็นเพียงสามตัวเลือกดังนั้นโดยกระบวนการกำจัดพวกเขาแน่นอนที่สุดคือ "สิ่งที่คุณมี"
Bart B

1
ฉันเห็นด้วย; สำหรับฉันปัญหาอยู่ใน maxim (สิ่งที่คุณมี | รู้ | มี) แนวคิดของการพิสูจน์ตัวตนแบบสองปัจจัยคือต้องการสมาชิกของสองคลาสที่มีคุณสมบัติแตกต่างกัน สิ่งที่คุณรู้ว่าง่ายต่อการพกพา แต่คนอื่นสามารถรู้ได้ในเวลาเดียวกับที่คุณรู้ ดังนั้นเราจึงเพิ่มวินาทีปัจจัยที่แตกต่าง "สิ่งที่คุณมี" จะแตกต่างกันก็ต่อเมื่อไม่สามารถคัดลอกได้ (หรือคัดลอกยาก) ไม่อย่างนั้นมันไม่ใช่สิ่งที่คุณรู้ แต่มันก็ไม่ได้มีคุณภาพแตกต่างจากสิ่งที่คุณรู้เพราะคนอื่นสามารถมีมันในเวลาเดียวกับคุณ
MadHatter สนับสนุนโมนิก้า

2
ฉันตกลงอย่างแน่นอนว่าคีย์แพร์ที่มีการป้องกันด้วยรหัสผ่านเป็นการปรับปรุงด้านความปลอดภัยอย่างมากต่อชื่อผู้ใช้และรหัสผ่านที่ตรง ฉันไม่เห็นด้วยอย่างน่าเศร้าที่ทั้งคู่นับว่าเป็นสองปัจจัยและเราอาจต้องเห็นด้วยที่จะไม่เห็นด้วย
MadHatter สนับสนุน Monica

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