ก่อนการโจมตีประเภทนี้จะไม่ได้รับการกำหนดเป้าหมายเป็น DNS ตามที่ชื่อของคุณแนะนำ แน่นอนมันจะสร้างการโหลดเพิ่มเติมบางอย่างบนเซิร์ฟเวอร์ DNS แต่วัตถุประสงค์หลักคือเพื่อ DDoS คนอื่น การกำหนดค่าเซิร์ฟเวอร์ไม่ถูกต้องอาจทำให้แย่ลง แต่ในที่สุดปัญหานี้มีอยู่ในการออกแบบ DNS และ UDP และที่จริงแล้วโปรโตคอลการสื่อสารไร้สัญชาติใด ๆ
โดยทั่วไปแล้วจะทำงานดังนี้: ผู้โจมตีส่งการสอบถามทั่วไป (DNS) ไปยังเซิร์ฟเวอร์ (DNS) ข้อความค้นหาเหล่านั้นถูกปลอมแปลงให้ปรากฏราวกับว่าข้อความนั้นมาจากระบบเป้าหมาย เซิร์ฟเวอร์ DNS จะตอบแบบสอบถามแล้วส่งคำตอบกลับไปยังต้นทางที่ถูกกล่าวหานั่นคือเหยื่อ นี่คือเหตุผลที่เรียกว่าการโจมตีแบบสะท้อนภาพ
สิ่งนี้เป็นไปได้เพราะคุณสามารถตรวจสอบแหล่งที่มาของการสื่อสารไร้สัญชาติ (เป็น DNS ผ่าน UDP) ได้และคุณสามารถเชื่อถือที่อยู่ผู้ส่งบนไปรษณียบัตรได้ เซิร์ฟเวอร์ไม่มีทางตัดสินใจว่าการสืบค้นนั้นถูกต้องหรือเป็นส่วนหนึ่งของการโจมตีดังกล่าวหรือไม่ DNS เป็นโปรโตคอลที่ได้รับความนิยมมากที่สุดเนื่องจากมีเซิร์ฟเวอร์มากมายรอคุณอยู่และคุณไม่จำเป็นต้องมีความเข้าใจด้านเทคนิคหรืออุปกรณ์พิเศษในการใช้ (mis)
เพื่อทำให้สิ่งเลวร้ายลง (และที่มีประสิทธิภาพการโจมตีทั้งหมด) ดูที่ส่วนการขยาย มันจะไม่เป็นอันตรายมากนักหากปริมาณการใช้งานของผู้โจมตีมีขนาดเท่ากันกับปริมาณการรับส่งข้อมูลที่เกิดขึ้น ประโยชน์เพียงอย่างเดียวสำหรับผู้โจมตีคือที่อยู่ของเขาถูกซ่อนอยู่หลังเซิร์ฟเวอร์ DNS เขาสามารถปลอมที่อยู่ผู้ส่งได้โดยตรงโดยไม่จำเป็นต้องเปลี่ยนเส้นทางผ่าน DNS อีกครั้ง แต่คำตอบ DNS และนั่นคือจุดทำไม DNS จึงเป็นที่นิยมที่นี่อีกสามารถมากมีขนาดใหญ่กว่าคำถาม คุณสามารถค้นหาตัวเลขที่แตกต่างกันในเรื่องนี้ขึ้นอยู่กับการค้นหาที่แน่นอนที่ใช้ แต่มันอาจสูงถึง1:60ถ้าเซิร์ฟเวอร์นั้นเป็นมิตรมากพอที่จะทำการค้นหาแบบเรียกซ้ำสำหรับคุณ. ดังนั้นผู้โจมตีจึงไม่ต้องการเครื่องจักรจำนวนมากภายใต้การควบคุมของเขาเพื่อสร้างทราฟฟิกที่เป็นอันตรายจำนวนมาก
ในขณะที่คุณสามารถค้นหาเซิร์ฟเวอร์ DNS "เปิด" นับแสนบนอินเทอร์เน็ตสาธารณะได้อย่างง่ายดายคุณสามารถทำคณิตศาสตร์อย่างรวดเร็วว่าผู้โจมตีต้องทำงานอย่างไรถ้าเซิร์ฟเวอร์ DNS แต่ละตัวที่เขารู้จักรู้ว่าจะสะท้อนการสืบค้นของเขาถึงหกสิบเท่าของเป้าหมาย อย่างที่ฉันพูดในตอนแรกไม่มีวิธีใดที่ดีในการแก้ไขปัญหานี้ โดยปกติแล้วเซิร์ฟเวอร์ DNS จำนวนมากจะเปิดให้ทุกคนในขณะที่พวกเขาไม่ควรจะเนื่องจากการกำหนดค่าผิดพลาด แต่มีเซิร์ฟเวอร์เปิดจำนวนมากที่ต้องเปิดเพราะนั่นคือจุดประสงค์ของพวกเขา
ในขณะที่คุณไม่สามารถบอกได้ว่าคำขอเป็นส่วนหนึ่งของการโจมตีหรือไม่ตัวเลือกเดียวของคุณคือการไม่เรียกใช้เซิร์ฟเวอร์อีกต่อไป คุณสามารถเล่นซอกับการ จำกัด อัตราและของเล่นอื่น ๆ แต่คุณไม่สามารถกำจัดได้อย่างสมบูรณ์ หากคุณให้บริการ DNS เพื่อความสนุกสนานคุณสามารถขึ้นบัญชีดำ IP ต้นทางของคำขอได้ แต่ถ้าคุณอยู่ในระดับที่ใหญ่กว่านี้จะสร้างความเสียหายกับเหยื่อมากยิ่งขึ้น จำไว้ว่าทั้งหมดที่คุณเห็นบนเซิร์ฟเวอร์ DNS คือที่อยู่ของเหยื่อ ลองนึกภาพ บริษัท ของคุณกำลังถูกโจมตีผ่าน DNS ของผู้ให้บริการของคุณและผู้ให้บริการของคุณตัดสินใจที่จะลดบริการ DNS สำหรับ บริษัท ของคุณ ผู้โจมตีสามารถทำคะแนนนี้เป็นคะแนนโบนัส bazillion เกี่ยวกับการปฏิเสธการให้บริการ
อย่างไรก็ตามการโจมตีเหล่านั้นเกิดขึ้นทั้งวันทั้งคืนและถือเป็น "เสียงรบกวนรอบข้าง" ของอินเทอร์เน็ต หากคุณตั้งค่าเซิร์ฟเวอร์ DNS สาธารณะ (เรียกซ้ำ) จะใช้เวลาไม่นานก่อนที่คุณจะเข้าร่วมในการโจมตีแบบสุ่ม แน่นอนว่าบางครั้งสิ่งต่าง ๆ จะเลวร้ายจริง ๆ เมื่อโครงสร้างพื้นฐานขนาดใหญ่ (เช่นแม้แต่เซิร์ฟเวอร์รูทเซิร์ฟเวอร์ DNS) ถูกนำไปใช้งานในทางที่ผิด แต่ในกรณีเหล่านั้นการตอบโต้เชิงรุกจะดำเนินการโดยบุคลากรจนกว่าการโจมตีจะลดลงถึงระดับ "ปกติ"
จนถึงการสอน ในการตอบคำถามของคุณในที่สุด:
คุณรู้ว่าเซิร์ฟเวอร์ของคุณมีช่องโหว่หากตอบแบบสอบถามได้โดยไม่มีข้อ จำกัด ระยะเวลา หากคุณให้บริการข้อความค้นหาแบบเรียกซ้ำเซิร์ฟเวอร์ของคุณสามารถสร้างอัตราส่วน 1:60 สำหรับผู้โจมตีได้ หากการให้บริการแบบไม่เรียกซ้ำนั้นไม่ใช่เรื่องเลวร้าย แต่ก็ยัง ...
ดังนั้น...
- ตรวจสอบให้แน่ใจว่าคุณจำเป็นต้องเรียกใช้เซิร์ฟเวอร์ DNS สาธารณะ
- ถ้าคุณต้องดูที่การผูก
allow-recursion
และallow-query
คำสั่ง
- หากเซิร์ฟเวอร์ DNS ของคุณมีสิทธิ์สำหรับโซนของคุณเองคุณไม่จำเป็นต้องทำการสอบถามซ้ำอีกเลยให้ตั้งค่า
allow-recursion
เป็น "none;"
- หากคุณต้องการเรียกใช้ตัวแก้ไขสำหรับโดเมนอื่น ๆให้ จำกัด ผู้ใช้ที่ได้รับอนุญาตสำหรับการสืบค้นและแบบสอบถามแบบเรียกซ้ำ คุณสามารถกำหนดที่อยู่ IP เครือข่ายหรือรายการเข้าถึงได้ในคำสั่งที่กล่าวถึง
- คิดเกี่ยวกับอัตรา จำกัดการรับส่งข้อมูล DNS ไม่เพียง แต่ใน BIND แต่ยังอยู่ในระดับระบบ เป็นตัวอย่างง่าย ๆ กฎ iptables เหล่านี้จะไม่อนุญาตการค้นหามากกว่า 10 ครั้งต่อนาทีจากที่อยู่ IP แต่ละแห่ง:
.
iptables -A INPUT -p udp --dport 53 --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP
ตอนนี้ด้วยจุดเหล่านี้ในใจคุณควรจะดีไป อาจยังมีทราฟฟิกที่เป็นอันตรายอยู่บนเซิร์ฟเวอร์ของคุณในตอนนี้ แต่ไม่ใช่ในปริมาณที่ทำให้คุณหลับฝันดี