ฉันจะทราบได้อย่างไรว่ากุญแจ SSH ของใครบางคนมีข้อความรหัสผ่านว่างเปล่า


44

ระบบ Linux & FreeBSD ของฉันบางระบบมีผู้ใช้หลายสิบคน เจ้าหน้าที่จะใช้โหนด "ssh gateway" เหล่านี้เพื่อ SSH ไปยังเซิร์ฟเวอร์ภายในอื่น ๆ

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

ฉันจะทราบได้อย่างไรว่าคีย์ส่วนตัวไม่ได้เข้ารหัส (เช่นไม่มีข้อความรหัสผ่าน)? มีวิธีอื่นในการทำเช่นนี้กับคีย์หุ้มเกราะ ASCII เทียบกับคีย์ที่ไม่ใช่ชุดเกราะ ASCII หรือไม่?

ปรับปรุง:

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


2
grumble ssh-agent บ่นไม่ควรมีคีย์ส่วนตัวใด ๆ บนเกตเวย์
Derobert

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

คำตอบ:


59

คีย์ส่วนตัว OpenSSH ที่มีวลีรหัสผ่านว่างเปล่าจริงๆแล้วไม่ได้เข้ารหัส

คีย์ส่วนตัวที่เข้ารหัสจะถูกประกาศเช่นนั้นในไฟล์ไพรเวตคีย์ ตัวอย่างเช่น

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,7BD2F97F977F71FC

BT8CqbQa7nUrtrmMfK2okQLtspAsZJu0ql5LFMnLdTvTj5Sgow7rlGmee5wVuqCI
/clilpIuXtVDH4picQlMcR+pV5Qjkx7BztMscx4RCmcvuWhGeANYgPnav97Tn/zp
...
-----END RSA PRIVATE KEY-----

ดังนั้นสิ่งที่ชอบ

# grep -L ENCRYPTED /home/*/.ssh/id_[rd]sa

ควรทำเคล็ดลับ


3
@ jmanning2k: ฉันเพิ่งสร้างคีย์ส่วนตัว RSA โดยไม่มีข้อความรหัสผ่านและมันไม่มีสตริง 'เข้ารหัส: ไม่มี'
Stefan Lasiewski

@ jmanning2k: -Lแฟล็กแสดงรายการเฉพาะชื่อไฟล์ที่ไม่ตรงกับรูปแบบ ดังนั้นคำตอบนี้ถูกต้องด้วยตัวมันเอง
บาฮามาต

ฉันยืนถูกแก้ไขลบความคิดเห็นเพื่อความชัดเจน สำหรับบันทึกฉันมีไฟล์คีย์ส่วนตัว Putty สองสามตัวที่คัดลอกมาซึ่งอ่าน 'การเข้ารหัส: ไม่มี'
jmanning2k

2
หรือสตริง OPENSSH: ดูtedunangst.com/flak/post/…
Jack Wasey

10

ฉันมองหาสิ่งนี้และไม่เคยพบคำตอบที่น่าพอใจ แต่ฉันก็สามารถสร้างมันขึ้นมาได้ดังนั้น ...

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

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Key has comment '/home/rlpowell/.ssh/KEYTEST'
Your identification has been saved with the new passphrase.
$ echo $?
0

$ ssh-keygen -p -P '' -N '' -f ~/.ssh/KEYTEST
Bad passphrase.
$ echo $?
1

3
ทำไมไม่ลอง-N ''เปลี่ยนข้อความรหัสผ่านไปจะไม่มีการเปลี่ยนแปลงเสมอไป?
รักษา mods ของคุณดี

facepalm สมบูรณ์แบบขอบคุณมาก
rlpowell

+1 เนื่องจากโซลูชันนี้ใช้ได้กับรูปแบบคีย์ส่วนตัวใหม่ของ SSH
เซบาสเตียน Krysmanski

8

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

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

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

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