Score:0

ปิดใช้งานคีย์ OpenSSH บางคีย์บน OpenBSD: เหตุใดรายการ 'sshd_config' ที่สอดคล้องกันจึงถูกละเว้นและเหตุใด 'ssh-keygen -A' จึงสร้างคีย์ต้องห้าม

ธง cn

ฉันพยายามทำสิ่งต่อไปนี้บนเซิร์ฟเวอร์ OpenBSD 6.9 ของฉัน:

  1. ห้ามใช้กุญแจทั้งหมดยกเว้น ssh-ed25519 หนึ่งในทั้งสอง เซิร์ฟเวอร์ และ ลูกค้า ด้าน
  2. จำกัด ssh-keygen -A เพื่อสร้างคีย์โดยผู้มีอำนาจเท่านั้น ssh-ed25519 อัลกอริทึมและไม่มีอะไรอื่น

เพื่อให้บรรลุเป้าหมายนี้ ฉันได้เพิ่มบรรทัดต่อไปนี้ในของฉัน sshd_config:

โฮสต์คีย์ /etc/ssh/ssh_host_ed25519_key
CASignatureอัลกอริทึม ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
อัลกอริทึมของ HostKey ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

ฉันได้เพิ่มบรรทัดต่อไปนี้ในของฉันด้วย ssh_config:

CASignatureอัลกอริทึม ssh-ed25519
HostbasedAcceptedKeyTypes ssh-ed25519
อัลกอริทึมของ HostKey ssh-ed25519
PubkeyAcceptedKeyTypes ssh-ed25519

ฉันได้ลบคีย์ทั้งหมดแล้ว เหลือแต่คีย์ที่ได้รับอนุญาต

รีสตาร์ท sshd:

# rcctl รีสตาร์ท sshd                                                                            
sshd (ตกลง)
sshd (ตกลง)

หลังจากตรวจสอบว่ามีการใช้การตั้งค่าของฉันหรือไม่โดยการรันคำสั่งต่อไปนี้:

# ssh -Q HostbasedAcceptedAlgorithms
# ssh -Q HostKeyอัลกอริทึม
# ssh -Q PubkeyAcceptedAlgorithms

สำหรับความประหลาดใจของฉัน นี่คือสิ่งที่พวกเขาทั้งหมดกลับมาพร้อมกับ:

ssh-ed25519
[email protected]
[email protected]
[email protected]
ssh-rsa
rsa-sha2-256
rsa-sha2-512
ssh-dss
ecdsa-sha2-nistp256
ecdsa-sha2-nistp384
ecdsa-sha2-nistp521
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]
[email protected]

กล่าวอีกนัยหนึ่ง ข้อจำกัดที่สำคัญจะถูกละเว้น

เพื่อความปลอดภัย ฉันได้รีสตาร์ทเซิร์ฟเวอร์แล้วด้วยซ้ำ แต่ก็ไม่มีความแตกต่างกัน

วิธีแก้ปัญหาที่เป็นไปได้คือการลบไฟล์สำคัญทั้งหมดยกเว้นไฟล์ที่ได้รับอนุญาต อย่างไรก็ตามสคริปต์เริ่มต้น /etc/rc มีเส้น ssh-keygen -Aซึ่งสร้างคีย์ ssh ที่หายไปทั้งหมดใหม่หลังจากรีบูตระบบทุกครั้ง ก่อนที่ sshd daemon จะเริ่มทำงาน รวมถึงอัลกอริทึมต้องห้าม!

ดังนั้นการถอดกุญแจออกจึงไม่สามารถแก้ปัญหาได้

เพื่อเป็นวิธีแก้ปัญหาเพิ่มเติม ฉันสามารถลบไฟล์ ssh-keygen -A บรรทัดจากสคริปต์เริ่มต้นหรือแทนที่ด้วยอัลกอริทึมการสร้างคีย์ที่กำหนดเองของฉัน แต่นั่นจะนำไปสู่จุดเริ่มต้นทั้งหมด: ต้องจัดการกับปัญหานี้ซ้ำแล้วซ้ำอีก เช่น หลังจากการอัปเดตระบบทุกครั้ง เมื่อใดก็ตามที่ทีม OpenBSD เผยแพร่เวอร์ชันใหม่ของ /etc/rc. การนำสายนั้นออกโดยอัตโนมัติและทดสอบวิธีแก้ปัญหาที่เลอะเทอะบนเซิร์ฟเวอร์จำนวนมากนั้นทำได้ยาก และอาจนำไปสู่ความล้มเหลวของเครือข่ายขนาดใหญ่หากมีสิ่งผิดปกติเกิดขึ้น

ดังนั้นฉันจึงดำเนินการตรวจสอบต่อไปและขุดค้นซอร์สโค้ดของ ssh-keygen. ฉันพบว่ามันเป็นไปไม่ได้ที่จะจำกัดพฤติกรรมของ -ก เปลี่ยนจากภายนอกเช่น ผ่านไฟล์ปรับแต่ง มันไม่ได้ทำการทดสอบเบื้องต้นด้วยซ้ำว่าคีย์ได้รับอนุญาตหรือไม่ มันแค่สร้างคีย์ตามรายการของอัลกอริทึมจากอาร์เรย์ฮาร์ดโค้ด วิธีเดียวที่จะหลีกเลี่ยงสิ่งนี้คือแก้ไข คอมไพล์ใหม่ และใช้ตัวแยกแบบกำหนดเองของ ssh-keygenแต่ฉันจะต้องจัดการกับมันหลังจากการอัพเดท OpenSSH ทุกครั้ง...

ฉันพบวิธีแก้ปัญหาบางส่วนสำหรับระบบปฏิบัติการอื่น แต่ไม่ใช่สำหรับ OpenBSD

ใครช่วยชี้ให้ฉันเห็นวิธีแก้ปัญหาที่เหมาะสมได้ไหม ทำไมของฉัน sshd_config และ ssh_config ข้อจำกัดที่สำคัญจะถูกละเว้นและวิธีรับ ssh-keygen -A หยุดสร้างคีย์ด้วยอัลกอริทึมต้องห้าม?

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

ขอบคุณมากสำหรับคำตอบที่เป็นประโยชน์ทั้งหมด

Michael Hampton avatar
cz flag
สำหรับ ssh-keygen คุณควรพูดคุยกับนักพัฒนา OpenSSH ผ่านระบบติดตามปัญหาใดก็ตามที่พวกเขาใช้
Michael Hampton avatar
cz flag
นอกจากนี้ ฉันยังบ่นกับผู้ดูแล OpenBSD เกี่ยวกับการใช้ ssh-keygen -A ในสคริปต์เริ่มต้น บน Linux คีย์ทั้งหมดจะถูกสร้างแยกกัน และการสร้างแต่ละคีย์ (เช่น rsa, ecdsa, ed25519) สามารถเปิดหรือปิดได้ตามต้องการโดยไม่ขึ้นกับคีย์อื่นๆ

โพสต์คำตอบ

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