หลังจากสองปีของการพัฒนา ISC consortium ได้เปิดตัวเวอร์ชันเสถียรครั้งแรกของสาขาใหม่ที่สำคัญของเซิร์ฟเวอร์ BIND 9.18 DNS การสนับสนุนสำหรับสาขา 9.18 จะมีให้เป็นเวลาสามปีจนถึงไตรมาสที่ 2 ของปี 2025 ซึ่งเป็นส่วนหนึ่งของวงจรการสนับสนุนที่ขยายออกไป การสนับสนุนสาขา 9.11 จะสิ้นสุดในเดือนมีนาคม และการสนับสนุนสาขา 9.16 ในช่วงกลางปี 2023 เพื่อพัฒนาฟังก์ชันการทำงานของ BIND เวอร์ชันเสถียรถัดไป ได้มีการสร้างสาขาทดลอง BIND 9.19.0 ขึ้นมา
การเปิดตัว BIND 9.18.0 มีความโดดเด่นสำหรับการดำเนินการรองรับ DNS ผ่าน HTTPS (DoH, DNS ผ่าน HTTPS) และ DNS ผ่าน TLS (DoT, DNS ผ่าน TLS) รวมถึงกลไก XoT (XFR-over-TLS) เพื่อการถ่ายโอนเนื้อหา DNS อย่างปลอดภัย โซนระหว่างเซิร์ฟเวอร์ (รองรับทั้งโซนการส่งและรับผ่าน XoT) ด้วยการตั้งค่าที่เหมาะสม กระบวนการที่ระบุชื่อเดียวสามารถให้บริการไม่เพียงแต่การสืบค้น DNS แบบดั้งเดิมเท่านั้น แต่ยังรวมถึงการสืบค้นที่ส่งโดยใช้ DNS-over-HTTPS และ DNS-over-TLS อีกด้วย การสนับสนุนไคลเอ็นต์สำหรับ DNS-over-TLS มีอยู่ในยูทิลิตี้ dig ซึ่งสามารถใช้เพื่อส่งคำขอผ่าน TLS เมื่อระบุแฟล็ก "+tls"
การใช้งานโปรโตคอล HTTP/2 ที่ใช้ใน DoH ขึ้นอยู่กับการใช้ไลบรารี nghttp2 ซึ่งรวมไว้เป็นการพึ่งพาแอสเซมบลีเสริม ผู้ใช้สามารถจัดเตรียมใบรับรองสำหรับ DoH และ DoT หรือสร้างโดยอัตโนมัติเมื่อถึงเวลาเริ่มต้น
การประมวลผลคำขอโดยใช้ DoH และ DoT ถูกเปิดใช้งานโดยการเพิ่มตัวเลือก "http" และ "tls" ให้กับคำสั่ง Listen-on หากต้องการรองรับ DNS-over-HTTP ที่ไม่ได้เข้ารหัส คุณควรระบุ "tls none" ในการตั้งค่า คีย์ถูกกำหนดไว้ในส่วน "tls" พอร์ตเครือข่ายเริ่มต้น 853 สำหรับ DoT, 443 สำหรับ DoH และ 80 สำหรับ DNS-over-HTTP สามารถแทนที่ได้ผ่านพารามิเตอร์ tls-port, https-port และ http-port ตัวอย่างเช่น:
tls local-tls { คีย์ไฟล์ "/path/to/priv_key.pem"; ไฟล์ใบรับรอง "/path/to/cert_chain.pem"; }; http local-http-server { ปลายทาง { "/dns-query"; }; }; ตัวเลือก { https-พอร์ต 443; พอร์ตการฟัง 443 tls local-tls http myserver {ใด ๆ ;}; }
หนึ่งในคุณสมบัติของการใช้งาน DoH ใน BIND คือความสามารถในการย้ายการดำเนินการเข้ารหัสสำหรับ TLS ไปยังเซิร์ฟเวอร์อื่น ซึ่งอาจจำเป็นในเงื่อนไขที่เก็บใบรับรอง TLS ไว้ในระบบอื่น (เช่น ในโครงสร้างพื้นฐานที่มีเว็บเซิร์ฟเวอร์) และดูแลรักษา โดยบุคลากรคนอื่นๆ มีการนำการสนับสนุน DNS-over-HTTP ที่ไม่ได้เข้ารหัสมาใช้เพื่อลดความซับซ้อนของการดีบักและเป็นเลเยอร์สำหรับการส่งต่อไปยังเซิร์ฟเวอร์อื่นบนเครือข่ายภายใน (สำหรับการย้ายการเข้ารหัสไปยังเซิร์ฟเวอร์แยกต่างหาก) บนเซิร์ฟเวอร์ระยะไกล สามารถใช้ nginx เพื่อสร้างการรับส่งข้อมูล TLS ได้ เช่นเดียวกับวิธีจัดระเบียบการเชื่อมโยง HTTPS สำหรับเว็บไซต์
คุณสมบัติอีกประการหนึ่งคือการผสานรวม DoH เป็นการส่งข้อมูลทั่วไปที่ไม่เพียงแต่ใช้ในการจัดการคำขอไคลเอ็นต์ไปยังรีโซลเวอร์เท่านั้น แต่ยังรวมถึงเมื่อสื่อสารระหว่างเซิร์ฟเวอร์ เมื่อถ่ายโอนโซนโดยเซิร์ฟเวอร์ DNS ที่เชื่อถือได้ และเมื่อประมวลผลการสืบค้นใด ๆ ที่รองรับโดย DNS อื่น ๆ การขนส่ง
ในบรรดาข้อบกพร่องที่สามารถชดเชยได้โดยการปิดการใช้งานบิลด์ด้วย DoH/DoT หรือการย้ายการเข้ารหัสไปยังเซิร์ฟเวอร์อื่น ความซับซ้อนทั่วไปของฐานโค้ดนั้นโดดเด่น - มีการเพิ่มเซิร์ฟเวอร์ HTTP ในตัวและไลบรารี TLS ซึ่งอาจประกอบด้วย ช่องโหว่และทำหน้าที่เป็นพาหะเพิ่มเติมสำหรับการโจมตี นอกจากนี้เมื่อใช้ DoH ปริมาณการใช้ข้อมูลจะเพิ่มขึ้น
ขอให้เราจำไว้ว่า DNS-over-HTTPS จะมีประโยชน์ในการป้องกันการรั่วไหลของข้อมูลเกี่ยวกับชื่อโฮสต์ที่ร้องขอผ่านเซิร์ฟเวอร์ DNS ของผู้ให้บริการ ต่อสู้กับการโจมตี MITM และการปลอมแปลงการรับส่งข้อมูล DNS (เช่น เมื่อเชื่อมต่อกับ Wi-Fi สาธารณะ) การตอบโต้ การบล็อกที่ระดับ DNS (DNS-over-HTTPS ไม่สามารถแทนที่ VPN ในการเลี่ยงผ่านการบล็อกที่ดำเนินการในระดับ DPI) หรือสำหรับการจัดระเบียบงานเมื่อไม่สามารถเข้าถึงเซิร์ฟเวอร์ DNS โดยตรง (เช่น เมื่อทำงานผ่านพรอกซี) หากในสถานการณ์ปกติ คำขอ DNS ถูกส่งโดยตรงไปยังเซิร์ฟเวอร์ DNS ที่กำหนดไว้ในการกำหนดค่าระบบ ในกรณีของ DNS-over-HTTPS คำขอเพื่อกำหนดที่อยู่ IP ของโฮสต์จะถูกห่อหุ้มในการรับส่งข้อมูล HTTPS และส่งไปยังเซิร์ฟเวอร์ HTTP โดยที่ ตัวแก้ไขจะประมวลผลคำขอผ่าน Web API
“DNS over TLS” แตกต่างจาก “DNS over HTTPS” ในการใช้โปรโตคอล DNS มาตรฐาน (โดยปกติจะใช้พอร์ตเครือข่าย 853) ซึ่งรวมอยู่ในช่องทางการสื่อสารที่เข้ารหัสซึ่งจัดโดยใช้โปรโตคอล TLS พร้อมการตรวจสอบความถูกต้องของโฮสต์ผ่านใบรับรอง TLS/SSL ที่ได้รับการรับรอง โดยหน่วยงานออกใบรับรอง มาตรฐาน DNSSEC ที่มีอยู่ใช้การเข้ารหัสเพื่อตรวจสอบสิทธิ์ไคลเอ็นต์และเซิร์ฟเวอร์เท่านั้น แต่ไม่ได้ป้องกันการรับส่งข้อมูลจากการสกัดกั้น และไม่รับประกันการรักษาความลับของคำขอ
นวัตกรรมอื่นๆ:
- เพิ่มการตั้งค่า tcp-receive-buffer, tcp-send-buffer, udp-receive-buffer และ udp-send-buffer เพื่อกำหนดขนาดของบัฟเฟอร์ที่ใช้เมื่อส่งและรับคำขอผ่าน TCP และ UDP บนเซิร์ฟเวอร์ที่ไม่ว่าง การเพิ่มบัฟเฟอร์ขาเข้าจะช่วยหลีกเลี่ยงแพ็กเก็ตที่จะลดลงในช่วงที่มีการรับส่งข้อมูลสูงสุด และการลดจำนวนบัฟเฟอร์ขาเข้าจะช่วยกำจัดการอุดตันของหน่วยความจำด้วยคำขอเก่า
- มีการเพิ่มหมวดหมู่บันทึกใหม่ “rpz-passthru” ซึ่งช่วยให้คุณสามารถบันทึกการดำเนินการส่งต่อ RPZ (โซนนโยบายการตอบสนอง) แยกต่างหาก
- ในส่วนนโยบายการตอบกลับได้มีการเพิ่มตัวเลือก "nsdname-wait-recurse" เมื่อตั้งค่าเป็น "ไม่" กฎ RPZ NSDNAME จะถูกนำไปใช้ก็ต่อเมื่อพบเนมเซิร์ฟเวอร์ที่เชื่อถือได้ซึ่งมีอยู่ในแคชสำหรับคำขอ มิฉะนั้น กฎ RPZ NSDNAME ถูกละเว้น แต่ข้อมูลจะถูกดึงออกมาในเบื้องหลังและนำไปใช้กับคำขอที่ตามมา
- สำหรับบันทึกที่มีประเภท HTTPS และ SVCB จะมีการใช้การประมวลผลส่วน "เพิ่มเติม"
- เพิ่มประเภทกฎนโยบายการอัปเดตที่กำหนดเอง - krb5-subdomain-self-rhs และ ms-subdomain-self-rhs ซึ่งช่วยให้คุณสามารถจำกัดการอัปเดตระเบียน SRV และ PTR บล็อกนโยบายการอัปเดตยังเพิ่มความสามารถในการกำหนดขีดจำกัดจำนวนเรกคอร์ด แต่ละรายการสำหรับแต่ละประเภท
- เพิ่มข้อมูลเกี่ยวกับโปรโตคอลการขนส่ง (UDP, TCP, TLS, HTTPS) และคำนำหน้า DNS64 ไปยังเอาต์พุตของยูทิลิตี้ dig เพื่อวัตถุประสงค์ในการแก้ไขจุดบกพร่อง dig ได้เพิ่มความสามารถในการระบุตัวระบุคำขอเฉพาะ (dig +qid= ).
- เพิ่มการรองรับไลบรารี OpenSSL 3.0
- เพื่อแก้ไขปัญหาการกระจายตัวของ IP เมื่อประมวลผลข้อความ DNS ขนาดใหญ่ที่ระบุโดย DNS Flag Day 2020 โค้ดที่ปรับขนาดบัฟเฟอร์ EDNS เมื่อไม่มีการตอบสนองต่อคำขอจะถูกลบออกจากตัวแก้ไข ขณะนี้ขนาดบัฟเฟอร์ EDNS ถูกตั้งค่าเป็นค่าคงที่ (edns-udp-size) สำหรับคำขอขาออกทั้งหมด
- ระบบบิลด์ได้รับการเปลี่ยนมาใช้การผสมผสานระหว่าง autoconf, automake และ libtool
- การสนับสนุนไฟล์โซนในรูปแบบ "แผนที่" (แผนที่รูปแบบไฟล์หลัก) ถูกยกเลิกแล้ว ขอแนะนำให้ผู้ใช้รูปแบบนี้แปลงโซนเป็นรูปแบบดิบโดยใช้ยูทิลิตี้ชื่อคอมไพล์โซน
- การสนับสนุนไดรเวอร์ DLZ (Dynamically Loadable Zones) รุ่นเก่าถูกยกเลิกแล้ว และแทนที่ด้วยโมดูล DLZ
- การสนับสนุนการสร้างและดำเนินการสำหรับแพลตฟอร์ม Windows ถูกยกเลิกแล้ว สาขาสุดท้ายที่สามารถติดตั้งบน Windows คือ BIND 9.16
ที่มา: opennet.ru