Sicherheit mit Windows Server 2022 erhöhen DNS-Abfragen mit Richtlinien steuern und DNS-over-HTTPs aktivieren

| Aktualisiert am 03.11.2021Autor / Redakteur: Thomas Joos / Peter Schmitz

Wenn es um die Sicherheit von Netzwerken geht, spielt auch DNS eine wichtige Rolle. Windows Server ermöglichen das Filtern von DNS-Abfragen basierend auf Client-IP-Adressen und Windows Server 2022 bringt weitere Neuerungen.

Firma zum Thema

Wie man DNS-Abfragerichtlinien anlegt, mit der PowerShell steuert und damit für mehr Sicherheit in Windows-Netzwerken sorgt, zeigen wir in diesem Artikel.
Wie man DNS-Abfragerichtlinien anlegt, mit der PowerShell steuert und damit für mehr Sicherheit in Windows-Netzwerken sorgt, zeigen wir in diesem Artikel.
(Bild: Myvisuals – stock.adobe.com)

Mit DNS-Abfragerichtlinien kann konfiguriert werden auf welche DNS-Anfragen ein DNS-Server antwortet und welche Abfragen er blockiert. Dadurch kann die Sicherheit des DNS-Systems verbessert werden. Diese Funktion ist in Windows Server 2016/2019 und auch in Windows Server 2022 integriert.

Eine weitere Neuerung in Windows Server 2022 ist die Unterstützung von DNS-over-HTTPs (DoH). Damit Clients und Server die Kommunikation des DNS-Datenverkehrs über HTTPS abwickeln können, müssen Server und Client die Funktion unterstützen. Windows Server 2022 ist dazu in der Lage. Wir zeigen in diesem Beitrag auch diese Möglichkeiten der Einrichtung.

DNS-Abfragerichtlinien verwenden

Bei der Verwendung von DNS-Abfragerichtlinien werden DNS-Server entlastet, da sie nicht zu viele Anfragen beantworten müssen. Microsoft hat diese Technologie in Windows Server 2016 eingeführt und mit Windows Server 2019 erweitert. In Windows Server 2022 hat Microsoft die Technik ebenfalls integriert und zusammen mit weiteren Sicherheitsfunktionen wie DNS-over-HTTPs (DoH) Alle Möglichkeiten für Richtlinien zeigt Microsoft auf der Hilfe-Seite für DNS-Abfragerichtlinien.

So sorgen DNS-Abfragerichtlinien für mehr Sicherheit in Windows-Netzwerken

Einfach ausgedrückt können Administratoren mit DNS-Abfragerichtlinien (DnsServerQueryResolutionPolicy) festlegen, dass ein DNS-Server nicht generell auf alle Anfragen antwortet, sondern vorher überprüft aus welchem Subnetz die Anfrage geschickt wird. Auf Basis dieser Informationen kann der DNS-Server anschließend verschiedene Anfragen blockieren, während andere Anfragen weiterhin beantwortet werden.

DNS-Abfragerichtlinien können auch dazu genutzt werden nur einzelne Einträge in einer DNS-Zone zu blockieren, zum Beispiel zu bestimmten Servern, die nur von einer Gruppe von Anwendern genutzt werden sollen.

Bildergalerie
Bildergalerie mit 8 Bildern

DNS-Richtlinien in der PowerShell steuern

DNS-Abfragerichtlinien werden in der PowerShell mit dem Cmdlet „Add-DnsServerQueryResolutionPolicy“ erstellt. Die vorhandenen Richtlinien zeigt die PowerShell mit „Get-DnsServerQueryResolutionPolicy“ an. Natürlich lassen sich erstellte Richtlinien auch bearbeiten (Set-DnsServerQueryResolutionPolicy) und löschen (Remove-DnsServerQueryResolutionPolicy). Das Anlegen einer solchen Richtlinie ist generell recht einfach.

DNS-Server führen die Regeln in der Reihenfolge aus, wie sie mit „Get-DnsServerQueryResolutionPolicy“ angezeigt werden. Durch das Löschen einer Regel mit „Remove-DnsServerQueryResolutionPolicy“ und dem anschließenden Neuerstellen mit „Add-DnsServerQueryResolutionPolicy“ wird eine Richtlinie hintenangestellt. Die Reihenfolge der Ausführung kann auch mit dem Parameter „ThrottleLimit“ festgelegt werden, zum Beispiel mit:

