ตั้งรับและตอบโต้การโจมตี DNS Brute Force Query Attack

ต่อเนื่องจาก บทความนี้

หลังจากรู้แล้วว่า DNS Server ของเราถูกโจมตีล่ะนะ
ทีนี้จะตอบโต้อย่างไรดี?

ถ้าหากการโจมตีมันไม่ได้เป็น distribution คือตรวจสอบแล้วมาจาก host เพียงตัวเดียวหรือไม่กี่ตัว ก็สามารถตอบโต้แบบง่ายๆได้ โดยใช้ความสามารถของ bind9 เอง bind9 จะมี option ที่จะสามารถ block การ query จาก client ได้ โดยสามารถระบุเป็น ip เดี่ยวๆ หรือเป็น block ของ ip network โดยการเพิ่มเป็น blackhole ใน named.conf.options แบบนี้ครับ

สมมติ options config เดิมของ bind9 คือ

options {
    directory “/var/cache/bind”;
    forward only;
    forwarders {
         192.100.77.2;
         192.100.77.5;
    };
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
};

เราสามารถเพิ่ม

include “/etc/bind/blackhole.list”;

เข้าไปก่อน บรรทัด “};” ซึ่งเป็นบรรทัดล่างสุดของ options เป็น

options {
    directory “/var/cache/bind”;
    forward only;
    forwarders {
         192.100.77.2;
         192.100.77.5;
    };
    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
include “/etc/bind/blackhole.list”;
};

โดยข้อมูลในไฟล์ /etc/bind/blackhole.list จะมีข้อมูลดังนี้

blackhole {
    174.127.92.85;
    31.210.155.237;
    178.32.76.101;
   …
};

ซึ่งวิธีการนี้ ทำให้เราสามารถแก้ไขเฉพาะไฟล์ blackhole.list โดยไม่ต้องไปแก้ไข named.conf.options เมื่อมีการโจมตีโดยใช้ ip address ใหม่เกิดขึ้น

อย่างไรก็ตาม ผมพบว่า วิธีการนี้ ไม่ค่อยได้ผลสักเท่าไหร่ ถ้าการโจมตีเป็นแบบ DoS หรือ DDoS เพราะ ผู้ที่โจมตี ไม่ได้สนใจข้อมูลที่ DNS Server ของเราจะส่งกลับไป เพียงแต่ต้องการทำให้ Server ทำงานหนักขึ้นเท่านั้น การระบุ blackhole list จะทำให้ DNS Server ส่งคำตอบกลับไปยัง client ที่ query มาว่า REFUSED แต่ก็จะยังมีการตอบกลับ และมีการบันทึกการ query ลงสู่ record อยู่
นอกจากนี้ ถ้าเป็น DDoS ซึ่งจะมี client ที่มี ip address ใหม่ๆ โจมตีเข้ามาเรื่อยๆ การแก้ไขไฟล์ blackhole.list เพื่อให้ทันสมัยอยู่เสมอ ก็แทบที่จะทำให้วิธีการนี้ ใช้ป้องกันจริงๆไม่ได้

ซึ่งก็จะขอเสนอเป็นบทความต่อไปครับ การใช้ fail2ban เพื่อป้องกันการโจมตีแบบ Brute Force DNS Quert Attack

Comments are closed.