DirectAccess zerstört DNSSEC
Ich hatte gerade im Lab mit DirectAccess gespielt. Da bietet es sich an, auch mal zu schauen, was passiert, wenn DNSSEC dazu kommt. Das Ergebnis ist eine faustdicke Überraschung.
Neue Zone
Als ersten lege ich eine neue Zone sec.adatum.com mit DNSSEC an. Das ist einfach: Einfach an der Zone im Kontextmenü DNSSEC auswählen. Es bietet sich an, die Trust Anchors innerhalb der Domain gleich mit zu verteilen.
Diese Zone bekommt einen WWW Eintrag, der auf den Webserver im Lab verweist. Und das tut dann auch.
Die Antwort besteht aus drei Teilen:
PS dns> Resolve-DnsName -DnssecOk -Name www.sec.adatum.com Name Type TTL Section NameHost ---- ---- --- ------- -------- www.sec.adatum.com CNAME 3600 Answer www.adatum.com Name : www.sec.adatum.com QueryType : RRSIG TTL : 3600 Section : Answer TypeCovered : CNAME Algorithm : 8 LabelCount : 4 OriginalTtl : 3600 Expiration : 5/19/2017 3:41:34 PM Signed : 5/19/2017 8:41:34 AM Signer : sec.adatum.com Signature : {39, 75, 194, 190...} Name : www.adatum.com QueryType : A TTL : 3600 Section : Answer IP4Address : 172.16.0.10
Auch auf dem Client, der irgendwo remote steht, tut es anstandslos. Hier gibt es aber nur zwei Teile in der Antwort:
PS client> Resolve-DnsName -DnssecOk -Name www.sec.adatum.com Name Type TTL Section NameHost ---- ---- --- ------- -------- www.sec.adatum.com CNAME 600 Answer www.adatum.com Name : www.adatum.com QueryType : AAAA TTL : 600 Section : Answer IP6Address : fd68:d6bf:56b6:7777::ac10:a
Man sieht schön die Wirkung von DNS64 und das Ergebnis überzeugt:
Pinging www.adatum.com [fd68:d6bf:56b6:7777::ac10:a] with 32 bytes of data: Reply from fd68:d6bf:56b6:7777::ac10:a: time=1ms Reply from fd68:d6bf:56b6:7777::ac10:a: time=1ms
Allerdings wurde keine DNSSEC Validierung durchgeführt, wie man an dem Fehlen der RRSIG Antwort bemerkt haben könnte.
Validierung
Die Validierung von DNSSEC kann man per Gruppenrichtlinie erzwingen.
Technisch gesehen wird hier per Policy Based DNS, die Validierung pro Domain eingefordert. Die Trust-Anchors wurden ja schon verteilt.
Nach Verteilung der Gruppenrichtlinie auf den Client stellt sich die Situation ganz anders dar:
PS client> Resolve-DnsName -DnssecOk -Name www.sec.adatum.com Resolve-DnsName : www.sec.adatum.com : Unsecured DNS packet
Konsequenterweise funktioniert dann auch nichts mehr:
C:\> ping www.sec.adatum.com Ping request could not find host www.sec.adatum.com. Please check the name and try again.
DNSSEC hat also erfolgreich DNS64 erkannt und die Modifikation verhindert!
Und IPv6?
Nehmen wir einen IPv6 Host im lokalen Netz an:
PS dns> Resolve-DnsName -DnssecOk -Name test.sec.adatum.com -type aaaa Name Type TTL Section IPAddress ---- ---- --- ------- --------- test.sec.adatum.com AAAA 3600 Answer 2001:db8::1 Name : test.sec.adatum.com QueryType : RRSIG TTL : 3600 Section : Answer TypeCovered : AAAA Algorithm : 8 LabelCount : 4 OriginalTtl : 3600 Expiration : 5/19/2017 4:02:43 PM Signed : 5/19/2017 9:02:43 AM Signer : sec.adatum.com Signature : {162, 99, 191, 91...}
Die Antwort besteht aus zwei Teilen, dem AAAA und dem RRSIG. Das tut. Nun zur Sicherheit noch einen nicht existierenden Namen.
PS dns> Resolve-DnsName -DnssecOk -Name test3.sec.adatum.com Resolve-DnsName : test3.sec.adatum.com : DNS name does not exist
Aber tut es auch auf dem Client? Schließlich muss ja keine Umschreibung durch DNS64 stattfinden.
PS client> Resolve-DnsName -DnssecOk -Name test.sec.adatum.com
Huch? Das tut nicht? Es fehlt auch komplett eine Antwort! Ist das denn von DNSSEC bestätigt?
PS client> Resolve-DnsName -DnssecOk -Name test3.sec.adatum.com Resolve-DnsName : test3.sec.adatum.com : Unsecured DNS packet
Nein, der DirectAccess-Resolver macht DNSSEC kaputt.
Richtig kaputt.