Ein "offener DNS-Resolver" ist ein DNS-Server, der bereit ist, rekursive DNS-Lookups für alle im Internet aufzulösen. Dies ähnelt in etwa einem offenen SMTP-Relay, da böswillige Dritte aufgrund der fehlenden Authentifizierung ihre Nutzdaten mithilfe Ihrer ungesicherten Geräte weitergeben können. Bei offenen SMTP-Relays besteht das Problem darin, dass sie Spam weiterleiten. Bei offenen DNS-Resolvern besteht das Problem darin, dass sie einen Denial-of-Service-Angriff zulassen, der als DNS Amplification Attack bezeichnet wird.
Die Funktionsweise dieses Angriffs ist recht einfach: Da Ihr Server rekursive DNS-Abfragen von jedermann auflöst, kann ein Angreifer dazu führen, dass er an einem DDoS teilnimmt, indem er Ihrem Server eine rekursive DNS-Abfrage sendet, die eine große Datenmenge zurückgibt, die viel größer ist als das ursprüngliche DNS-Anforderungspaket. Indem sie ihre IP-Adresse fälschen, leiten sie diesen zusätzlichen Datenverkehr an die Computer ihres Opfers anstatt an ihre eigenen, und natürlich stellen sie so viele Anfragen wie möglich an Ihren Server und an jedes andere offene DNS Resolver, die sie finden können. Auf diese Weise kann jemand mit einer relativ kleinen Pipe einen Denial-of-Service-Angriff "verstärken", indem er die gesamte Bandbreite seiner Pipe nutzt, um ein viel größeres Verkehrsvolumen auf seine Opfer zu lenken.
ArsTechnica hat einen anständigen Artikel über den jüngsten DNS Amplification DDoS-Angriff gegen Spamhaus verfasst und ist eine kurze Lektüre wert, um die Grundlagen (und ein gutes Bild der Verstärkung) zu erhalten.
Der einfachste Weg, Ihr System vor Missbrauch zu schützen, besteht darin, die Adressen, nach denen Ihr Server rekursiv sucht, auf Ihre lokalen Subnetze zu beschränken. (Die Einzelheiten hängen natürlich davon ab, welchen DNS-Server Sie verwenden.)
Wenn ich beispielsweise BIND 9 verwenden und einfach die DNS-Rekursion von externen Adressen verhindern wollte, würde ich in meiner Konfiguration den folgenden Code verwenden:
options {
directory "/var/named/master";
allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; 172.16.0.0/12; };
Diese Codezeile weist meinen BIND-Server an, nur rekursive DNS-Anforderungen für die lokale Loopback-Adresse (die ich auf den lokalen Loopback-Block setzen könnte / sollte, die ganze / 8) und die 3 privaten IPv4-Adressräume zu verarbeiten.
Für Windows Server 2012, das Sie verwenden, haben Sie die folgenden Optionen.
1. Trennen Sie Ihren DNS-Server von Ihrem IIS-Server.
- Zumindest in einer perfekten Welt gibt es keinen Grund, DNS auf derselben Box wie IIS auszuführen.
- Stellen Sie DNS auf eine interne Box, die nicht über NAT verfügt, damit die Außenwelt nicht darauf zugreifen kann, und lassen Sie IIS auf der nach außen gerichteten Box, auf die der Rest der Welt zugreifen kann. Sie können Dual-Homing- oder Firewall-Regeln verwenden, um von Ihrem IIS-Server aus selektiv den Zugriff auf Ihren DNS-Server zuzulassen.
2. Blockieren Sie externe DNS-Anforderungen mit einer Firewall, z. B. der integrierten Windows-Firewall.
- Zu meiner Überraschung können Sie mit Windows DNS nicht die Adressen einschränken, auf die rekursive DNS-Anforderungen berücksichtigt werden. Dies ist also die von Microsoft empfohlene Methode.
-
- Wählen Sie die DNS-Regeln (TCP und UDP) aus, gehen Sie zum
Remote IP address
Abschnitt und fügen Sie die in Ihrem LAN verwendeten Subnetze sowie alle öffentlich zugänglichen IP-Adressen von Servern hinzu, die Zugriff auf Active Directory benötigen. Wie im BIND-Beispiel sind private IPv4-Adressräume 127.0.0.0/8
10.0.0.0/8
192.168.0.0/16
und 172.16.0.0/12
.
- Ich bin mir ehrlich gesagt nicht sicher, welche Auswirkungen dies auf Ihre Umgebung haben wird, da Sie nicht wirklich angegeben haben, wie DNS und AD in Ihrer Umgebung konfiguriert sind, und dementsprechend ist dies die letzte Option.
-
- Öffnen Sie den DNS-Manager.
- Klicken Sie in der Konsolenstruktur mit der rechten Maustaste auf den entsprechenden DNS-Server und klicken Sie dann auf Eigenschaften.
- Wo?
- DNS / entsprechender DNS-Server
- Klicken Sie auf die Registerkarte Erweitert.
- Aktivieren Sie in den Serveroptionen das Kontrollkästchen Rekursion deaktivieren, und klicken Sie dann auf OK.
- Da wir eine Umgebung mit mehreren Gesamtstrukturen haben und dazu bedingte Weiterleitungen verwenden, werde ich dieses Kontrollkästchen nicht aktivieren. Könnte auch für Sie von Bedeutung sein.