การตั้งค่า DNS Server ป้องกัน DDoS DNS amplification attack

    DNS amplification attack เป็นเทคนิคนึงในการโจมตีประเภท DDoS (Distributed Denial of Service) มีการนำมาใช้โจมตีกันอย่างแพร่หลาย มีความรุนแรงจนสามารถทำให้ระบบล่มได้โดยวิธีการคือ มีการส่ง DNS Request ไปยัง DNS resolver ตามที่ต่างๆ ที่มีการเปิด Open DNS resolver ไว้ และมีการปลอมแปลงหมายเลข IP address ต้นทาง เป็นหมายเลข IP Address ของเป้าหมาย ทำให้ระบบของเป้าหมายได้รับ DNS response ที่ถูกส่งมาจาก DNS resolver แทนที่จะเป็นผู้โจมตี ดังรูปภาพ

 

รูปที่ 1 แสดงรูปแบบการโจมตีด้วยเทคนิค DNS amplification attack

ภาพประกอบจาก Thaicert

 

    เมื่อผู้โจมตี ส่ง DNS request จำนวนมาก ทางเป้าหมายก็ยิ่งได้รับ DNS response มาก เช่นกัน จนระบบของเป้าหมายไม่เพียงพอต่อปริมาณข้อมูลที่ได้รับเป็นจำนวนมาก ทำให้ระบบของเป้าหมายไม่สามารถใช้งานได้

 

          สาเหตุสำคัญที่ทำให้เทคนิคการโจมตีแบบนี้มีประสิทธิภาพ เนื่องจากขนาดของ Response จะมีขนาดใหญ่กว่า ขนาดของ Request ทำให้ผู้โจมตีไม่จำเป็น ต้องมี Botnet ขนาดใหญ่ ก็สามารถทำให้การโจมตีรุนแรงได้ และอีกสาเหตุนึงที่สำคัญไม่แพ้กัน ถือว่าเป็นต้นตอของปัญหา นั้นก็คือ เครื่อง Server หรือ อุปกรณ์เครือข่ายใดๆ ที่เปิดให้บริการ DNS Open DNS resolver และ มีการตั้งค่าการใช้งานที่ไม่เหมาะสม โดยอนุญาตให้บุคคลทั่วไป สามารถใช้บริการได้ โดยที่ไม่ได้ควบคุม หรือให้ใช้งานเฉพาะกับผู้ทีได้รับอนุญาต ทำให้ผู้ไม่หวังดีสามารถค้นหา Open DNS resolver ที่หาได้ทั่วไปตามอินเตอร์เน็ต และนำไปเครื่องของท่านไปเป็นเครื่องมือในการโจมตีผู้อื่นอีกด้วย

 

ตัวอย่าง เวปไซต์ที่ให้บริการค้นหา Open DNS resolver http://www.bestdns.org/for/th/

 

 

แนะนำการตั้งค่า DNS Server

     เพื่อป้องกันไม่ให้ผู้ไม่หวังดี นำเครื่องของท่านเป็นเครื่องมือ ในการโจมตีผู้อื่น สามารถตั้งค่า DNS ได้ดังนี้

กรณีใช้งาน BIND เวอร์ชัน 9 ขึ้นไป

กรณีเครื่องดังกล่าวเป็นเครื่องที่ให้บริการ DNS ในหน่วยงาน เป็น Caching name server ต้องให้มีการจำกัดอนุญาตการทำ Resursion เฉพาะ Request ที่ส่งมาจากกลุ่มผุ้ใช้งานในระบบเครือข่ายเดียวกัน

เข้าไปแก้ไขโดยใช้คำสั่ง sudo vi /etc/bind/named.conf.options  และทำการตั้งค่า ดังต่อไปนี้

 

รูปที่ 2 ตัวอย่างแสดงการตั้งค่า จำกัดอนุญาต Recursion

 

       จากรูปที่ 2 แสดงการตั้งค่า ให้มีการจำกัดอนุญาตให้เฉพาะเครื่องในเครือข่ายเท่านั้น ที่จะสามารถทำ Recursion ได้ ในที่นี้ คือ หมายเลข IP Subnet :192.168.1.0/24 หากมีเครื่องนอกเครือข่ายดังกล่าวมา Request จะไม่สามารถทำการ Query ใดๆ ได้ หากท่านต้องการนำไปปรับปรับใช้ เพียงแก้ไขในส่วนของ IP Subnet ที่เป็นระบบเครือข่ายภายใน เท่านั้น

 

กรณีเครื่องดังกล่าวเป็นเครื่องที่ให้บริการ DNS ในหน่วยงาน เป็น Authoritative name server ต้องปิดการทำงาน Resursion

เข้าไปแก้ไขโดยใช้คำสั่ง sudo vi /etc/bind/named.conf.options  และทำการตั้งค่า ดังต่อไปนี้

 

รูปที่ 3 ตัวอย่างแสดงการตั้งค่าการปิด Recursion

 

