Was ist ein rekursives DNS?

Bei DNS-Lookups, bei denen Domainnamen mit maschinenlesbaren IP-Adressen abgeglichen werden, kann die Suche auf dem DNS-Baum entweder von einem DNS-Server oder einem Client durchgeführt werden.

Share facebook icon linkedin icon twitter icon email icon

Rekursives DNS

Lernziele

Nach Lektüre dieses Artikels können Sie Folgendes:

  • Rekursives DNS definieren
  • Zwischen rekursiven und iterativen DNS-Abfragen unterscheiden
  • Die Vorteile und Risiken rekursiver DNS-Abfragen

Was ist ein rekursives DNS?

Bei einem rekursiven DNS-Lookup kommuniziert ein DNS-Server mit mehreren anderen DNS-Servern, um eine IP-Adresse zu finden und an den Client zurückzugeben. Dies steht im Gegensatz zu einer iterativen DNS-Anfrage, bei der der Client direkt mit jedem an der Suche beteiligten DNS-Server kommuniziert. Auch wenn das eine sehr technische Definition ist, sollte ein genauerer Blick auf das DNS-System und den Unterschied zwischen Rekursion und Iteration helfen, etwas Licht ins Dunkel zu bringen.

Was ist ein DNS-Server?

Immer wenn ein Benutzer einen Domainnamen (z. B. „cloudflare.com“) in sein Browserfenster eingibt, wird ein DNS-Lookup ausgelöst. Eine Reihe von Remotecomputern, die als DNS-Server bezeichnet werden, ermitteln dann die IP-Adresse für diese Domain und geben sie an den Computer des Benutzers zurück, damit dieser auf die richtige Website zugreifen kann.

Mehrere Arten von DNS-Servern müssen zusammenarbeiten, um einen DNS-Lookup abzuschließen. Ein DNS-Resolver, ein DNS-Stammserver, ein DNS-TLD-Server und ein autoritativer DNS-Nameserver müssen Informationen bereitstellen, um den Lookup abzuschließen. Im Fall von Caching hat einer dieser Server möglicherweise die Antwort auf eine Anfrage während eines vorherigen Lookups gespeichert und kann sie dann aus dem Speicher übermitteln.

Weitere Informationen zur Funktionsweise eines DNS-Lookups finden Sie unter Was ist ein DNS-Server?

Was ist der Unterschied zwischen Rekursion und Iteration?

Rekursion und Iteration sind Begriffe aus der Informatik, die zwei verschiedene Methoden zur Lösung eines Problems beschreiben. Bei der Rekursion ruft sich ein Programm wiederholt auf, bis eine Bedingung erfüllt ist. Während bei der Iteration eine Reihe von Anweisungen wiederholt wird, bis eine Bedingung erfüllt ist. Dieser subtile Unterschied ist schwer zu veranschaulichen, ohne auf Code einzugehen, aber die Hauptsache ist, dass Rekursion eine Lösung ist, die sich immer wieder selbst aufruft.

Stellen Sie sich zum Beispiel vor, dass Jim seine Schlüssel zu Hause verlegt hat und nach einem systematischen Weg sucht, um die Schlüssel zu finden. Eine rekursive Lösung wäre, dass Jim so lange nach seinen Schlüsseln sucht, bis er sie gefunden hat. Jim wird die Suche starten und wenn er seine Schlüssel nicht findet, wird er zu seiner ursprünglichen Anweisung zurückkehren: also weitersuchen, bis die Schlüssel gefunden sind. Eine iterative Lösung wäre, dass Jim fünf Minuten lang einen Raum durchsucht, dann zu seinen Anweisungen zurückkehrt und fünf Minuten lang den nächsten Raum durchsucht und diesen Zyklus fortsetzt, bis er entweder seine Schlüssel gefunden oder die gesamte Liste der Räume abgearbeitet hat.

Ein tiefes Verständnis von Rekursion und Iteration ist nicht erforderlich, um den Unterschied zwischen rekursiven und iterativen DNS-Lookups zu verstehen: Bei einem rekursiven Lookup führt ein DNS-Server die Rekursion durch und fragt andere DNS-Server weiter ab, bis er eine IP-Adresse hat, die er an den Client (häufig das Betriebssystem eines Benutzers) zurückschicken kann. Bei einer iterativen DNS-Abfrage antwortet jede DNS-Abfrage dem Client direkt mit einer Adresse, die ein anderer DNS-Server anfordern soll, und der Client fragt weiter DNS-Server ab, bis einer von ihnen mit der richtigen IP-Adresse für die angegebene Domain antwortet.

