DNS DDOS: fail2ban mit Bind

In letzter Zeit werden einige DNS Server mittels Anfragen wie die folgenden geflutet.

query: ripe.net IN ANY +ED
query: isc.org IN ANY +ED

Mittels fail2ban („apt-get install fail2ban“) kann man diese Querys recht einfach auf die schwarze Liste setzen und mit iptables blocken. Dazu muss der Named erst mal alle Querys loggen:

# /etc/bind/named.conf.local

logging {
    channel query.log {
        file "/var/log/named/query.log" versions 0 size 1m;
        severity debug 3;
        print-time yes;
    };
    category queries { query.log; };
};

Das „versions 0 size 1m“ gibt an, das Named eine Datei von 1MB Größe immer wieder überschreiben soll. Das File hätte ohne diese Anweisung schnell einige GB erreicht…

Für fail2ban habe ich hier ein quick-and-dirty script angepasst, welches auf die beiden oben genannten Domains testet (Download: named-ddos.conf). Das Rezept ist auch gut anpassbar für eigene Zwecke. Das Script „named-ddos.conf“ gehört nach „/etc/fail2ban/filters.d/“.

In der /etc/fail2ban/jail.conf muss das Rezept jetzt noch aktiviert werden:

[named-ddos-tcp]
enabled  = true
port     = domain,953
protocol = tcp
filter   = named-ddos
logpath  = /var/log/named/query.log
maxretry = 8

[named-ddos-udp]
enabled  = true
port     = domain,953
protocol = udp
filter   = named-ddos
logpath  = /var/log/named/query.log
maxretry = 8

Nach einem restart von fail2ban sollte /var/log/fail2ban.log anzeigen, dass IPs gebannt werden:

2012-08-02 22:56:44,886 fail2ban.actions: WARNING [named-ddos-udp] Ban 63.166.xxx.xxx
2012-08-02 22:56:44,903 fail2ban.actions: WARNING [named-ddos-udp] Ban 216.9.xxx.xxx

Wenn alles funktioniert würde ich den loglevel in der /etc/fail2ban/fail2ban.conf auf „1“ setzen damit das logfile nicht überläuft.

Nutzung auf eigene Gefahr 😉 Man sollte sich dessen bewusst sein, dass u.U. auch „legale“ User ausgesperrt werden könnten und bei Bedarf die Schwellwerte anpassen.

5 Antworten auf „DNS DDOS: fail2ban mit Bind“

  1. Danke, hat gleich auf anhieb geklappt.
    Hatte gelesen dass man Bind auch noch mit der Option „allow-recursion“ Beigringen kann nur noch spezielle IPs die Rekursion zu erlauben, aber das hat aus unerklärlichen Gründen nicht geklappt. Jetzt läuft’s halt über Fail2Ban und einer IPTables-Sperre. Auch gut…

    Gruß und nochmals Danke,
    Alex

  2. Hi, das mit „allow-recursion“ ist aber prinzipiell die bessere Methode; man sollte keinen DNS Server mehr mit offener rekursion betreiben… In manchen fällen (meist aus historischen Gründen) geht es halt nicht anders (so wie bei mir) 😉

  3. Die Konfigurationsdatei des named-ddos.conf how in Verbindung mit dem bind es verwendet?
    Ich bin derzeit dabei für feste IP ddos ACL, oft keine Möglichkeit, solche IP ändern; weiß nicht, ob Ihre Methode kann dieses Phänomen zu lösen. Ich binde Version ist v9.8

  4. Hallo

    bei mir geht das gar nicht.

    BIND 9.8.* + Fail2Ban v0.8.6

    habt das problem
    query: wapa.gov IN ANY +E
    query: cpsc.gov IN ANY +E

    Vorab. der DNS ist in einer DMZ die ASA vorher gibt nur eine ip nach innen ab.
    Als wäre wenn 😉

    Wäre gut wenn jemand eine Idee hätte .

    denn es nervt , logfile dauer voll

    Danke

  5. Hi, wird denn das Query-Log gefüllt? Ich habe dieses Setup mit den Versionen so nicht mehr im Einsatz… Gruß Otto

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.