Add-DnsServerQueryResolutionPolicy -ComputerName "Server07" -ThrottleLimit 1

DNS-Richtlinie anlegen

Um eine neue Richtlinie anzulegen, wird zunächst auf dem DNS-Server die PowerShell geöffnet. Danach kann mit „Get-DnsServerQueryResolutionPolicy“ überprüft werden, ob das Modul zur Steuerung der Richtlinien vorhanden ist und welche Richtlinien bereits existieren. Im folgenden Beispiel soll der Server „idm.joos.int“ vor Abfragen aus dem Subnetz 192.168.1.0/255.255.255.0 geschützt werden.

Dazu wird im ersten Schritt ein Subnetz in den Richtlinien angelegt, auf deren Basis die Filterung erfolgen soll. Der Befehl dazu ist:

Add-DnsServerClientSubnet -Name "BlockClients" -IPv4Subnet 192.168.1.0/24 -PassThru

Um sich alle bereits vorhandenen Subnetze anzuzeigen, wir das Cmdlet „Get-DnsServerClientSubnet“ genutzt. Nicht mehr benötigte Subnetze lassen sich mit „Remove-DnsServerClientSubnet“ löschen.

Um das Ergebnis einer Richtlinie zu testen, kann in der PowerShell zunächst die Namensauflösung zu „idm.joos.int“ getestet werden. Hier antwortet der DNS-Server noch wie erwartet. Danach wird die Richtlinie erstellt, der DNS-Cache gelöscht und danach die Abfrage neu gestartet. Hier sollte der DNS-Server die Abfrage blockieren. Die Auflösung erfolgt mit:

Resolve-DnsName idm.joos.int

Danach wird der DNS-Cache mit dem Cmdlet „Clear-DnsClientCache“ gelöscht. Anschließend wird die neue Richtlinie erstellt, die aus dem erstellten Subnetz heraus den Zugriff auf den Server idm.joos.int blockiert:

Add-DnsServerQueryResolutionPolicy -Name "Block_IDM" -Action IGNORE -ClientSubnet "EQ,BlockClients" -Fqdn "EQ,idm.joos.int" -PassThru

Um den kompletten Zugriff auf eine Domäne zu sperren, kann der folgende Befehl verwendet werden:

Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicy" -Action IGNORE -FQDN "EQ,*.contoso.com" -PassThru | Format-List *

Bei der Auswahl der blockierten Subnetze und der blockierten Server, muss vor dem Namen noch ein Operator verwendet werden. Der Operator „EQ“ legt fest, dass der Eintrag identisch sein muss, wie der angegebene Name.

Es gibt noch die Möglichkeit „NE“ (not equal) oder „OR“ (oder) zu verwenden. Danach wird die Richtlinie angezeigt. Wird jetzt von einem Client die Abfrage mit „Resolve-DnsName“ erneut gestartet, blockiert der DNS-Server die Abfrage.

Mit „IGNORE“ werden alle Abfragen blockiert, der Parameter „ALLOW“ erlaubt die Abfrage aus dem angelegten Subnetz und blockiert alle anderen Abfragen. Dadurch können unproblematisch eigene Regeln erstellt werden, die sehr flexibel funktionieren.

Regeln für mehrere Server umsetzen

Die Regeln werden allerdings nicht im Active Directory gespeichert oder an einer anderen, zentralen Stelle. Für jeden DNS-Server, der eine solche Richtlinie nutzen soll, muss eine eigene Richtlinie erstellt werden.

Um eine Regel für mehrere Server umzusetzen, kann eine Richtlinie aus einem Server ausgelesen und auf einem anderen angelegt werden. Die Cmdlets unterstützen den Parameter „-Computername“. Das ist beim Auslesen und Anlegen einer neuen Richtlinie natürlich eine Hilfe. Dazu werden die Richtlinien auf einem Server in eine Variable gespeichert und auf Basis der Variablen die Richtlinie auf einem anderen Server neu eingelesen. Das Anlegen kann anschließend wieder mit „Get-DnsServerQueryResolutionPolicy“ überprüft werden.

