มีประโยชน์ด้านความปลอดภัยใด ๆ ในการปรับใช้กลุ่ม SSH DH ที่กำหนดเองกับระบบเฉพาะลูกค้าหรือไม่


16

หนึ่งในกลยุทธ์บรรเทาผลกระทบที่แนะนำต่อการโจมตีที่เกี่ยวข้องกับLogjamใน SSH คือการสร้างกลุ่ม SSH Diffie-Hellman ที่กำหนดเองโดยใช้สิ่งที่ต้องการ (ด้านล่างสำหรับ OpenSSH)

ssh-keygen -G moduli-2048.candidates -b 2048
ssh-keygen -T moduli-2048 -f moduli-2048.candidates

moduli-2048ตามมาด้วยการเปลี่ยนไฟล์โมดูลทั้งระบบที่มีไฟล์ที่ส่งออก ( ssh-keygen -Gใช้เพื่อสร้างช่วงเวลา DH-GEX ของผู้สมัครและssh-keygen -Tทดสอบผู้สมัครที่สร้างขึ้นเพื่อความปลอดภัย)

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

ฉันสนใจคำตอบเกี่ยวกับ OpenSSH บน Linux เป็นหลัก แต่คำตอบทั่วไปจะได้รับการชื่นชมเช่นกัน

คำตอบ:


18

คุณสามารถทำได้ถ้าคุณต้องการ แต่ฉันจะไม่รบกวนการสร้างพารามิเตอร์ DH 2048- บิตสำหรับ OpenSSH มีสิ่งสำคัญอื่น ๆ อีกมากมายที่คุณต้องมีทำเพื่อรักษาความปลอดภัย SSH เช่นการปิดใช้งานการเข้ารหัสลับที่อ่อนแอ

สิ่งที่ฉันจะทำคือลบอันที่มีอยู่ซึ่งน้อยกว่า 2048 บิต

awk '$5 >= 2000' /etc/ssh/moduli > /etc/ssh/moduli.strong && \
mv /etc/ssh/moduli.strong /etc/ssh/moduli

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

นอกจากนี้ยังมีบิตที่อยากรู้อยากเห็นในssh-keygenหน้าคน:

เป็นสิ่งสำคัญที่ไฟล์นี้จะมีโมดูลัสในช่วงความยาวบิตและปลายทั้งสองของการเชื่อมต่อจะใช้โมเดลร่วมกัน

ซึ่งดูเหมือนว่าจะเถียงกับการแทนที่โมดูลีที่มีอยู่ถึงแม้ว่ามันจะไม่ได้ให้เหตุผลที่แท้จริงในการทำเช่นนั้น


ที่เกี่ยวข้อง: Diffie-Hellman ใช้โมดูลัสที่แตกต่างกันทั้งสองข้างในการเข้ารหัส สำหรับความเข้าใจที่ จำกัด ของฉันปรากฏว่าหากไม่มีความยาวที่ต้องการร่วมกัน Diffie-Hellman ที่มีกลุ่มความยาวนั้นเป็นไปไม่ได้ในกรณีทั่วไปและอาจไม่สามารถทำได้ในกรณีเฉพาะ ดังนั้นการมี moduli ที่ใช้ร่วมกันระหว่างจุดปลายสองจุดเป็นข้อกำหนดทางคณิตศาสตร์ของโปรโตคอลการแลกเปลี่ยนคีย์ Diffie-Hellman และพยายามที่จะทำการแลกเปลี่ยนคีย์ Diffie-Hellman ระหว่างจุดปลายสองจุดที่ไม่มี moduli ทั่วไปจะล้มเหลว
CVN

2
RFC 4419 [ tools.ietf.org/html/rfc4419]นั้นถูกต้องสำหรับการอนุญาตให้เซิร์ฟเวอร์ระบุพารามิเตอร์ DH ที่กำหนดเอง เซิร์ฟเวอร์จะส่งพารามิเตอร์ตัวเลือกของมันให้กับลูกค้าและหากลูกค้าเห็นด้วยทั้งสองฝ่ายจะใช้พารามิเตอร์ที่เซิร์ฟเวอร์จัดเตรียมไว้เพื่อสร้างความลับที่แชร์ซึ่งใช้เป็นคีย์เซสชัน ดังนั้นจึงเป็นเรื่องที่สมบูรณ์แบบหากเซิร์ฟเวอร์และลูกค้าไม่มีรายการเดียวกันในไฟล์ moduli
Brian Minton

2

คำตอบคือ: ไม่ไม่มีประโยชน์ :)

/etc/ssh/moduli ไฟล์ใช้สำหรับฝั่งเซิร์ฟเวอร์เท่านั้น

คุณไม่จำเป็นต้องกังวลเกี่ยวกับไฟล์นั้นสำหรับฝั่งไคลเอ็นต์ SSH:

คุณสามารถติดตามการดำเนินการของไคลเอ็นต์ SSH และตรวจสอบว่าไม่ได้เปิดไฟล์นั้น

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