หลังจากทำการตั้งค่าให้ทำการบันทึก (:wq) และ ทำการ restart service bind คำสั่ง sudo service bind9 restart ด้วยทุกครั้ง และลองทดสอบการทำงาน จากทั้งเครือข่ายภายใน และ เครือข่ายภายนอก

โดยใช้คำสั่ง dig ในการทดสอบ ตัวอย่าง คำสั่ง dig @(หมายเลข IP ของเครื่อง DNS ที่ต้องการทดสอบ) (Domain) เช่น dig @8.8.8.8 www.google.com

ตัวอย่าง

แสดงการผลการทดสอบ จากการใช้คำสั่ง dig ในการทดสอบว่า DNS Server นั้นมีการควบคุม Recursion หรือไม่ โดยทดสอบเรียก จากเครือข่ายภายนอก

กรณีที่เครื่อง ไม่ได้ควบคุมการทำ Recursion เมื่อ ใช้คำสั่ง dig เรียกมายังDNS จะได้ Response ดังนี้

 

รูปที่ 4 ตัวอย่างแสดง Response จากเครื่องที่ไม่ได้มีการจำกัด Recursion

 

จากรูปที่ 4 แสดง Response ที่ DNS ไม่ได้มีการควบคุมการทำ Recursion ตอบกลับไป โดยที่เครื่อง client ที่เข้ามา Query นั้นอยู่นอกเครือข่าย

 

กรณีที่เครื่อง มีการควบคุมการทำ Recursion เมื่อ ใช้คำสั่ง dig เรียกมายัง DNS จะได้ Response ดังนี้

 

รูปที่ 5 ตัวอย่างแสดง Response จากเครื่องที่มีการจำกัด Recursion

จากรูปที่ 5 แสดง Response ที่ DNS ที่มีการควบคุมการทำ Recursion ตอบกลับไป โดยที่เครื่อง client ที่เข้ามา Query นั้นอยู่นอกเครือข่าย จะเห็นว่า DNS ตอบกลับมา โดยที่ไม่มีข้อมูลที่ทาง Client ได้ทำการ Request

 

การณีใช้งาน Microsoft window Server 2003 ขึ้นไป

ในการตั้งค่าเพื่อปิดการทำงาน Recursion มีขั้นตอน ดังนี้
1.เปิดโปรแกรม DNS Manager โดยไปที่ Start > All Programs > Administrative Tools > DNS
2.คลิกขวาบนเซิร์ฟเวอร์ที่ต้องการแล้วเลือก Properties
3.ในหน้าต่างใหม่ เลือกแท็บ Advanced แล้วคลิกเครื่องหมายถูกที่รายการ Disable recursion (also disables forwarders) แล้วคลิก Apply ดังรูป
 

รูปที่ 6 แสดงการตั้งค่า การปิด Recursion บน Window Server

ภาพประกอบจาก Thaicert

 

ในส่วนของ Window Server นั้นไม่สามารถจำกัดให้อนุญาต เป็น IP Subnet ได้ ดังนั้นหากท่านไม่สามารถปิด Recursion ท่านต้องมีอุปกรณ์อื่นช่วย เช่น Firewall โดยมีการควบคุมการเข้า DNS UDP Port 53 จากเครือข่ายภายนอก ก็จะสามารถป้องกันการเข้าถึงโดยที่ไม่ได้รับอนุญาตได้

 

หากต้องการให้การตั้งค่า การควบคุม การทำ Recursion ของ DNS ให้มีประสิทธิภาพยิ่งขึ้น ต้องมีการตั้งค่า Rate Limitting ซึ่งจะสามารถทำได้บน Bind9.10 ขึ้นไปเท่านั้น

โดยสามารถศึกษา คู่มือได้จาก http://www.redbarn.org/dns/ratelimits

 

จากที่ได้กล่าวมา จะเห็นได้ว่า หากมีการ Request จาก Client  มายัง DNS Server  แล้ว Response ที่ DNS ตอบกลับไป มีขนาดที่ใหญ่กว่า Request มาก ทำให้เทคนิคนี้ถูกนิยมใช้ในการโจมตีผุ้อื่นได้เป็นอย่างดี และเพื่อเป็นการป้องกันไม่ให้ผู้ไม่หวังดี นำเครื่องของท่านไปเป็นเครืองมือในการโจมตีผุ้อื่น หากในหน่วยงานของท่านมีการเปิดใช้งาน DNS Server ท่านต้องมีการปรับการตั้งค่าควบคุมให้เหมาะสมด้วยครับ

 

ข้อมูลอ้างอิง

- Thaicert

- Digitalocean

- Technet.microsoft

- redbarn

 

หากมีข้อสงสัย หรือ ต้องการสอบถามข้อมูลเพิ่มเติมกรุณาติดต่อ
สำนักบริหารเทคโนโลยีสารสนเทศ จุฬาลงกรณ์มหาวิทยาลัย ชั้น 4 อาคาร จามจุรี 3   
โทรศัพท์ : 0-2218-3314      Email : help@chula.ac.th