Ich habe einige Zeit damit verbracht, mich mit diesem Thema zu befassen, und kann anscheinend keine genaue Antwort finden. Daher bin ich ziemlich sicher, dass es sich nicht um ein Duplikat handelt, und obwohl meine Frage auf einem Sicherheitsbedürfnis basiert, denke ich, dass es immer noch sicher ist Fragen Sie hier, aber lassen Sie es mich wissen, wenn ich die Sicherheitsgemeinschaft bewegen muss.
Verwenden DNS-Abfragen im Wesentlichen jemals TCP (wenn ja, in welchem Szenario könnte dies auftreten)? Wieder spreche ich nur über Fragen. Können sie über TCP reisen? Wenn Domains nur maximal 253 Bytes lang sind und UDP-Pakete bis zu 512 Bytes lang sind, werden Abfragen dann nicht immer als UDP ausgeführt? Ich dachte nicht, dass eine auflösbare Abfrage groß genug sein könnte, um die Verwendung von TCP zu erfordern. Wenn ein DNS-Server jemals eine Anfrage für eine Domain mit mehr als 253 Bytes erhalten hat, würde der Server diese löschen / nicht versuchen, sie aufzulösen? Ich bin mir sicher, dass ich hier einige falsche Annahmen getroffen habe.
In einigen Fällen arbeite ich mit der Sicherheitsgruppe zusammen, um DNS-Abfragen in ihr Sicherheitsüberwachungstool zu integrieren. Aus verschiedenen Gründen haben wir beschlossen, diesen Datenverkehr über die Standard-Paketerfassung auf DNS-Servern und Domänencontrollern zu erfassen. Die Hauptanforderung besteht darin, alle DNS-Abfragen zu erfassen, damit festgestellt werden kann, welcher Client versucht hat, eine bestimmte Domäne aufzulösen. Basierend auf dieser Anforderung geht es uns nicht darum, DNS-Antworten oder andere verkehrsähnliche Zonentransfers zu erfassen, was auch darauf zurückzuführen ist, dass wir das Protokollvolumen so weit wie möglich begrenzen müssen. Daher planen wir, nur DNS-Abfragen zu erfassen, die für den DNS-Server bestimmt sind und über UDP gesendet werden. Für mehr Kontext (eine Art von Fragenspektrum, das sich hier einschleicht) wurde jetzt die Frage aufgeworfen, ob wir die Sicherheit erweitern müssen. ' s Sichtbarkeit, damit sie Aktivitäten wie verdeckte Kanäle überwachen können, die über DNS ausgeführt werden (was die Erfassung von DNS-Antworten und anschließendem TCP-Verkehr erforderlich machen würde). Aber selbst in einem solchen Szenario dachte ich, dass jeder ausgehende DNS-Verkehr in Form von Suchanfragen erfolgt und dass diese immer über UDP erfolgen, auch wenn sie von einer böswilligen Quelle stammen (aufgrund meiner Überlegungen im ersten Absatz). Das wirft also einige zusätzliche Fragen auf:
Würden wir nicht mindestens die Hälfte des Gesprächs mit dem von mir skizzierten Ansatz aufzeichnen? Oder würde ein Client jemals DNS-Datenverkehr senden, der nicht in Form einer Abfrage vorliegt? (Vielleicht wie eine Art Antwort auf die Antwort eines DNS-Servers, und am Ende geht es vielleicht über TCP aus)
Können DNS-Abfragen für die Verwendung von TCP geändert werden? Würde ein DNS-Server eine über TCP eingehende DNS-Abfrage akzeptieren und darauf antworten?
Ich bin mir nicht sicher, ob dies relevant ist, aber wir beschränken DNS-Anfragen auf autorisierte DNS-Server und blockieren den gesamten ausgehenden Datenverkehr über Port 53. Ich bin definitiv ein Anfänger. Es tut mir leid, wenn meine Frage nicht konform ist, und lassen Sie es mich wissen wie soll ich das modifizieren.
quelle
Antworten:
Normale DNS-Abfragen verwenden UDP-Port 53, aber längere Abfragen (> 512 Oktette) erhalten eine "abgeschnittene" Antwort, die zu einer TCP-53-Konversation führt, um das Senden / Empfangen der gesamten Abfrage zu erleichtern. Der DNS-Server stellt auch eine Verbindung zu Port 53 her, die Abfrage selbst stammt jedoch von einem zufälligen Port mit hoher Nummer (49152 oder höher), der an Port 53 gesendet wurde. Die Antwort wird von Port 53 an denselben Port zurückgesendet.
Von DNS verwendete Netzwerkports | Microsoft Docs
Wenn Sie also vorhaben, DNS-Abfragen aus Ihrem Netzwerk zu überprüfen, müssen Sie die oben genannten Punkte berücksichtigen.
Beachten Sie, dass DNS bei Nicht-Lookup-Datenverkehr auch Zonenübertragungen (Abfragetyp AXFR) verwendet, um andere DNS-Server mit neuen Einträgen zu aktualisieren. Ein Mann in der Mitte des Angriffs kann mit einer solchen Übertragung beginnen, indem er einen primären Nameserver unter DDOS setzt, sodass er zu beschäftigt ist, um auf eine sekundäre Anforderung nach aktualisierten Datensätzen zu antworten. Der Hacker fälscht dann dieselbe Primärdatenbank, um "vergiftete" Datensätze an die Sekundärdatenbank weiterzuleiten, die beliebte DNS-Domänen an gefährdete Hosts umleiten.
Daher sollte bei Ihrer Sicherheitsüberprüfung der Abfragetyp AXFR besonders berücksichtigt werden, und Ihre DNS-Systeme sollten nur AXFR-Austausche von bestimmten IP-Adressen akzeptieren.
SANS Institute InfoSec Lesesaal | sans.org
quelle
Dies begann als Kommentar zu Georges Antwort, aber es dauerte lange. Das Gesamtbild ist etwas kompliziert, da man etwas Geschichte verstehen muss.
RFC 1035 forderte ursprünglich ein Limit von 512 Bytes, um eine UDP-Fragmentierung zu vermeiden. Fragmentierte UDP-Datagramme und TCP wurden als letzte Option ausgewählt, um den Aufwand für DNS-Transaktionen zu minimieren. Zonentransfers verwenden immer TCP, da Zonentransfers von Natur aus mehr als 512 Byte beanspruchen. (Es wäre eine Verschwendung von Bandbreite, überhaupt mit UDP zu beginnen.)
TCP-Wiederholungsversuche beim Abschneiden werden weitgehend unterstützt, da sie seit 1989 in RFC 1123 angegeben sind .
EDNS (0) ist in RFC 6891 (2013) definiert und existierte zuvor als vorgeschlagener Standard aus dem Jahr 1999 . Es definiert einen Mechanismus, mit dem Clients und Server UDP-Größen größer als 512 aushandeln können. Aufgrund der Neuheit von EDNS (0) treffen viele Hardware-Appliances Annahmen über die Struktur von DNS-Paketen, die dazu führen, dass kompatible Pakete verworfen werden. Der häufigste Grund ist die Annahme, dass DNS-Nachrichten mit mehr als 512 Byte ungültig sind, aber dies ist eine von mehreren.
Wenn wir das in die beobachteten Verhaltensweisen aufteilen:
Sie sollten auch bedenken, dass RFC 7766 die Wiederverwendung von Verbindungen über TCP ermöglicht und dass Query Pipelining über TCP in der Natur auftreten kann. Einige Tools erkennen keine DNS-Abfragen, die über die ersten in einer TCP-Sitzung festgestellten hinausgehen. Ein Beispiel hierfür ist dnscap.
quelle
Es gibt RFC 7766, DNS-Transport über TCP - Implementierungsanforderungen .
quelle
INTERNET STANDARD
RFC lautet tools.ietf.org/html/rfc1034 . Sie zitieren aPROPOSED STANDARD
, um TCP zu benötigen.Sie sollten TCP / 53 in keine Richtung filtern. Beispielsweise können
nsupdate
Abfragen TCP verwenden, sobald die Anforderung zu groß ist (was schnell passieren kann). Daher sollten Sie UDP und TCP für Port 53 (in IPv4 und V6!) In alle Richtungen fließen lassen.Außerdem wird immer mehr an DNS über TLS gearbeitet, sodass TCP in beide Richtungen benötigt wird. Siehe RFC7858.
quelle