การเปิดตัว OpenSSH 8.5

หลังจากห้าเดือนของการพัฒนา ก็ได้มีการนำเสนอ OpenSSH 8.5 ซึ่งเป็นการใช้งานแบบเปิดของไคลเอนต์และเซิร์ฟเวอร์สำหรับการทำงานบนโปรโตคอล SSH 2.0 และ SFTP

นักพัฒนา OpenSSH เตือนเราถึงการเลิกใช้งานอัลกอริทึมที่ใช้แฮช SHA-1 ที่กำลังจะเกิดขึ้น เนื่องจากประสิทธิภาพที่เพิ่มขึ้นของการโจมตีการชนกันด้วยคำนำหน้าที่กำหนด (ค่าใช้จ่ายในการเลือกการชนกันอยู่ที่ประมาณ 50 ดอลลาร์) ในหนึ่งในการเปิดตัวที่กำลังจะมาถึง พวกเขาวางแผนที่จะปิดใช้งานความสามารถในการใช้อัลกอริธึมลายเซ็นดิจิทัลคีย์สาธารณะ "ssh-rsa" ตามค่าเริ่มต้น ซึ่งถูกกล่าวถึงใน RFC ดั้งเดิมสำหรับโปรโตคอล SSH และยังคงแพร่หลายในทางปฏิบัติ

หากต้องการทดสอบการใช้ ssh-rsa บนระบบของคุณ คุณสามารถลองเชื่อมต่อผ่าน ssh ด้วยตัวเลือก “-oHostKeyAlgorithms=-ssh-rsa” ในเวลาเดียวกันการปิดใช้งานลายเซ็นดิจิทัล "ssh-rsa" ตามค่าเริ่มต้นไม่ได้หมายความว่าจะละทิ้งการใช้คีย์ RSA โดยสิ้นเชิง เนื่องจากนอกเหนือจาก SHA-1 แล้ว โปรโตคอล SSH ยังอนุญาตให้ใช้อัลกอริธึมการคำนวณแฮชอื่น ๆ โดยเฉพาะอย่างยิ่ง นอกเหนือจาก “ssh-rsa” แล้ว ยังคงสามารถใช้บันเดิล “rsa-sha2-256” (RSA/SHA256) และ “rsa-sha2-512” (RSA/SHA512) ได้

เพื่อให้การเปลี่ยนไปใช้อัลกอริธึมใหม่ราบรื่นขึ้น OpenSSH 8.5 ได้เปิดใช้งานการตั้งค่า UpdateHostKeys เป็นค่าเริ่มต้น ซึ่งช่วยให้ไคลเอนต์สลับไปใช้อัลกอริธึมที่เชื่อถือได้มากขึ้นโดยอัตโนมัติ เมื่อใช้การตั้งค่านี้ ส่วนขยายโปรโตคอลพิเศษจะถูกเปิดใช้งาน “[ป้องกันอีเมล]" อนุญาตให้เซิร์ฟเวอร์แจ้งไคลเอ็นต์เกี่ยวกับคีย์โฮสต์ที่มีอยู่ทั้งหมดหลังจากการตรวจสอบสิทธิ์แล้ว ไคลเอ็นต์สามารถสะท้อนถึงคีย์เหล่านี้ในไฟล์ ~/.ssh/known_hosts ซึ่งอนุญาตให้อัปเดตคีย์โฮสต์และทำให้เปลี่ยนคีย์บนเซิร์ฟเวอร์ได้ง่ายขึ้น

การใช้ UpdateHostKeys ถูกจำกัดด้วยคำเตือนหลายประการที่อาจถูกลบออกในอนาคต: คีย์จะต้องอ้างอิงใน UserKnownHostsFile และไม่ได้ใช้ใน GlobalKnownHostsFile กุญแจจะต้องอยู่ภายใต้ชื่อเดียวเท่านั้น ไม่ควรใช้ใบรับรองคีย์โฮสต์ ในknown_hostsมาสก์ตามชื่อโฮสต์ไม่ควรใช้ ต้องปิดใช้งานการตั้งค่า VerifyHostKeyDNS พารามิเตอร์ UserKnownHostsFile ต้องใช้งานอยู่

