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

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

การเปลี่ยนแปลงที่สำคัญ:

  • การเปลี่ยนแปลงด้านความปลอดภัย:
    • ใน ssh-agent เมื่อใช้คีย์ FIDO ที่ไม่ได้สร้างขึ้นสำหรับการตรวจสอบสิทธิ์ SSH (รหัสคีย์ไม่ได้ขึ้นต้นด้วยสตริง "ssh:") ตอนนี้ระบบจะตรวจสอบว่าข้อความจะถูกลงนามโดยใช้วิธีการที่ใช้ในโปรโตคอล SSH การเปลี่ยนแปลงจะไม่อนุญาตให้เปลี่ยนเส้นทาง ssh-agent ไปยังโฮสต์ระยะไกลที่มีคีย์ FIDO เพื่อบล็อกความสามารถในการใช้คีย์เหล่านี้เพื่อสร้างลายเซ็นสำหรับคำขอตรวจสอบสิทธิ์เว็บ (กรณีย้อนกลับ เมื่อเบราว์เซอร์สามารถลงนามคำขอ SSH ได้ จะถูกแยกออกในตอนแรก เนื่องจากการใช้คำนำหน้า "ssh:" ในตัวระบุคีย์)
    • การสร้างคีย์ประจำถิ่นของ ssh-keygen รวมถึงการสนับสนุนส่วนเสริม credProtect ที่อธิบายไว้ในข้อกำหนด FIDO 2.1 ซึ่งให้การป้องกันเพิ่มเติมสำหรับคีย์โดยกำหนดให้ต้องใช้ PIN ก่อนดำเนินการใดๆ ที่อาจส่งผลให้เกิดการแยกคีย์ประจำถิ่นออกจากโทเค็น
  • การเปลี่ยนแปลงความเข้ากันได้ที่อาจเกิดขึ้น:
    • เพื่อรองรับ FIDO/U2F ขอแนะนำให้ใช้ไลบรารี libfido2 อย่างน้อยเวอร์ชัน 1.5.0 ความสามารถในการใช้เวอร์ชันเก่าได้ถูกนำมาใช้บางส่วนแล้ว แต่ในกรณีนี้ ฟังก์ชันต่างๆ เช่น คีย์ประจำถิ่น คำขอ PIN และการเชื่อมต่อโทเค็นหลายรายการจะไม่สามารถใช้งานได้
    • ใน ssh-keygen ข้อมูลตัวตรวจสอบความถูกต้องที่จำเป็นสำหรับการตรวจสอบยืนยันลายเซ็นดิจิทัลได้ถูกเพิ่มลงในรูปแบบของข้อมูลการยืนยัน ซึ่งเป็นทางเลือกที่บันทึกไว้เมื่อสร้างคีย์ FIDO
    • API ที่ใช้เมื่อ OpenSSH โต้ตอบกับเลเยอร์สำหรับการเข้าถึงโทเค็น FIDO มีการเปลี่ยนแปลง
    • เมื่อสร้าง OpenSSH เวอร์ชันพกพา ขณะนี้ automake จำเป็นต้องสร้างสคริปต์กำหนดค่าและไฟล์บิลด์ที่เกี่ยวข้อง (หากสร้างจากไฟล์ tar โค้ดที่เผยแพร่ ก็ไม่จำเป็นต้องสร้างการกำหนดค่าใหม่)
  • เพิ่มการรองรับคีย์ FIDO ที่ต้องมีการยืนยัน PIN ใน ssh และ ssh-keygen ในการสร้างคีย์ด้วย PIN ได้มีการเพิ่มตัวเลือก "ต้องยืนยัน" ใน ssh-keygen หากใช้คีย์ดังกล่าว ก่อนที่จะดำเนินการสร้างลายเซ็น ผู้ใช้จะได้รับแจ้งให้ยืนยันการดำเนินการโดยป้อนรหัส PIN
  • ใน sshd ตัวเลือก "ต้องยืนยัน" จะถูกนำมาใช้ในการตั้งค่าauthorized_keys ซึ่งต้องใช้ความสามารถในการตรวจสอบการมีอยู่ของผู้ใช้ระหว่างการดำเนินการกับโทเค็น มาตรฐาน FIDO มีตัวเลือกมากมายสำหรับการตรวจสอบดังกล่าว แต่ปัจจุบัน OpenSSH รองรับเฉพาะการตรวจสอบยืนยันด้วย PIN เท่านั้น
  • sshd และ ssh-keygen ได้เพิ่มการรองรับสำหรับการตรวจสอบลายเซ็นดิจิทัลที่เป็นไปตามมาตรฐาน FIDO Webauthn ซึ่งอนุญาตให้ใช้คีย์ FIDO ในเว็บเบราว์เซอร์ได้
  • ใน ssh ในการตั้งค่า CertificateFile
    ControlPath, IdentityAgent, IdentityFile, LocalForward และ
    RemoteForward อนุญาตให้ทดแทนค่าจากตัวแปรสภาพแวดล้อมที่ระบุในรูปแบบ "${ENV}"

  • ssh และ ssh-agent ได้เพิ่มการรองรับตัวแปรสภาพแวดล้อม $SSH_ASKPASS_REQUIRE ซึ่งสามารถใช้เพื่อเปิดหรือปิดใช้งานการโทร ssh-askpass
  • ใน ssh ใน ssh_config ในคำสั่ง AddKeysToAgent ได้มีการเพิ่มความสามารถในการจำกัดระยะเวลาที่มีผลบังคับใช้ของคีย์แล้ว หลังจากที่ขีดจำกัดที่ระบุหมดอายุ คีย์จะถูกลบออกจาก ssh-agent โดยอัตโนมัติ
  • ใน scp และ sftp เมื่อใช้แฟล็ก "-A" คุณสามารถอนุญาตการเปลี่ยนเส้นทางไปยัง scp และ sftp ได้อย่างชัดเจนโดยใช้ ssh-agent (การเปลี่ยนเส้นทางถูกปิดใช้งานโดยค่าเริ่มต้น)
  • เพิ่มการสนับสนุนสำหรับการทดแทน '%k' ในการตั้งค่า ssh ซึ่งระบุชื่อคีย์โฮสต์ คุณสมบัตินี้สามารถใช้เพื่อกระจายคีย์เป็นไฟล์แยกกัน (เช่น “UserKnownHostsFile ~/.ssh/known_hosts.d/%k”)
  • อนุญาตให้ใช้การดำเนินการ "ssh-add -d -" เพื่ออ่านคีย์จาก stdin ที่จะลบ
  • ใน sshd จุดเริ่มต้นและจุดสิ้นสุดของกระบวนการตัดการเชื่อมต่อจะแสดงอยู่ในบันทึก ซึ่งควบคุมโดยใช้พารามิเตอร์ MaxStartups

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

เพื่อให้การเปลี่ยนไปใช้อัลกอริทึมใหม่ใน OpenSSH ราบรื่นขึ้น รุ่นถัดไปจะเปิดใช้งานการตั้งค่า UpdateHostKeys ตามค่าเริ่มต้น ซึ่งจะย้ายไคลเอ็นต์ไปยังอัลกอริทึมที่เชื่อถือได้มากขึ้นโดยอัตโนมัติ อัลกอริธึมที่แนะนำสำหรับการย้ายข้อมูล ได้แก่ 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)

ที่มา: opennet.ru

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