Windows2012/2016 Server und BIND Signing Proxy
In einer bestehenden Umgebung, in der bisher DNS über Windows Server gemanagt wurde, und diese Nameserver auch sowohl als Verwaltungsmaschine, als auch als öffentlicher Nameserver dienten, oder der öffentliche Nameserver ebenfalls Windows-basiert war, kann ein "hybrides" Setup aus Windows DNS und Linux/BIND9 sinnvoll sein.
Prinzipielles Setup mit Hidden Master, Signing Proxy und Public Master
In diesem Beispiel zeigen wir ein DNSSEC-Setup mit Windows2016 Server als DNS-Verwaltungssystem ("Hidden Master"), im allgemeinen wird hierzu das schon bestehende System weiter verwendet, und BIND9-basierten Nameserver das die DNSSEC-Signierung vornimmt ("Signing Proxy"), dem ein ebenfalls unter BIND9 laufender öffentlicher Nameserver als Secondary ("Slave") konfiguriert sind.
Grundsätzlich läßt sich das Setup aber auch auf andere Nameserver-Software (z.B. Unbound, PowerDNS) übertragen, da es nur auf die Weiterreichung der unsignierten bzw. durch den Proxy signierten Zonen ankommt. Wesentlich ist also die Konfiguration der IPs zum Zonentransfer vom Primary (Verwalter) zum Secondary (Signing Proxy) und dessen Secondary (Öffentlicher Nameserver).
Zonen und Konfiguration der Nameserver
Durch die zweistufigen Zonentransfer vom DNS-Verwalter zum Signing Proxy und danach zum öffentlichen Nameserver ergeben sich folgende Konfigurationen für die DNS-Server unter Windows und BIND9, wenn die IPs der drei beteiligten Systeme in unserem Beispiel die folgenden sind:
Host | IP | Funktion | Schema | Nameserver Status |
---|---|---|---|---|
BADWLRZ-TWDNS01 | 138.246.99.193 | DNS Verwaltung | Hidden Master | Master |
dnssec-ws02.dnssec.bayern | 138.246.99.197 | DNSSEC-Signierung | Signing Proxy | Slave des Hidden Master |
dnssec-ws03.dnssec.bayern | 138.246.99.220 | Öffentlicher Nameserver | Public Master | Slave des Signing Proxy |
Konfiguration von Windows2012/2016 Server auf dem Hidden Master
- Der DNS-Dienst kann aus aus den "Administrative Tools" heraus gestartet werden.
- Der DNS-Dienst und dort definierte Zonen werden über den "DNS Manager" verwaltet:
- Hier werden Zonen angelegt. Unsere Beispielzone "ws03.ws.dnssec.bayern" ist als Standard Primary definiert und wie oben im Schema illustriert auf dem DNS-Verwaltungsserver ("Hidden Master") nicht DNSSEC-signiert. Die Zone ist für dieses Testsetup minimal gehalten, und enthält nur jeweils einen A, MX und NS Resourceneintrag.
- Über das "Properties"-Kontextmenü konfiguriert man die Zonen. Im "General"-Tab wird der verwendete Dateiname für die Zonendaten definiert, den wir unverändert lassen.
- Im "Nameservers"-Tab definieren wir den "Public Master" mit seiner IP als "Nameserver". Diese auf den ersten Blick widersprüchliche Einstellung ist notwendig, da der "Public Master" der eigentliche öffentliche und damit von außen sichtbare Nameserver ist, der Anfragen autoritativ beantworten wird. Er muss also in der Zone als "NS" Resource Record stehen und wird mit der Auflistung als Nameserver dort aufgeführt.
- Start of Authority (SOA) enthält neben dem Primary Server - das ist auch hier der Hostname des Public Master - nur die üblichen Angaben für die Zone (TTL, Refresh und Retry Interval usw.)
- Im Tab Zone Transfers muss allerdings der Transfer an den Signing Proxy, IP 138.246.99.197, eingestellt werden.
- Nicht vergessen werden sollte, dass man durch Klicken auf den "Notify"-Button sicher stellt, dass dort auch die Nameserver über geänderte Zonen benachrichtigt werden. Gehen alle Zonen über den Signing Proxy ist das mit der der Default-Einstellung "Automatically Notify" angeklickt und "Servers listed on the Servers tab" noch NICHT der Fall.
- Da der Signing Proxy NICHT In der Liste Nameservers steht, muss seine IP 138.246.99.197 hier separat angegeben werden. Die Benachrichtigung (Notification) des Public Nameservers wird hingegen auf den Signing Proxy in den BIND9-Optionen gesetzt (siehe unten)
Damit haben wir die Konfiguration des Hidden Master unter Windows2012/2016 abgeschlossen und können uns den beiden BIND9-Konfigurationen auf dem Signing Proxy und dem Public Master widmen. Bei diesen gehen wir aber nur auf die für das DNSSEC-Signing-Proxy-Setup notwendigen spezifischen Einstellungen ein. Kenntnisse der allgemeinen Konfiguration von BIND und DNSSEC setzen wir hier voraus.
Konfiguration von BIND9 auf dem Signing Proxy
DNSSEC-Schlüssel sollten in einem dedizierten Verzeichnis, auf das nur der root- und bind-Benutzer Lesezugriff haben, gespeichert werden. Da pro Zone ein Zone-Signing-Key (ZSK) und Key-Signing-Key-(KSK)-Paar empfohlen wird, sollte man auf die Organisation der Schlüssel in Unterverzeichnissen Wert legen. Das Parentverzeichnis wird als Option in der allgemeinen Konfiguration angegeben.
Der Signing Proxy kann sehr restriktiv gehalten werden, da er tatsächlich nur die unsignierten Zonen per Zonentransfer entgegen nimmt, diese bei Bedarf - nicht alle Zonen müssen notwendigerweise signiert werden - mit den vorhandenen DNSSEC-Schlüsseln signiert und dann per Zonentransfer an den Public Master weiter reicht.
Er darf keine Query-Anfragen beantworten oder gar Rekursion erlauben, um nicht als Open Resolver missbraucht werden zu können. Da der Signing Proxy von außen nicht erreichbar ist, ist das aber nur eine zusätzliche Absicherung.
Allgemeine Optionen
options {
directory "/var/cache/bind"; # Cache-Verzeichnis für BIND9
key-directory "/var/bind/keys"; # Verzeichnis für DNSSEC-Schlüssel
dnssec-validation auto; # DNSSEC-Validierung aktivieren
listen-on { any; };
listen-on-v6 { any; };
notify yes; # Public Master soll über Zonenänderungen informiert werden
allow-query { none; }; # keine Queries von irgendeinem System erlauben
allow-recursion { none; }; # keine Rekursion von irgendeinem System erlauben
recursion no; # zusätzlich wird die Rekursion ganz abgeschaltet
allow-transfer { ::1; 127.0.0.1; 138.246.99.217; 138.246.99.220; };
# local, dnssec-wsadm.dnssec.bayern und dnssec-ws03.dnssec.bayern = public master
};
Neben den üblichen für die DNSSEC-Nutzung in BIND9 notwendigen Angaben, werden auf dem Signing Proxy pro Zone noch der Hidden Master als Master und der Public Master als erlaubter Zielrechner für den Zonentransfer angegeben (dies ist in den obigen allgemeinen Optionen definiert).
Optionen für Zonen
zone ws03.ws.dnssec.bayern {
type slave; # Signing Proxy ist Slave des Hidden Master
masters { 138.246.99.193; }; # BADWLRZ-TWDNS01.srv.lrz.de = hidden master
inline-signing yes; # DNSSEC-Signieren per inline-Signing
auto-dnssec maintain; # selbständiges Signieren bei geänderten Zonen
file "/etc/bind/temp.signed"; # ein Dummy-file ist notwendig, da BIND9 au diesem arbeiten können muss
};
Konfiguration von BIND9 auf dem Public Master
Da der Public Master Anfragen von öffentlichen Recursern beantworten muss, muss in den allgemeinen Optionen dies frei geschaltet werden. DNSSEC-Validierung wird auch auf auto gestellt.
Allgemeine Optionen
options {
directory "/var/cache/bind"; # Cache-Verzeichnis für BIND9
dnssec-validation auto; # DNSSEC-Validierung aktivieren
allow-query { any; }; # Public Master muss Anfragen von außen beantworten
allow-recursion { none; }; # aber nur für seine eigenen autoritativen Zonen
recursion no; # zusätzlich wird die Rekursion ganz abgeschaltet
listen-on { any; };
listen-on-v6 { any; };
};
Der Public Master übernimmt schon DNSSEC-signierte Zonen vom Signing Proxy, muss also selbst keine DNSSEC-Signierung mehr vornehmen und muss auch keine Schlüssel speichern. Der Public Master muss so konfiguriert werden, dass der Signing Proxy für ihn Master Nameserver ist.
Er muss Query-Anfragen von außen beantworten können, darf aber gar keine Rekursion erlauben, um nicht als Open Resolver missbraucht werden zu können!
Transfers der Zonen werden nur für einen Admin-Rechner bzw. den Public Master selbst lokal zur Überprüfung des korrekten Auslieferns von signierten Zonen erlaubt.
Optionen für Zonen
zone ws03.ws.dnssec.bayern {
type slave; # Public Master ist Slave des Signing Proxy
masters { 138.246.99.197; }; # 138.246.99.197 = signing proxy als Master
allow-transfer { ::1; 127.0.0.1; 138.246.99.220; }; # nur lokale Transfers zulassen
};
Wenn alles konfiguriert ist, und sicher gestellt ist, dass sowohl der DNS-Dienst auf Windows2012/2016, als auch die beiden BIND9-Instanzen auf dem Signing Proxy und dem Public Master laufen, kann man sehen, dass Änderungen an den DNS-Einträgen oder der SOA TTL an die nachfolgenden Nameserver wie im Schema anfangs illustriert, per Notification und Zonen Transfer propagiert werden:
Signing Proxy Log
Public Master Log
26-Jun-2018 20:16:43.189 zone ws03.ws.dnssec.bayern/IN: Transfer started.
26-Jun-2018 20:16:43.189 transfer of 'ws03.ws.dnssec.bayern/IN' from 138.246.99.197#53: connected using 138.246.99.220#43455
26-Jun-2018 20:16:43.190 zone ws03.ws.dnssec.bayern/IN: transferred serial 185
26-Jun-2018 20:16:43.191 transfer of 'ws03.ws.dnssec.bayern/IN' from 138.246.99.197#53: Transfer status: success
26-Jun-2018 20:16:43.191 transfer of 'ws03.ws.dnssec.bayern/IN' from 138.246.99.197#53: Transfer completed: 2 messages, 76 records, 18464 bytes, 0.001 secs (18464000 bytes/sec)
Überprüfung der Auslieferung von DNSSEC-signierten Zonen
Die korrekte Auslieferung von DNSSEC-signierten Zonen kann auch mit DNSViz überprüft werden.