In AD-DNS-Zonen müssen Records sehr häufig aktualisiert werden. Beispiele:
- Clients bekommen vom DHCP-Server eine neue IP-Adresse
- neue Clients werden installiert
- alte Clients werden neu installiert
- Geräte (z. B. Drucker) werden getauscht bzw. neu aufgebaut
- Clients bekommen einen neuen Hostnamen
Eine manuelle Pflege der DNS-Zone ist daher in größeren Umgebungen nicht praktikabel. Abhilfe schaffen hier die dynamischen Updates. Clients und ggfs. der DHCP-Server melden Änderungen an den DNS-Server, der daraufhin die Records aktualisiert.
Das wesentliche Problem ist jetzt, wie sichergestellt werden kann, dass eine dynamische Aktualisierung auch richtig und gewünscht ist.
Beispiel:
Ein neuer Client wird installiert und erhält den Namen eines DCs. Eine unsichere Konfiguration des DNS-Servers würde jetzt dazu führen, dass der Client den DNS-Record des DCs überschreibt und dadurch das AD lahmlegt oder sicherheitskritische Daten (Kerberos-Tokens) abgreifen könnte.
Ziel
Absicherung einer AD-DNS-Zone gegen Manipulationen an DNS-Einträgen. Dynamische Updates werden soweit eingeschränkt, dass keine DNS-Records mehr manipuliert werden können.
Umsetzungsmöglichkeiten
Im Internet kursieren diverse unterschiedliche Artikel zu genau diesem Thema. Leider ist ein Großteil einfach falsch oder veraltet. Aus diesem Grund habe ich in einer Testumgebung verschiedene Konfigurationen nachgebaut und die Ergebnisse dokumentiert.
Welche Einstellungen sind relevant?
Es sind sowohl Einstellungen im DHCP-Server als auch auf der betroffenen DNS-Zone zu setzen. Insbesondere die Kombinationen von diesen Einstellungen führen zu unterschiedlichen Ergebnissen.
DHCP
Konfiguration der dynamischen DNS-Aktualisierung im DHCP Server
Hier kann zunächst angegeben werden, ob der DHCP-Server überhaupt Dynamische Updates zur Aktualisierung von DNS-Records versucht. Zudem kann konfiguriert werden, ob er dies pauschal tun soll oder nur dann, wenn ein DHCP-Client dies explizit anfordert. Außerdem gibt es noch Clients, die selber keine Aktualisierung ihres DNS-Records durchführen, aber auch keine Aktualisierung beim DHCP Server anfordern. Zu dieser Gruppe zählen vor allem Drucker, Print-Boxen etc.
AD-Konto, das der DHCP nutzt, um Dynamische Updates für einen Nicht-AD-Client durchzuführen
Näheres zu diesem Konto:
[Installing Dynamic Host Configuration Protocol (DHCP) and Domain Name System (DNS) on a Domain Controller]
http://support.microsoft.com/en-us/kb/255134
DNS
Konfiguration von Dynamischen Updates auf der DNS-Zone
Auf der DNS-Zone kann dann folgendes eingestellt werden:
- keine Dynamischen Updates
- nicht sichere und sichere Dynamischen Updates
- nur sichere Dynamische Updates (notwendige Einstellung, um DNS-Manipulationen zu verhindern!)
- sobald nur sichere Dynamische Updates aktiviert sind, muss eine AD-Authentifizierung vorliegen. Dies ist bei AD-Clients kein Problem, da diese ein Maschinen-Konto in AD besitzen. Jetzt stellt sich die Frage, wie Nicht-AD-Clients ihre Einträge in der DNS-Zone aktualisieren können. Hier greift die Einstellung im DHCP: „DNS-A und -PTR-Einträge nur nach Aufforderung von DHCP-Client dynamisch aktualisieren“. Für Nicht-AD-Clients führt also der DHCP die Dynamische Aktualisierung durch, wenn es der Client anfordert. Dazu nutzt der DHCP ein AD-Benutzerkonto, welches extra für diesen Zweck anzulegen ist. DNS-Records erhalten auch nur bei dieser Einstellung einen sinnvollen Owner, der vor Manipulationen am Record schützt.
Lösungsvariante und ihre Auswirkungen
AD-Clients führen die Dynamischen Records eigenständig durch und Nicht-AD-Clients lassen die Aktualisierung vom DHCP Server durchführen
DHCP:
DNS:
Die oben gezeigten Einstellungen führen dazu, dass die DNS-Records von AD-Clients den eigenen Clientname$ als Owner des DNS-Records eintragen. Dadurch wird eine Manipulation verhindert. Auch der DHCP-Server kann diesen Eintrag jetzt nicht mehr verändern. Er würde ja versuchen, den Eintrag mit dem AD-Benutzerkonto zu verändern, das er oben eingestellt bekommen hat. Dieses Konto hat aber nicht die Berechtigung, den DNS-Record zu modifizieren. Wichtig ist hierbei noch, dass die Clients direkt mit dem DNS-Server kommunizieren, um eventuelle Änderungen an ihrem DNS-Record durchzuführen. Der DHCP hat damit nichts mehr zu tun.
Anders sieht es bei Clients aus, die nicht der AD-Domäne angehören. Das könnten z. B. Drucker sein. Für diese Clients erstellt der DHCP die DNS-Records unter dem AD-Konto, welches dafür im DHCP konfiguriert wurde.
Dies hat natürlich zur Folge, dass dem DHCP eventuell eine ganze Reihe von DNS-Records gehören. Diese Einträge sind leider auch weiterhin unsicher, weil der DHCP auf Anforderung eines Clients ändert. Beispiel:
Ein Drucker mit dem Namen ps001 wird durch den DHCP Server in der Zone test.local registriert. Besitzer des DNS-Records wird das DHCP-AD-Konto. Jetzt kommt ein weiterer Client ins Netz, der ebenfalls ps001 heißt. In dem Fall verändert der DHCP den bereits vorhandenen DNS-Record mit den neuen Daten, und der Record ist ggfs. manipuliert.
Abhilfe soll hier die DHCP-Option Namensschutz bringen. Diese verknüpft den DNS-Record mit Merkmalen (MAC-Adresse?) des anfordernden Clients. Fordert jetzt ein weiterer Client den DHCP Server zur Aktualisierung des DNS-Records auf, weiß der DHCP Server, dass dies nicht der ursprüngliche Client ist und führt das Dynamische Update nicht durch.
Leider haben meine Tests gezeigt, dass viele Nicht-AD-Clients keine Eintragung ins DNS anfordern, sobald der Namensschutz aktiviert ist. Daher halte ich diese Option nur in Ausnahmefällen für praktikabel.
Zusammenfassung:
- Im DNS Server die Zone auf „nur sichere“ Dynamische Updates konfigurieren
- Im DHCP ein AD-Konto konfigurieren und die Eintragung im DNS nur nach Aufforderung durchführen
- Namensschutz deaktivieren
Damit wären AD-DNS-Records vor Manipulationen geschützt, nicht AD-Records leider nicht. Hier ist in der jeweiligen Umgebung zu prüfen, ob der Namensschutz mit den vorhandenen nicht AD-Clients funktioniert oder nicht.
Da die AD-DNS-Records nur noch von ihrem Ersteller geändert werden können, muss man einen Aufräumtask einrichten. Ansonsten würden DNS-Records u. U. ewig in der Zone erhalten bleiben, obwohl der Client gar nicht mehr existiert. Anleitungen und weiterführende Infos findet man unter dem Stichwort „DNS scavenging“.
Protokoll
Weitere Infos und Versuchsergebnisse:
http://www.mcseboard.de/topic/199043-dns-absichern/
http://faq-o-matic.net/?p=6525