เซิร์ฟเวอร์ DNS ของฉันดัน 20mbps ทำไม


22

ฉันกำลังเรียกใช้เซิร์ฟเวอร์ DNS ใน EC2 และมันผลักดันประมาณ 20mbps เมื่อวานนี้เมื่อฉันตรวจสอบแผงควบคุมการเรียกเก็บเงินของฉันและพบข้อมูลที่ใช้แล้ว 1.86 TB ในเดือนนี้ นั่นเป็นรายการใหญ่สำหรับห้องแล็บโครงการขนาดเล็กของฉัน ฉันไม่เคยสังเกตเห็นประสิทธิภาพลดลงและไม่ต้องกังวลกับการตั้งค่าทราฟฟิก threshholds อีกต่อไป แต่ตอนนี้ฉันมีตั้งแต่นี้มีค่าใช้จ่ายฉัน $ 200 + ค่าใช้จ่ายแบนด์วิดธ์

ดูเหมือนว่ามีใครบางคนใช้เซิร์ฟเวอร์ DNS ของฉันเป็นส่วนหนึ่งของการโจมตีการขยายสัญญาณ แต่ฉันก็เสียวิธี

การกำหนดค่าอยู่ด้านล่าง

// BBB.BBB.BBB.BBB = ns2.mydomain.com ip address

options {
        listen-on port 53 { any; };
//      listen-on-v6 port 53 { ::1; };
        directory "/var/named";
        dump-file "/var/named/data/cache_dump.db";
        statistics-file "/var/named/data/named_stats.txt";
        memstatistics-file "/var/named/data/named_mem_stats.txt";
        allow-transfer { BBB.BBB.BBB.BBB; };
        allow-query-cache { BBB.BBB.BBB.BBB; };
        allow-query { any; };
        allow-recursion { none; };

        empty-zones-enable no;
        forwarders { 8.8.8.8; 8.8.4.4; };

        fetch-glue no;
        recursion no;

        dnssec-enable yes;
        dnssec-validation yes;

        /* Path to ISC DLV key */
        bindkeys-file "/etc/named.iscdlv.key";

        managed-keys-directory "/var/named/dynamic";
};

logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};

zone "." IN {
        type hint;
        file "named.ca";
};

zone "mydomain.com" IN {
        type master;
        file "zones/mydomain.com";
        allow-transfer { BBB.BBB.BBB.BBB; localhost; };
};

ด้วยการกำหนดค่านี้ฉันไม่ควรตอบคำถามใด ๆ สำหรับโซนที่ฉันไม่ได้โฮสต์ในพื้นที่ใช่ไหม เซิร์ฟเวอร์นี้เป็น SOA สำหรับโดเมนไม่กี่แห่ง แต่ไม่ได้ใช้เพื่อค้นหาข้อมูลโดยเซิร์ฟเวอร์อื่นของฉัน (ทุกคนแก้ไขได้จาก OpenDNS หรือ Google) ฉันมีคำสั่งอะไรผิดที่นี่หรือฉันลืมไปแล้ว? บันทึกของฉัน (63MB +) เต็มไปด้วยสิ่งนี้:

client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 58.215.173.155#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 218.93.206.228#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 50.19.220.154#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied
client 123.207.161.124#4444: query (cache) 'cpsc.gov/ANY/IN' denied

9
สิ่งนี้ไม่ตอบคำถามของคุณ แต่คุณควรตั้งค่าdocs.aws.amazon.com/awsaccountbilling/latest/aboutv2/
Tim

มันจะเป็นที่ยอมรับสำหรับคุณที่จะบังคับให้ทางเลือก TCP สำหรับลูกค้าทั้งหมดโดยไม่ต้อง RFC 7873 สนับสนุน
kasperd

1
อัตรา จำกัด ใน BIND
Rui F Ribeiro

