บังคับใช้รหัสผ่านคีย์ SSH หรือไม่


9

ฉันกำลังดูการลบการเข้าสู่ระบบด้วยรหัสผ่านสำหรับ SSH อย่างไรก็ตามฉันไม่ต้องการอนุญาตให้ใช้คีย์ ssh ที่ไม่มีรหัสผ่านเนื่องจากจะแย่กว่านี้

ฉันจะแน่ใจได้อย่างไรว่ามีเพียงคีย์ SSH ที่มีรหัสผ่านเท่านั้นที่สามารถเชื่อมต่อได้

หากไม่สามารถทำได้มีทางเลือกอื่นเช่นการจัดการการสร้างคีย์ SSH จากส่วนกลางและป้องกันผู้ใช้จากการสร้างและ / หรือใช้คีย์ของตนเองหรือไม่? ฉันคิดว่าเหมือน PKI

คำตอบ:


20

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

น่าเสียดายที่คุณไม่สามารถบังคับให้ผู้ใช้ล็อคคีย์ส่วนตัวด้วยวลีรหัสผ่าน บางครั้งต้องใช้ไพรเวตคีย์ที่ไม่มีการป้องกันเพื่อให้สามารถเข้าถึงเซิร์ฟเวอร์ SSH ระยะไกลโดยอัตโนมัติ หนึ่งนิสัยที่ดีผมขอแนะนำให้สำหรับกรณีดังกล่าวคือการให้คำแนะนำแก่ผู้ใช้เพื่อกัญชาknown_hostsไฟล์ (เก็บไว้ที่~ / .ssh / known_hosts ) ซึ่งช่วยให้ข้อมูลเกี่ยวกับโฮสต์ระยะไกลที่เชื่อมต่อผู้ใช้ในการใช้คำสั่งต่อไปนี้:

ssh-keygen -H -f ~/.ssh/known_hosts

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

นอกจากนี้สิ่งอื่นที่คุณควรจำไว้เสมอคือไม่อนุญาตให้รูทเข้าสู่ระบบจากระยะไกลโดยเพิ่มสิ่งต่อไปนี้ในการกำหนดค่าเซิร์ฟเวอร์ SSH ของคุณ (sshd_config):

PermitRootLogin no

ในทางตรงกันข้ามหากคุณต้องการป้องกันผู้ใช้จากการใช้กุญแจในการตรวจสอบ แต่ใช้รหัสผ่านแทนคุณควรเพิ่มสิ่งต่อไปนี้ในsshd_configของคุณ:

PasswordAuthentication yes
PubkeyAuthentication no

8

มันเป็นไปไม่ได้.

ผู้ใช้สามารถทำอะไรกับคีย์ไฟล์ของพวกเขาแปลงเป็นรหัสผ่านแม้ว่าคุณจะสร้างมันขึ้นมาเช่น


3

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


2

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

เมื่อไฟล์คีย์อยู่ในตำแหน่งที่ควบคุมแล้วคุณจะต้องมีอินเทอร์เฟซการจัดการเพื่ออัปเดต (และบังคับใช้นโยบายรหัสผ่าน) ตามด้วยการแจกจ่ายคีย์ไปยังโฮสต์ที่ต้องการ ม้วนตัวเองหรือดูผลิตภัณฑ์เช่น FoxT / Tectia เป็นต้น


... ซึ่งทำลายประโยชน์ของกุญแจสาธารณะ
Patwie

0

สิ่งหนึ่งที่ทำให้บรรเทาได้คือการใช้ปลั๊กอินโมดูล PAM ของ Google authenticator โดยปกติจะมีให้ภายในแพ็คเกจอย่างเป็นทางการ

สิ่งนี้จะทำให้ 2FA พร้อมใช้งานผ่านรหัส 6 หลักในสมาร์ทโฟนของคุณ

คำแนะนำที่นี่: วิธีการตั้งค่าการรับรองความถูกต้องแบบหลายปัจจัยสำหรับ SSH บน Ubuntu 16.04


1
คุณควรทราบว่าสิ่งนี้ไม่ได้ตอบคำถามโดยตรงแต่เป็นทางเลือกที่ดี
ceejayoz

1
@ceejayoz คุณพูดถูก ฉันได้เพิ่ม "หนึ่งการลดทอนจะใช้ .. " ที่จุดเริ่มต้นของคำตอบตอนนี้เพื่อให้ชัดเจนว่าเป็นทางเลือก
Basil

-1

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

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