$Policies = Get-DnsServerQueryResolutionPolicy -ComputerName "dc01"$Policies | Add-DnsServerQueryResolutionPolicy -ComputerName "dc02" -ThrottleLimit 1

Ebenfalls möglich ist das generelle Blockieren für eine Domäne für alle Subnetze. So können Abfragen zeitweilig komplett deaktiviert werden:

Add-DnsServerQueryResolutionPolicy -Name "BlackholePolicy" -Action IGNORE -FQDN "EQ,*.contoso.com" -PassThru | Format-List *

DNS-over-HTTPs im Praxiseinsatz

Zusammen mit den Richtlinien zum Schutz vor DNS-Angriffen spielt in Windows Server 2022 auch DoH eine wichtige Rolle. Bei der verschlüsselten Verbindung zwischen DNS-Client und DNS-Server werden die Abfragen vor Angriffen geschützt. Allerdings unterstützt allerdings Windows Server 2022, genauso wie Windows 11, nur die Verwendung als DNS-Client für DoH. Windows Server 2022 selbst ist leider noch nicht in der Lage als sicherer DoH-Server zum Einsatz zu kommen.

Die Einstellungen für DNS-over-HTTPS (DoH) dazu sind in der Einstellungs-App von Windows Server 2022 und Windows 11 im Bereich „Netzwerk und Internet“ bei „Ethernet“ zu finden.

In den Einstellungen des Netzwerkadapters sind die Optionen bei „DNS-Einstellungen“ und „Bearbeiten“ verfügbar. Wenn im Client ein DNS-Server eingetragen ist, der die Technik unterstützt, lassen sich die mit HTTPs verschlüsselten Zugriffe aktivieren. An dieser Stelle gibt es drei verschiedene Einstellungen zur Verfügung, um DNS-Clients sicher mit DNS-Servern zu verbinden:

  • Nur unverschlüsselt: Der Client mit Windows 11 und Windows Server 2022 nutzen keine Verschlüsselung der DNS-Abfragen mit DoH.
  • Nur verschlüsselt: Der Client nutzt ausschließlich verschlüsselte Verbindungen für die Auflösung mit DNS. Steht keine sichere Verbindung zum DNS-Server bereit, findet keine Namensauflösung statt.
  • Verschlüsselt bevorzugt, unverschlüsselt zulässig: Ermöglicht die Verwendung von verschlüsselten Verbindungen, nutzt aber bei Bedarf auch unverschlüsselte Verbindungen.

Die Optionen werden erst aktiviert, wenn der angegebene DNS-Server die Funktionen unterstützt. Beispiele dafür sind die Server mit den IP-Adressen 1.1.1.1 und 8.8.8.8. In der PowerShell von Windows Server 2022 und Windows 11 lassen sich die aktuell unterstützen DNS-Server mit dem Cmdlet „Get-DNSClientDohServerAddress“ anzeigen. Neue Server können mit dem folgenden Befehl hinzugefügt werden:

Add-DnsClientDohServerAddress -ServerAddress <IP-Adresse> -DohTemplate <Vorlage> -AllowFallbackToUdp $False -AutoUpgrade $True

Die Tabelle der Namensauflösungsrichtlinien (NRPT) kann verwendet werden, um Abfragen an einen DNS-Namensraum so zu konfigurieren, dass ein bestimmter DNS-Server verwendet wird. In diesem Fall lassen sich für bestimmte Abfragen verschlüsselte DNS-Verbindungen nutzen.

Die Einstellungen lassen sich auch über Gruppenrichtlinien definieren. Die Anpassungen dazu sind bei „Computerkonfiguration\Administrative Vorlagen\Netzwerk\DNS-Client“ mit „Namensauflösung von DNS über HTTP (DoH) konfigurieren“ verfügbar.

Wenn Admins DoH in Windows Server 2022 oder Windows 11 über Gruppenrichtlinien aktivieren, aber die verwendeten DNS-Server kein DoH unterstützen, funktioniert die Namensauflösung nicht mehr. Hier sollte also sorgfältig vorgegangen werden.

Mehr Powershell-Tipps!

(ID:47539856)