DNS – dnswalk – zonewalking

Das DNS-System ist in Zonen aufgebaut/verwaltet.
Jede Domain – z.B. plzk.de – stellt eine Zone dar. Pro Zone müssen je nach zuständiger Verwaltung (für .de die Denic) mehrere DNS-Server zur Verfügung stehen, die sich um die Namensauflösung kümmern.

stefan@wrk1:~$ host -t NS plzk.de
plzk.de name server ns.namespace4you.de.
plzk.de name server ns2.namespace4you.de.

Da es jetzt für die Administratoren von großen DNS-Servern zu viel Aufwand wäre, neue Eintrage auf DNS-Server1 auch auf DNS-Server2 händisch vorzunehmen, gibt es den Prozess des Zonentransfers. Normale master->slave Beziehung.

Dieser Prozess fordert vom Master die komplette Zone an und übernimmt sie in seine eigene Konfiguration.
(Auf Grund von schlecht gesicherten DNS-Servern kommt es häufig vor, dass nicht nur der Slave-Server die Zone abfragen kann)

Durchführen lässt sich dies mit:

stefan@wrk1:~$ dig @Nameserver domain.tld AXFR | head -10
(Ausgabe gekürzt)

; <> DiG 9.8.4-rpz2+rl005.12-P1 <> @Nameserver domain.tld AXFR
; (1 server found)
;; global options: +cmd
domain.tld. 3600 IN SOA gekürzt
domain.tld. 3600 IN NS gekürzt
domain.tld. 3600 IN NS gekürzt
domain.tld. 3600 IN NS gekürzt
domain.tld. 600 IN A gekürzt
domain.tld. 600 IN A gekürzt

Ohne DNSSEC lässt sich z.B. auch bei einer DNS-Antwort nicht feststellen, ob es die Domain nicht gibt, oder ob der Server nur keine Zone dazu hat.
Mit DNSSEC wurde mit NSEC eine Möglichkeit eingeführt zu beweisen, ob es einen Eintrag gibt. Dies hat jedoch das Zonewalking ermöglicht – wurde dann aber mit NSEC3 wieder beseitigt.

Liefert also ein DNS-Server per dnswalk keine Rückmeldung – ala:
stefan@wrk1:~$ dig @ns.namespace4you.de plzk.de AXFR

; <> DiG 9.8.4-rpz2+rl005.12-P1 <> @ns.namespace4you.de plzk.de AXFR
; (1 server found)
;; global options: +cmd
; Transfer failed.

Bleibt noch zonewalking – in etwa sieht das so aus:

$ tool paypal.com
paypal.com. paypal.com. A NS SOA MX TXT RRSIG NSEC DNSKEY TYPE65534
3pimages.paypal.com. A RRSIG NSEC
_dmarc.paypal.com. TXT RRSIG NSEC
ym2._domainkey.paypal.com. TXT RRSIG NSEC
3rdparty._spf.paypal.com. TXT RRSIG NSEC

Technisch gesehen frägt man den DNS nach einem Eintrag und er liefert durch NSEC den nächsten in der „Kette“. So hangelt man sich durch den DNS, bis man wieder beim „ersten“ Eintrag angekommen ist:

stefan@wrk1:~$ dig +dnssec @Nameserver bla.host
;; AUTHORITY SECTION:
bla2.host.de 300 IN NSEC bla3.host. CNAME RRSIG NSEC