Zu Begin des Internet gab es ein(!) großes File, in dem alle
Hostnamen mit ihren zugehörigen IP-Adressen gespeichert waren. Dieses File
wurde durch das Network Information Center (NIC) verwaltet und per FTP
im Internet verteilt.
Durch das starke Wachstum des Internet mußte eine andere Lösung zur
Bereitstellung dieser Informationen gefunden werden. Aus diesem Grund
wurde DNS entwickelt.
DNS stellt eine verteilte Datenbank zur Verwaltung von Hostnamen und
IP-Adressen dar. Das DNS-System hat folgende drei Hauptkomponenten:
Der Domain-Name-Space und die Resource-Records sind in einer Baumstruktur organisiert. Jeder Knoten und jedes ,,Blatt`` des Domain-Name-Space enthalten einen Datensatz (Resource-Record), der Informationen über eine Domain oder einen Host enthält. In Tabelle 2.5 ist der Inhalt eines Resource-Records aufgelistet.
|
Name-Server sind Programme, die den Domain-Name-Space und die zugehörigen Resource-Records verwalten. Ein Name-Server kann sich jeden beliebigen Teil des DNS-Baumes in seinem Cache-Speicher holen, aber normalerweise speichert ein bestimmter Name-Server nur die Teilmenge des DNS-Baumes für die er AUTHORITY-Name-Server ist. Das bedeutet, jeder Name-Sever ist für einen bestimmten Teilbereich des DNS-Baumes zuständig. Außerdem speichert der Name-Server noch Zeiger (Pointer) auf andere Name-Server, die benutzt werden, wenn eine Name-Server Information angefragt wurde, die nicht von dem lokalen Server beantwortet werden kann. Die Name-Server AUTHORITATIVE-Informationen sind nochmals in sogenannte ZONEs unterteilt. Diese ZONE-Files können automatisch an andere Name-Server verteilt werden, die als zusätzliche Server für eine ZONE eingetragen sind.
Resolver sind Programme, die Informationen von Name-Servern anfordern, wenn ein Clientprogramm diese benötigt. Der Resolver fragt erst den lokalen Name-Server und wenn dieser die Anfrage nicht beantworten kann, wird einer der anderen Name-Server gefragt, auf die die oben erwähnten Pointer zeigen. Das Resolver-Programm ist normalerweise eine Systemroutine, die direkt von Clientprogrammen benutzt werden kann. Abbildung 2.12 stellt die Struktur einer DNS-Anfrage dar.
Für jede dieser drei Komponenten stellt sich das Domain-System wie folgt dar:
Der Zugriff auf das Domain-Name-System erfolgt durch einen Programmaufruf, der von dem lokalen Resolver durchgeführt wird. Der Domain-Name-Space besteht aus einem einzigen Baum und der User kann Informationen von jedem Teil des Baumes abfragen.
Für das Resolver-Programm besteht das Domain-System aus einer unbekannten Anzahl von Name-Servern. Jeder Name-Server speichert Daten von einem oder mehreren Teilen des Domain-Baumes, aber der Resolver sieht die einzelnen Datenbanken als statisch an.
Für einen Name-Server besteht das Domain-System aus einzelnen lokalen Datensätzen, den ZONEN. Ein Name-Server hat lokale Kopien von einigen Zone-Files. Name-Server müssen diese periodisch aktualisieren (refresh). Dies geschieht durch periodisches Einlesen der lokalen Zone-Files und durch Kopieren von Zone-Files von anderen Name-Servern, dies wird als ZONE-Transfer bezeichnet.
Von DNS gehen verschiedene Bedrohungen aus:
Ein Angreifer könnte versuchen, den Teil des DNS-Baumes, der Hostnamen in IP-Adressen umsetzt (forward-resolving), so zu manipulieren, daß falsche IP-Adressen zurückgeliefert werden. Dadurch könnte ein Hacker erreichen, daß der Name eines vertrauten Systems in seine IP-Adresse umgesetzt wird. Auch der umgekehrte Weg ist denkbar: durch Manipulation des inversen Teiles des DNS-Baummes (reverse-resolving) wird der IP-Adresse des Hackers der Hostname eines seinem Zielsystem vertrauten Systems zugeordnet. Wenn dies gelingt, kann ein Angreifer alle Dienste nutzen, die sich zur Authentifikation auf IP-Adressen verlassen (z.B. rlogin siehe Abschitt 2.18).
Name-Server speichern DNS-Antworten in einem Cache-Speicher zwischen, um unnötige Anfragen zu vermeiden. Oft prüfen Name-Server aber nicht nach, ob es zu einem Antwortpaket auch eine Anfrage gab. Dadurch ist es einem Anfgreifer möglich, den Cache-Speicher eines Name-Servers mit falschen Informationen zu füllen. Dies kann zur Vorbereitung weiterer Angriffe sehr nützlich sein.
DNS ist eine reichhaltige Quelle für Informationen, die bei der Vorbereitung
weiterer Attacken sehr hilfreich sind. Durch reverse DNS-Anfragen kann
ein Angreifer den gesamten Adreßraum eines Netzes durchsuchen, und dadurch
einen Überblick über lohnende Angriffsziele erlangen.
Noch gefährlicher ist ein kombinierter Angriff auf DNS und
Routingmechanismen: der Angreifer beantwortet alle Requests an den
DNS-Server, Namen in IP-Adressen umzusetzen, mit der IP-Adresse eines zuvor
bereits gekaperten Hosts. Dadurch kann der Angreifer die gesamte
Kommunikation ausspähen und z.B. Passworte sammeln [fwstud].
Eine weitere Methode um DNS Informationen zu entlocken, ist die Anwendung
des DNS-Befehls, der einen Zonen-Transfer bewirkt. Durch rekursives
Anwenden dieses Kommandos kann ein Angreifer die Daten des gesamten
Name-Space erhalten. Die Authentisierung für dieses Kommando erfolgt
über IP-Adressen. Diese sind aber relativ leicht zu fälschen.
Bei den Programmen, die DNS implementiert haben, wurden immer wieder schwerwiegende Fehler gefunden, die einem Angreifer im schlimmsten Fall das Eindringen in das System ermöglicht haben. Eine bekannte Implementierung von DNS ist bind.