ไม่ว่าคุณจะเรียกใช้ตัวเรียกคืน DNS แบบเปิดหรือเซิร์ฟเวอร์ DNS ที่มีสิทธิ์ปัญหาก็เหมือนกันและวิธีแก้ปัญหาที่เป็นไปได้ส่วนใหญ่ก็เหมือนกัน
ทางออกที่ดีที่สุด
คุกกี้ DNSเป็นมาตรฐานที่เสนอซึ่งทำให้เซิร์ฟเวอร์ DNS มีวิธีกำหนดให้ลูกค้าส่งคุกกี้เพื่อพิสูจน์ว่าที่อยู่ IP ของลูกค้าไม่ได้ถูกปลอมแปลง ซึ่งจะมีค่าใช้จ่ายเพิ่มเติมหนึ่งเที่ยวบินสำหรับการค้นหาครั้งแรกซึ่งเป็นค่าใช้จ่ายที่ต่ำที่สุดที่ทางออกใด ๆ
ทางเลือกสำหรับลูกค้าเก่า
เนื่องจากคุกกี้ DNS ยังไม่ได้มาตรฐานจึงมีความจำเป็นที่จะต้องสนับสนุนลูกค้าเก่าในปัจจุบันและอีกหลายปีข้างหน้า
คุณสามารถจัดอันดับคำขอที่ จำกัด จากไคลเอนต์โดยไม่มีการสนับสนุนคุกกี้ DNS แต่ขีด จำกัด อัตราทำให้ผู้โจมตี DoS DNS server ของคุณง่ายขึ้น ระวังว่าเซิร์ฟเวอร์ DNS บางตัวมีคุณสมบัติ จำกัด อัตราที่ออกแบบมาสำหรับเซิร์ฟเวอร์ DNS ที่เชื่อถือเท่านั้น เนื่องจากคุณกำลังถามเกี่ยวกับตัวแก้ไขแบบเรียกซ้ำการ จำกัด อัตราการใช้งานดังกล่าวอาจไม่สามารถใช้ได้กับคุณ การ จำกัด อัตราการออกแบบจะกลายเป็นคอขวดสำหรับเซิร์ฟเวอร์ของคุณและผู้โจมตีจะต้องส่งทราฟฟิกน้อยลงเพื่อที่จะทำให้คำขอถูกต้องตามกฎหมายลดลงกว่าที่เขาจะทำได้หากไม่มีการ จำกัด อัตรา
ข้อดีอย่างหนึ่งของการ จำกัด อัตราคือในกรณีที่ผู้โจมตีทำให้เซิร์ฟเวอร์ DNS ของคุณมีคำขอ DNS คุณมีแนวโน้มที่จะมีความจุเหลืออยู่ซึ่งจะช่วยให้คุณสามารถ ssh ไปยังเซิร์ฟเวอร์และตรวจสอบสถานการณ์ นอกจากนี้ขีด จำกัด อัตราสามารถออกแบบเพื่อวางคำขอเป็นหลักจาก IP ของลูกค้าที่ส่งคำขอจำนวนมากซึ่งอาจเพียงพอที่จะปกป้องคุณจาก DoS จากผู้โจมตีที่ไม่สามารถเข้าถึง IP ของลูกค้าที่หลอกลวง
ด้วยเหตุผลเหล่านี้อัตรา จำกัด เล็กน้อยภายใต้ความจุจริงของคุณอาจเป็นความคิดที่ดีแม้ว่าจะไม่ได้ป้องกันการขยายสัญญาณ
ใช้ TCP
เป็นไปได้ที่จะบังคับให้ไคลเอ็นต์ใช้ TCP โดยส่งรหัสข้อผิดพลาดที่ระบุว่าคำตอบนั้นใหญ่เกินไปสำหรับ UDP นี่เป็นข้อเสียสองประการ มีค่าใช้จ่ายเพิ่มเติมสองรอบ และลูกค้าที่มีข้อผิดพลาดบางอย่างไม่สนับสนุน
ค่าใช้จ่ายของ Roundtrips เพิ่มเติมสองอันสามารถ จำกัด ได้เฉพาะการร้องขอครั้งแรกโดยใช้วิธีนี้:
เมื่อไคลเอนต์ IP ไม่ได้รับการยืนยันเซิร์ฟเวอร์ DNS สามารถส่งการตอบสนองที่ถูกตัดทอนเพื่อบังคับให้ไคลเอนต์สลับไปยัง TCP การตอบสนองที่ถูกตัดทอนอาจสั้นตามคำขอ (หรือสั้นกว่านี้หากไคลเอ็นต์ใช้ EDNS0 และการตอบสนองไม่ได้) ซึ่งกำจัดการขยาย
IP ไคลเอ็นต์ใด ๆ ที่จับมือ TCP เสร็จสมบูรณ์และส่งคำขอ DNS ในการเชื่อมต่อสามารถได้รับอนุญาตพิเศษ เมื่อรายการที่อนุญาตนั้น IP ได้รับการส่งการสอบถาม UDP และรับการตอบกลับ UDP สูงถึง 512 ไบต์ (4096 ไบต์หากใช้ EDNS0) หากการตอบสนอง UDP ทำให้เกิดข้อความแสดงข้อผิดพลาด ICMP IP จะถูกลบออกจากรายการที่อนุญาตอีกครั้ง
วิธีนี้ยังสามารถย้อนกลับได้โดยใช้บัญชีดำซึ่งหมายความว่า IP ของไคลเอ็นต์ได้รับอนุญาตให้ทำการสืบค้นผ่าน UDP โดยค่าเริ่มต้น แต่ข้อความแสดงข้อผิดพลาด ICMP ใด ๆ ทำให้ IP ถูกขึ้นบัญชีดำต้องใช้แบบสอบถาม TCP เพื่อลบบัญชีดำ
บิตแมปที่ครอบคลุมที่อยู่ IPv4 ที่เกี่ยวข้องทั้งหมดสามารถเก็บไว้ในหน่วยความจำ 444MB ที่อยู่ IPv6 นั้นจะต้องจัดเก็บด้วยวิธีอื่น
ฉันไม่ทราบว่าเซิร์ฟเวอร์ DNS ใด ๆ ใช้วิธีนี้หรือไม่
มีการรายงานด้วยว่าสแต็ค TCP บางตัวสามารถใช้ประโยชน์ในการโจมตีแบบขยาย อย่างไรก็ตามนั่นใช้กับบริการใด ๆ ที่ใช้ TCP ไม่ใช่ DNS เท่านั้น ช่องโหว่ดังกล่าวควรได้รับการบรรเทาโดยการอัพเกรดเป็นเคอร์เนลเวอร์ชันที่สแต็ก TCP ได้รับการแก้ไขเพื่อไม่ให้ส่งมากกว่าหนึ่งแพ็คเก็ตเพื่อตอบสนองต่อแพ็คเก็ต SYN