Der DNS Socketpool ermöglicht es einem DNS Server beim Ausgeben von DNS Abfragen einen Random Quell-Port einzusetzen. Wenn der DNS Dienst gestartet wird, wählt der Server einen Quell-Port aus einem Pool von Sockets aus. Somit wird kein statischer bzw. vorherzusehender Port genutzt, sondern ein zufälliger Port. Diese Technik macht es einem Angreifer noch schwieriger den DNS Cache zu manipulieren. Für eine erfolgreiche Manipulation müsste der Angreifern nun den Port, die DNS Abfrage sowie die zufällige Transaction-ID erraten. Den Socket-Pool fragen wir mit dnscmd /info /socketpoolsize ab. Der Pool lässt sich mit dem Befehl dnscmd /config /socketpoolsize 5000 vergrößern.
Über die Powershell:
DNS Cache-Sperre: Mit der DNS Cache Sperre bestimmen wir wann Informationen im DNS Cache überschrieben werden dürfen. Wenn ein DNS Server auf eine rekursive Anfrage antwortet, speichert er die Information so ab, dass diese für die nächste Anfrage schneller zur Verfügung stehen. Ein DNS Server speichert Informationen nicht ewig zwischen, denn die Die TTL bestimmt wie lange die Daten vorgehalten werden. Dieses Beispiel zeigt einen Wert von 100. Das bedeutet, dass die zwischengespeicherte Information (DNS-Eintrag) bis zum Ablauf ihrer Zeit gültig ist und nicht aktualisiert bzw. überschrieben werden kann.
An diesem Eintrag sehen wir eine verbleibende Gültigkeit von 58:35 Minuten. Informationen im Cache können vor Ablauf ihrer TTL grundsätzlich überschrieben, und zwar dann wenn eine Aktualisierung an der Ressource vorliegt. Wenn es jetzt ein Angreifer schafft diesen DNS Eintrag zu manipulieren dann gelangen wir nicht mehr auf die Seite des Windows Papst, sondern auf eine manipulierte Seite des Angreifers. Zum Beispiel durch einen IP-Change für den Eintrag www.der-windowspapst.de. Mit der Cache Sperre verhindern wir ein Überschreiben der zwischengespeicherten Informationen für die Dauer ihrer Gültigkeit. Das trägt dazu dabei, dass ein Angreifer den Datenverkehr nicht umleiten kann, denn die zwischengespeicherten Informationen haben eine feste Gültigkeit (Schreibschutz), siehe Bild oben. Natürlich lässt sich der Wert anpassen. Was aber dafür sorgt, das dem Angreifer ein Zeitfenster für eine Manipulation eingeräumt wird. Set-DnsServerCache LockingPercent 90
Response Rate Limiting RRL: Mit dieser Funktion haben wir die Möglichkeit DOS (Denial of Services) zu verringern bestenfalls zu verhindern. DoS Angriffe haben das Ziel, bereitgestellte Services außer Betrieb zu setzen. Dazu wird auf dem Server eine Überlastung herbeigeführt. Bei einem Exchange Server z.b. durch eine Überflutung von E-Mails bei einem Netzwerk durch Datenpakete. Bei diesen Angriffen geht es nicht um Datenspionage oder dem Ausspähen von Daten, sondern um den herbeigeführten Zusammenbruch eines Service. Dabei kommen verschiedene Vorgehensweisen zum Einsatz, wie z.b. Mailbombing, Broadcaststurm, Smurf-Attacke, Distributed Denial of Service, Advances Persistent Denial of Service. Damit ein Clientsystem im Netzwerk nicht zum Gehilfen eines Angreifers wird, können wir dieses durch die Aktivierung von RRL vermeiden oder deutlich verringern. Der Modus ist im Default deaktiviert. Mit GetDnsServerRRL lesen wir die aktuelle Konfiguration aus. Aktuell wäre der Client in der Lage maximal 5 Antworten zu empfangen. Mit Set-DNSServerRRL -Mode LogOnly aktivieren wir nur das Logging. Mit Set-DNSServerRRL -Mode Enable aktivieren wir die Funktion. DNS RRL lässt für einen bestimmten IP-Adressbereich nur eine bestimmte Anzahl identischer DNS Antworten. Wird der eingestellte Schwellwert überschritten, verwirft RRL die Antwort fordert den Resolver über das Truncated Bit (TC) aber trotzdem auf, die Anfrage noch einmal per TCP zu stellen. Da bei reflektierende DNS Angriffen die Quelladresse verfälscht ist, kommt eine Verbindung per TCP nie zu Stande. Empfehlung: Set-DNSServerRRL -LeakRate 5 Set-DNSServerRRL -MaximumResponsesPerWindow 512
Get-DNSServer dnscmd /info /socketpoolsize dnscmd /config /socketpoolsize 5000 Dnscmd /Info /SocketPoolExcludedPortRanges net stop dns net start dns Set-DnsServerCache LockingPercent 100 # Response Rate Limiting (DOS Angriffe verringern) Get-DNSServerRRL Set-DNSServerRRL -Mode LogOnly Set-DNSServerRRL -Mode Enable Set-DNSServerRRL -LeakRate 5 Set-DNSServerRRL -MaximumResponsesPerWindow 512 Set-DNSServerResponseRateLimiting -MaximumResponsesPerWindow Add-DnsServerResponseRateLimitingExceptionList Add-DnsServerResponseRateLimitingExceptionlist -Name "Ethernet0" -ServerInterfaceIP "EQ,171.18.32.31" Get-DnsServerResponseRateLimitingExceptionList Set-DNSServerRecursionScope Add-DNSServerRecursionScope Add-DNSServerQueryResolutionPolicy Set-DnsServerRecursionScope -Name -EnableRecursion $false Add-DNSServerRecursionScope -Name "Internes Netzwerk" -EnableRecursion $True Add-DnsServerQueryResolutionPolicy -Name "RecursionControl" -Action Allow - ApplyOnRecursion -RecursionScope "interneclients" -ServerInterfaceIP "eq,172.18.32.31"