อัลกอริธึมที่แนะนำสำหรับการย้ายข้อมูล ได้แก่ rsa-sha2-256/512 ที่ใช้ RFC8332 RSA SHA-2 (รองรับตั้งแต่ OpenSSH 7.2 และใช้เป็นค่าเริ่มต้น), ssh-ed25519 (รองรับตั้งแต่ OpenSSH 6.5) และ ecdsa-sha2-nistp256/384/521 บน RFC5656 ECDSA (รองรับตั้งแต่ OpenSSH 5.7)

การเปลี่ยนแปลงอื่นๆ:

  • การเปลี่ยนแปลงด้านความปลอดภัย:
    • ช่องโหว่ที่เกิดจากการปลดปล่อยพื้นที่หน่วยความจำที่ว่างแล้ว (ปลอดสองเท่า) ได้รับการแก้ไขใน ssh-agent ปัญหานี้เกิดขึ้นตั้งแต่เปิดตัว OpenSSH 8.2 และอาจถูกโจมตีได้หากผู้โจมตีสามารถเข้าถึงซ็อกเก็ต ssh-agent บนระบบภายในเครื่องได้ สิ่งที่ทำให้การหาประโยชน์ยากขึ้นก็คือ มีเพียงรูทและผู้ใช้ดั้งเดิมเท่านั้นที่สามารถเข้าถึงซ็อกเก็ตได้ สถานการณ์การโจมตีที่เป็นไปได้มากที่สุดคือเอเจนต์ถูกเปลี่ยนเส้นทางไปยังบัญชีที่ควบคุมโดยผู้โจมตี หรือไปยังโฮสต์ที่ผู้โจมตีมีสิทธิ์เข้าถึงรูท
    • sshd ได้เพิ่มการป้องกันการส่งพารามิเตอร์ขนาดใหญ่มากพร้อมชื่อผู้ใช้ไปยังระบบย่อย PAM ซึ่งช่วยให้คุณสามารถบล็อกช่องโหว่ในโมดูลระบบ PAM (Pluggable Authentication Module) ตัวอย่างเช่น การเปลี่ยนแปลงจะป้องกันไม่ให้มีการใช้ sshd เป็นเวกเตอร์เพื่อใช้ประโยชน์จากช่องโหว่ของรูทที่เพิ่งค้นพบใน Solaris (CVE-2020-14871)
  • การเปลี่ยนแปลงความเข้ากันได้ที่อาจเกิดขึ้น:
    • ใน ssh และ sshd วิธีการแลกเปลี่ยนคีย์เชิงทดลองได้รับการออกแบบใหม่ซึ่งมีความทนทานต่อการคาดเดาบนคอมพิวเตอร์ควอนตัม คอมพิวเตอร์ควอนตัมเร็วกว่าอย่างมากในการแก้ปัญหาการแบ่งจำนวนธรรมชาติให้เป็นปัจจัยเฉพาะ ซึ่งรองรับอัลกอริธึมการเข้ารหัสแบบอสมมาตรสมัยใหม่ และไม่สามารถแก้ไขได้อย่างมีประสิทธิภาพบนโปรเซสเซอร์แบบคลาสสิก วิธีการที่ใช้จะขึ้นอยู่กับอัลกอริทึม NTRU Prime ที่พัฒนาขึ้นสำหรับระบบเข้ารหัสหลังควอนตัม และวิธีการแลกเปลี่ยนคีย์เส้นโค้งวงรี X25519 แทน [ป้องกันอีเมล] ขณะนี้วิธีการถูกระบุว่าเป็น [ป้องกันอีเมล] (อัลกอริทึม sntrup4591761 ถูกแทนที่ด้วย sntrup761)
    • ใน ssh และ sshd ลำดับการประกาศอัลกอริธึมลายเซ็นดิจิทัลที่รองรับมีการเปลี่ยนแปลง ขณะนี้ ED25519 มีการนำเสนอก่อนแทน ECDSA
    • ใน ssh และ sshd การตั้งค่าคุณภาพ TOS/DSCP ของพารามิเตอร์บริการสำหรับเซสชันแบบโต้ตอบจะเสร็จสิ้นก่อนที่จะสร้างการเชื่อมต่อ TCP
    • การสนับสนุนการเข้ารหัสถูกยกเลิกใน ssh และ sshd [ป้องกันอีเมล]ซึ่งเหมือนกับ aes256-cbc และใช้ก่อนที่ RFC-4253 จะได้รับการอนุมัติ
    • ตามค่าเริ่มต้น พารามิเตอร์ CheckHostIP จะถูกปิดใช้งาน ซึ่งมีประโยชน์เพียงเล็กน้อย แต่การใช้งานจะทำให้การหมุนเวียนคีย์มีความซับซ้อนอย่างมากสำหรับโฮสต์ที่อยู่ด้านหลังโหลดบาลานเซอร์
  • เพิ่มการตั้งค่า PerSourceMaxStartups และ PerSourceNetBlockSize ใน sshd เพื่อจำกัดความเข้มข้นของตัวจัดการการเรียกใช้งานตามที่อยู่ไคลเอ็นต์ พารามิเตอร์เหล่านี้ช่วยให้คุณควบคุมขีดจำกัดในการเปิดตัวกระบวนการได้ละเอียดยิ่งขึ้น เมื่อเปรียบเทียบกับการตั้งค่า MaxStartups ทั่วไป
  • มีการเพิ่มการตั้งค่า LogVerbose ใหม่ลงใน ssh และ sshd ซึ่งช่วยให้คุณสามารถยกระดับข้อมูลการดีบักที่ทิ้งลงในบันทึกได้อย่างมีประสิทธิภาพ พร้อมด้วยความสามารถในการกรองตามเทมเพลต ฟังก์ชัน และไฟล์
  • ใน ssh เมื่อยอมรับคีย์โฮสต์ใหม่ ชื่อโฮสต์และที่อยู่ IP ทั้งหมดที่เชื่อมโยงกับคีย์จะปรากฏขึ้น
  • ssh อนุญาตให้ตัวเลือก UserKnownHostsFile=none ปิดการใช้งานไฟล์known_hosts เมื่อระบุคีย์โฮสต์
  • มีการเพิ่มการตั้งค่า KnownHostsCommand ใน ssh_config สำหรับ ssh แล้ว ซึ่งช่วยให้คุณรับข้อมูลknown_hostsจากเอาต์พุตของคำสั่งที่ระบุได้
  • เพิ่มตัวเลือก PermitRemoteOpen ใน ssh_config สำหรับ ssh เพื่อให้คุณสามารถจำกัดปลายทางเมื่อใช้ตัวเลือก RemoteForward กับ SOCKS
  • ใน ssh สำหรับคีย์ FIDO จะมีการร้องขอ PIN ซ้ำในกรณีที่การดำเนินการลายเซ็นดิจิทัลล้มเหลวเนื่องจาก PIN ไม่ถูกต้อง และผู้ใช้ไม่ได้รับแจ้งให้ป้อน PIN (ตัวอย่างเช่น เมื่อไม่สามารถรับข้อมูลไบโอเมตริกซ์ที่ถูกต้องได้ และ อุปกรณ์กลับไปสู่การป้อน PIN ด้วยตนเอง)
  • sshd เพิ่มการสนับสนุนสำหรับการเรียกระบบเพิ่มเติมไปยังกลไกการแยกกระบวนการที่ใช้ seccomp-bpf บน Linux
  • อัปเดตยูทิลิตี้ contrib/ssh-copy-id แล้ว

ที่มา: opennet.ru

เพิ่มความคิดเห็น