BIND 9.10 – Eintauchen in DNSSEC

Abstract

BIND 9.10 ist die neue Version des BIND-9-DNS-Servers von ISC. Von BIND 9.10 ist in dieser Woche die erste Beta-Version erschienen. In loser Folge werde ich hier die Neuerungen in BIND 9.10 vorstellen. BIND 9.10 enthält ein neues Kommandozeilenwerkzeug zum Prüfen von DNSSEC-Installationen. Dieses Tool, delve, ist in der Bedienung an das schon bekannte dig angelehnt.

BIND 9.10 ist die neue Version des BIND-9-DNS-Servers von ISC (nicht zu verwechseln mit BIND 10, der ein neuer DNS-Server ist). Von BIND 9.10 ist in dieser Woche die erste Beta-Version erschienen (ftp://ftp.isc.org/isc/bind9/9.10.0b1/). In loser Folge werde ich hier die Neuerungen in BIND 9.10 vorstellen.

Note

Update Mai 2014: In der Release-Version von BIND 9.10 wurde das delve-Tool in delv umbenannt. Die Hintergründe finden sich in Mail-Thread a note on 9.10.0rc2: eleven, twelve; dig and delv(e)

BIND 9.10 enthält ein neues Kommandozeilenwerkzeug zum Prüfen von DNSSEC-Installationen. Dieses Tool, delv, ist in der Bedienung an das schon bekannte dig angelehnt.

delv prüft die DNSSEC-Informationen für eine Domain in der gleichen Weise, wie es der BIND-9-DNS-Server selbst macht (delv benutzt hierfür die gleichen Routinen aus dem BIND-9-DNS-Server). delv ist daher für die Suche nach Fehlern in einer DNSSEC-Installation, verglichen mit dig +sigchase, die bessere und genauere Alternative.

shell> delv sys4.de
; fully validated
sys4.de.              1531    IN      A       194.126.158.154
sys4.de.              1531    IN      RRSIG   A 8 2 3600 20140306000549 20140226120259 4390 sys4.de. EgkWrjm8JAgdS2Kf6YjvvRwf5AVJKFwwO0ZGcDZkATyV5i1TQZEaoHkk d/5KGKoctLLjtcVdaFnC4uZ5LF+GzajUS3Tl5dDzNLS/saYB6EJVU/hU v6XV0MCaEmynIo6kQp5D9Xn911ROFXQvLgG1QO+RaYVG/GbxTYtBySt5 lCo=

Ohne weitere Argumente führt delv eine DNS-Anfrage (A-Record) für den angegebenen Domainnamen durch. Wenn die Domain mit DNSSEC signiert ist und sich die Vertrauenskette bis zur Internet-Root-Zone zurückverfolgen lässt, validiert delv die empfangenen DNSSEC-Daten.

DNS-Resource-Record-Typen (z.B. SOA, MX, SRV...) können in beliebiger Reihenfolge auf der Kommandozeile angegeben werden. Der Schalter +multi (multiline) sorgt für pretty printing, eine für Menschen besser lesbare Ausgabe:

shell> delv sys4.de soa +multi
; fully validated
sys4.de.              3600 IN SOA ns.sys4.de. hostmaster.sys4.de. (
                              2014022801 ; serial
                              3600       ; refresh (1 hour)
                              3600       ; retry (1 hour)
                              604800     ; expire (1 week)
                              3600       ; minimum (1 hour)
                              )
sys4.de.              3600 IN RRSIG SOA 8 2 3600 (
                              20140307163249 20140228040259 4390 sys4.de.
                              S8+26gaz2xHXM/68+2K8IlI9fi5NYa8rr4355eZK3lo9
                              1MIj8KppPIiDUJBtIwnYSo7TrjJ4pxk4cDjm5YEYpiFn
                              l+A1/crxXTkUmEN/6xj4IgJmGolLgLOW5rwesBJ/r3m7
                              dzy8DLVrOmeLNPt79bxASAAcefJ5GmCPAQUwdZo= )

Die Abfrage der IPv6-Adressen (AAAA Record):

shell> delv AAAA sys4.de +multi
; fully validated
sys4.de.              3565 IN AAAA 2001:1578:400:111::8
sys4.de.              3565 IN RRSIG AAAA 8 2 3600 (
                              20140303131119 20140224020259 4390 sys4.de.
                              RziqUv5JgOSXRB/WKYE4ZqCH90kdjmtYHBskzHHRHCR0
                              2HhCX4g2v5HmThnAfyQurPiukKk5f3/SboPIuT9BiKlI
                              mDcire43Mif5KYa4r43MwfeaMkBudAspqcmCiKG0orjG
                              r9/eIj1GJ1bzNo5FCHggqEAUjc77TmIuLJGX5Cg= )

Für die Fehlersuche in einer DNSSEC-Installation sind die trace-Schalter interessant. +rtrace zeigt die zusätzlichen Anfragen eines DNS-Servers (und delv) bei der Validierung:

shell> delv sys4.de mx +multi +rtrace
;; fetch: sys4.de/MX
;; fetch: sys4.de/DNSKEY
;; fetch: sys4.de/DS
;; fetch: de/DNSKEY
;; fetch: de/DS
;; fetch: ./DNSKEY
; fully validated
sys4.de.              3600 IN MX 10 mail.sys4.de.
sys4.de.              3600 IN RRSIG MX 8 2 3600 (
                              20140304153800 20140225100259 4390 sys4.de.
                              X2WJv25+fokUcmC+hjzrGSJ55n4uTFWJvhd7gyIHG56h
                              o02mzuhoUu45FcLpPCz1W3oBuWDTv3Vvgc1aJIq22FiG
                              syE89BYsR2owSAU4EiEWIoFCxiDQHWS6tX5VXfKG879G
                              KQT9E9GW8YlNqf7sa/p0Tf0ivo0GclqozgqfZJQ= )

Hier wurden neben dem angefragten MX-Record (Mail-Exchanger) der Domain sys4.de noch der DNSKEY (DNSSEC öffentlicher Schlüssel), der DS (Delegation Signer) für sys4.de sowie DNSKEY und DS für de und der DNSKEY für die Root-Zone "." angefragt. Der Trust-Anchor der Internet-Root-Zone ist direkt in delv einkompiliert und wird als Basis für die DNSSEC-Validierung benutzt.

Der Schalter +mtrace gibt zusätzlich die empfangenen DNS-Pakete aus.

Der Schalter +vtrace informiert über die DNSSEC-Validierungskette:

shell> delv sys4.de SPF +multi +vtrace
;; fetch: sys4.de/SPF
;; validating sys4.de/SPF: starting
;; validating sys4.de/SPF: attempting positive response validation
;; fetch: sys4.de/DNSKEY
;; validating sys4.de/DNSKEY: starting
;; validating sys4.de/DNSKEY: attempting positive response validation
;; fetch: sys4.de/DS
;; validating sys4.de/DS: starting
;; validating sys4.de/DS: attempting positive response validation
;; fetch: de/DNSKEY
;; validating de/DNSKEY: starting
;; validating de/DNSKEY: attempting positive response validation
;; fetch: de/DS
;; validating de/DS: starting
;; validating de/DS: attempting positive response validation
;; fetch: ./DNSKEY
;; validating ./DNSKEY: starting
;; validating ./DNSKEY: attempting positive response validation
;; validating ./DNSKEY: verify rdataset (keyid=19036): success
;; validating ./DNSKEY: signed by trusted key; marking as secure
;; validating de/DS: in fetch_callback_validator
;; validating de/DS: keyset with trust secure
;; validating de/DS: resuming validate
;; validating de/DS: verify rdataset (keyid=33655): success
;; validating de/DS: marking as secure, noqname proof not needed
;; validating de/DNSKEY: in dsfetched
;; validating de/DNSKEY: dsset with trust secure
;; validating de/DNSKEY: verify rdataset (keyid=24220): success
;; validating de/DNSKEY: marking as secure (DS)
;; validating sys4.de/DS: in fetch_callback_validator
;; validating sys4.de/DS: keyset with trust secure
;; validating sys4.de/DS: resuming validate
;; validating sys4.de/DS: verify rdataset (keyid=53878): success
;; validating sys4.de/DS: marking as secure, noqname proof not needed
;; validating sys4.de/DNSKEY: in dsfetched
;; validating sys4.de/DNSKEY: dsset with trust secure
;; validating sys4.de/DNSKEY: verify rdataset (keyid=47579): success
;; validating sys4.de/DNSKEY: marking as secure (DS)
;; validating sys4.de/SPF: in fetch_callback_validator
;; validating sys4.de/SPF: keyset with trust secure
;; validating sys4.de/SPF: resuming validate
;; validating sys4.de/SPF: verify rdataset (keyid=4390): success
;; validating sys4.de/SPF: marking as secure, noqname proof not needed
; fully validated
sys4.de.              3600 IN SPF "v=spf1 ip4:194.126.158.139 ip4:194.126.158.138 ip4:194.126.158.146 ip4:194.126.158.144 ip6:2001:1578:400:111::7 -all"
sys4.de.              3600 IN RRSIG SPF 8 2 3600 (
                              20140303211820 20140225060259 4390 sys4.de.
                              LJpYtBydXjVTpQslemuLtzew+J+pgJYzpTNJbS9b23PE
                              XQVya7+yMA8GvCyrcLKzd187lZ97CtLz91PMv+eDQvxQ
                              TLMm63LefNf577wcYtolpivJwsk9eK2rHBcOGdhnqRbW
                              dTIP2K/8vMiOHS/y7vhMg268zzOouvmzLjHgHXI= )

Nicht nur für BIND-9-DNS-Server-Admins ist delv ein nützliches neues Werkzeug, sondern für jeden Administrator, der DNS- und DNSSEC-Probleme analysieren und beheben muss.

Carsten Strotmann, 28. February 2014

   bind    DNS    DNSSEC