Anders ausgedrückt, der Client führt in einer rekursiven DNS-Abfrage eine Form der Delegierung durch. Dem DNS-Resolver wird mitgeteilt: „Hallo, ich brauche die IP-Adresse für diese Domain. Bitte suchen Sie sie und melden Sie sich erst bei mir, wenn Sie die IP-Adresse gefunden haben.“ In einer iterativen Abfrage teilt der Client dem DNS-Resolver mit: „Hallo, ich brauche die IP-Adresse für diese Domain. Bitte teilen Sie mir die Adresse des nächsten DNS-Servers im Suchvorgang mit, damit ich sie selbst nachschlagen kann.“

Was sind die Vorteile von rekursivem DNS?

Rekursive DNS-Abfragen werden im Allgemeinen schneller aufgelöst als iterative Abfragen. Dies liegt am Caching. Ein rekursiver DNS-Server speichert die endgültige Antwort auf jede von ihm ausgeführte Abfrage zwischen und bewahrt diese endgültige Antwort für eine bestimmte Zeitspanne auf (bekannt als Time-To-Live).

Wenn ein rekursiver Resolver eine Abfrage nach einer IP-Adresse empfängt, die sich bereits im Cache befindet, kann er dem Client die zwischengespeicherte Antwort schnell bereitstellen, ohne mit anderen DNS-Servern zu kommunizieren. Das schnelle Bereitstellen von Antworten aus dem Cache ist sehr wahrscheinlich, wenn a) der DNS-Server viele Clients bedient und/oder b) die angeforderte Website sehr beliebt ist.

Was sind die Nachteile von rekursivem DNS?

Leider führt das Zulassen rekursiver DNS-Abfragen auf offenen DNS-Servern zu einer Sicherheitslücke, da Angreifer durch diese Konfiguration DNS Amplification Attacks und DNS Cache Poisoning ausführen können.

Rekursive DNS-Server und DNS Amplification Attacks

Bei einem DNS Amplification Attack verwendet ein Angreifer normalerweise eine Gruppe von Computern (bekannt als Botnetz), um eine große Anzahl von DNS-Abfragen unter Verwendung einer gefälschten IP-Adresse zu senden. Eine gefälschte IP-Adresse ist wie eine gefälschte Absenderadresse. Der Angreifer sendet Anfragen von seiner eigenen IP-Adresse, bittet jedoch um die Antwort an das Opfer. Um den Angriff zu verschärfen, verwendet der Angreifer auch eine Technik namens Amplification (Verstärkung), bei der die gefälschte Anforderung um eine sehr lange Antwort bittet. Der Dienst des Opfers erhält eine Flut langer und unerwünschter DNS-Antworten, die die Server stören oder sogar zum Abstürzen bringen können. Dieser Fall ist eine Art von DDoS-Angriff.

Das ist wie eine Gruppe Jugendlicher, die jemandem einen Streich spielen will. Die Jugendlichen rufen eine Pizzeria an und bestellen jeweils ein Dutzend Pizzen. Doch anstatt ihrer eigenen Adresse geben sie die Adresse eines ahnungslosen Nachbarn an. Das Opfer, das dann einen Strom von großen und unerwünschten Pizzalieferungen erhält, wird wahrscheinlich den ganzen Tag davon gestört werden.

Für diese Art von Angriff wird ein DNS-Server benötigt, der rekursive Abfragen akzeptiert, da die amplifizierten DNS-Pakete Antworten auf rekursive DNS-Abfragen sind.

Rekursive DNS-Server und DNS Cache Poisoning Attacks

Wenn bei einem DNS Cache Poisoning Attack ein rekursiver DNS-Server eine IP-Adresse von einem anderen DNS-Server anfordert, fängt ein Angreifer die Anforderung ab und sendet eine gefälschte Antwort. Dabei handelt sich es sich häufig um die IP-Adresse einer schädlichen Website. Der rekursive DNS-Server sendet dem ursprünglichen Client aber nicht nur diese IP-Adresse, sondern der Server speichert die Antwort auch in seinem Cache. Jeder Benutzer, der eine IP für denselben Domainnamen anfordert, wird an die schädliche Website gesendet. Wenn es sich um einen beliebten Domainnamen und einen beliebten DNS-Resolver handelt, kann dieser Angriff Tausende von Benutzern betreffen.

In einer iterativen DNS-Abfrage fragt der Client jeden DNS-Server direkt nach der Antwort. Selbst wenn ein Angreifer eine gefälschte Antwort auf die Abfrage sendet, betrifft dies nur einen einzelnen Client, was für den Angreifer normalerweise Zeitverschwendung ist.

So unterstützen Sie schnelle und sichere DNS-Abfragen

Der DNS-Dienst von Cloudflare löst DNS-Abfragen im Allgemeinen schneller als DNS von Wettbewerbern oder das öffentliche DNS. Darüber hinaus unterstützt Cloudflare DNS DNSSEC, ein strenges Sicherheitsprotokoll zum Schutz von DNS-Servern und -Abfragen.