@RuiFRibeiro อัตรา จำกัด บนเซิร์ฟเวอร์ DNS ที่มีสิทธิ์จะมีประโยชน์ แต่การ จำกัด อัตราอาจเป็นจุดอ่อนที่สามารถถูกโจมตีในการโจมตี DoS หากผู้โจมตีทำให้ผู้สอบถามซ้ำซ้อนด้วยการสอบถามโดเมนที่โฮสต์บนเซิร์ฟเวอร์ที่เชื่อถือได้ซึ่งมีการ จำกัด อัตราผู้ใช้ที่ถูกต้องตามกฎหมายของผู้เรียกซ้ำนั้นอาจไม่สามารถแก้ไขระเบียนในโดเมนที่ถูกโจมตีได้อีกต่อไป การโจมตีนั้นสามารถบรรเทาลงได้ด้วยการใช้ NSEC / NSEC3 แบบ Aggressiveซึ่งไม่ได้ใช้งานอย่างกว้างขวาง
kasperd

คำตอบ:


19

แม้ว่าเซิร์ฟเวอร์ของคุณจะตั้งค่าให้ตอบเฉพาะแบบสอบถามที่เชื่อถือได้เท่านั้น แต่ก็ยังเป็นไปได้ที่จะใช้สำหรับการโจมตีแบบขยาย - การANYสืบค้นกับรากของโซนสามารถกระตุ้นการตอบสนอง UDP ที่ค่อนข้างหนักเนื่องจากรากของโซนมีแนวโน้มที่จะ จำนวนเรคคอร์ดโดยเฉพาะกับ SPF / DKIM / DNSSEC

นี่เป็นสิ่งที่เกิดขึ้นในระบบของคุณ - ใช้tcpdumpเพื่อยืนยัน หากพวกเขากำลังใช้บันทึกที่มีสิทธิ์ของคุณในการโจมตีการขยายตัวเลือกที่ดีที่สุดของคุณจะเป็นเพียงแค่ย้ายไปที่ IP ใหม่และหวังว่าพวกเขาจะไม่ปฏิบัติตามเปลี่ยนระเบียนรากของโซนเพื่อให้เวกเตอร์ขยายสัญญาณมีประสิทธิภาพน้อยลง อัตราการตอบสนอง จำกัด (ถ้า BIND ของคุณรองรับ)


พวกเขาไม่ได้สืบค้นโซนของฉันแม้ว่า ... เซิร์ฟเวอร์ของฉันไม่ควรวางแทนที่จะตอบกลับใช่มั้ย
รัสเซลล์แอนโธนี

4
@RussellAnthony สำหรับรายการบันทึกที่คุณเห็นใช่ฉันเชื่อว่ามันลดลง - แต่สำหรับการโจมตีที่ประสบความสำเร็จจะไม่มีการสร้างรายการบันทึกดังนั้นในแง่ของการบันทึกการใช้แบนด์วิดท์จะมองไม่เห็น หากการโจมตียังคงเกิดขึ้น (ยังคงได้รับรายการบันทึกใหม่หรือไม่) ฉันพนันANYได้เลยว่า
Shane Madden

2
เพิ่มrate-limit { responses-per-second 1; };และดูเหมือนว่าจะลดลงเล็กน้อยการจราจร ฉันไม่ทราบว่าสามารถผูก RRL จากภายในตัวเอง
รัสเซลแอนโธนี

1
หากพวกเขากำลังส่งข้อความค้นหาเพื่อบันทึกที่มีสิทธิ์นั่นหมายความว่าพวกเขาจะต้องรู้ชื่อโดเมน ในกรณีนี้การย้ายไปที่ IP ใหม่จะไม่ช่วยให้พวกเขาสามารถค้นหาที่อยู่ IP ใหม่ได้อย่างรวดเร็วเหมือนกับผู้ใช้ที่ถูกกฎหมาย
kasperd

6
เพียงตรวจสอบให้แน่ใจว่าการ จำกัด อัตราของคุณจะไม่เปลี่ยนเป็นเวกเตอร์การโจมตี DoS: หากผู้โจมตีหมดขีด จำกัด การตอบกลับแคชที่ถูกกฎหมาย (เช่น OpenDNS และ google) อาจไม่สามารถแก้ไขชื่อของคุณได้เช่นกัน
Jonas Schäfer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.