Wie man BIND9 gegen DNS Cache Poisoning auf Debian Etch patcht

Version 1.0
Autor: Falko Timme


Dieser Artikel erklärt wie man einen BIND9 Nameserver auf ein Debian Etch System sichert, so dass er für DNS cache poisoning nicht mehr anfällig ist .

Diese Anleitung ist eine Möglichkeit von vielen. Ich kann keine Garantie dafür übernehmen dass es auch bei Dir so funktioniert!

1 Überprüfe ob BIND gefährdet ist

Führe folgenden Befehl auf Deinen Nameserver aus, um zu überprüfen ob er angreifbar ist (ersetze dabei ns1.example.com mit Deiner eigenen Nameserver-Adresse):

dig +short @ns1.example.com porttest.dns-oarc.net TXT


mh1:~# dig +short @ns1.example.com porttest.dns-oarc.net TXT
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"1.2.3.4 is POOR: 26 queries in 4.4 seconds from 1 ports with std dev 0.00"
mh1:~#

POOR zeigt an, dass BIND angreifbar ist. In diesem Falle MUSST Du BIND unbedingt patchen.

Wenn Du keine Antwort erhalten solltest, hat Dein DNS Server keinen rekursiven Resolver. Das bedeutet dass es für Domains, die nicht freigegeben worden sind, keine Anfragen animmt. In diesem Fall ist bist Du zwar nicht akut gefährdet, ich empfehle Dir aber dennoch, dringend BIND zu aktualisieren!

2 BIND patchen

Das ist nicht unbedingt ein Patch, sondern eher ein Update. Wir führen folgenden Befehl aus:

apt-get install bind9 bind9-host

Diese Anweisung installiert die aktualisierten BIND Pakete aus den Debian repositories.

Danach öffnen wir /etc/bind/named.conf und modifizieren die Sektion options. Wenn Du keinen rekursiven Resolver benötigst (z.B. wenn Dein Nameserver nur die Anfragen beantwortet, für die es freigegeben wurde), füge allow-recursion { none; }; hinzu. Auf dieser Weise schaltest Du das Caching für andere Domains aus . Die zweite Anweisung, die Du hinzufügen solltest, lautet: dnssec-enable yes; - das bewirkt dass BIND Anfragen auf beliebigen Ports annimmt, welche für angriffslustige Hacker schwerer herauszufinden sind (ich erinnen an das dig-Befehl in Kapitel 1: [...]26 queries in 4.4 seconds from 1 ports[...] - BIND antwortet hier nur auf einen Port...).

vi /etc/bind/named.conf


[...]
options { pid-file "/var/run/bind/run/named.pid"; directory "/etc/bind"; auth-nxdomain no; allow-recursion { none; }; dnssec-enable yes; /* * If there is a firewall between you and nameservers you want * to talk to, you might need to uncomment the query-source * directive below. Previous versions of BIND always asked * questions using port 53, but BIND 8.1 uses an unprivileged * port by default. */ // query-source address * port 53; }; [...]
Hiernach starten wir BIND neu:

/etc/init.d/bind9 restart

(Wenn Du ISPConfig benutzt, werden Deine Änderungen von ISPConfig überschrieben. Um das zu vermeiden nehmen wir die named.conf Template Datei /root/ispconfig/isp/conf/named.conf.master, ändern sie wie oben bereits gezeigt und speichern das geänderte Template in das /root/ispconfig/isp/conf/customized_templates Verzeichnis => /root/ispconfig/isp/conf/customized_templates/named.conf.master. Bitte ändere auch /etc/bind/named.conf wie oben ebenfalls bereits gezeigt wurde .)

3 BIND wiederholt überprüfen

Nun führen wir den Befehl aus dem ersten Kapitel noch einmal aus:

dig +short @ns1.example.com porttest.dns-oarc.net TXT

Wenn alles geklappt hat, sollte nun GOOD anstatt von POOR angezeigt werden, und es sollte zusätzlich mehr als einen Port genutzt werden:

mh1:~# dig +short @ns1.example.com porttest.dns-oarc.net TXT
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"1.2.3.4 is GOOD: 26 queries in 4.4 seconds from 26 ports with std dev 20195.32"
mh1:~#

Herzlichen Glückwunsch, Du hast nun BIND erfolgreich gesichert!

Du kannst ebenfalls den dig-Befehl auf Deine ISP-Nameserver ausführen, um herauszufinden ob sie immer noch angreifbar sind. Sollte dies der Fall sein, solltest Du dringend Deinen ISP ersuchen ihre Nameserver zu aktualisieren!

2 Kommentar(e)

Zum Posten von Kommentaren bitte

Kommentare

Von: schmidtedv

...also hier steht genau das Gegenteil, das dnssec-enable auf no gestellt werden soll:

http://www.mr-lug.de/pipermail/lug-info/2005-June/001392.html

...oder hab ich da was falsch verstanden?


Von: griesgram

Also mein Nameserver wurde am Anfang als Waffe (Verstärker) missbraucht! Dank der Änderung "allow-recursion { none; };" ist nun ruhe. Nameserver funktioniert wieder normal, die Query ". IN NS +" welche zu 10000 erschienen sind in den query-logs von Bind, sind nun nicht mehr vorhanden! Es wäre auch möglich "allow-recursion (127.0.0.1;); " oder man erstellt eine neue ACL "trusted" vor "options {}" und fügt folgendes zu "allow-recursion"

allow-recursion { trusted; };

---------
acl "trusted" {
192.168.1.0/24;
10.10.0.0/16;
};
options {
...
...
...
}