DNS (Domain Name System) ist ein [[netzwerkprotokolle|Netzwerkprotokoll]] und grundlegender Bestandteil des Internets, der dazu dient, Hostnamen (wie z.B. www.example.com) in IP-Adressen (wie z.B. 192.0.2.1) umzuwandeln. Es handelt sich um eine verteilte Datenbank, die es ermöglicht, dass Computer und andere Geräte im Internet miteinander kommunizieren können. Port 53 ([[UDP]] und [[TCP]]) ist für DNS reserviert. Reverse DNS IP Lookup [[https://search.dnslytics.com/search?d=domains&q=8.8.8.8]] Möchte man zum Beispiel die Webseite www.google.com besuchen, dann fragt der Browser einen DNS-Server, der in der IP-Konfiguration hinterlegt ist. Das ist in der Regel der Router des Internet-Zugangs. Je nach dem, ob die DNS-Anfrage beantwortet werden kann oder nicht, wird eine Kette weiterer DNS-Server befragt, bis die Anfrage positiv beantwortet und eine IP-Adresse an den Browser zurück geliefert werden kann. **Forward DNS** Ein Forward-Eintrag im DNS ordnet einem Hostnamen (z. B. "host.example.com") eine IP-Adresse zu. Das bedeutet, wenn jemand versucht, den Hostnamen aufzulösen, liefert der DNS-Server die zugehörige IP-Adresse. **Reverse-DNS** Ein Reverse-DNS-Eintrag ist ein DNS-Eintrag, der eine IP-Adresse einem Hostnamen zuordnet. Anders als bei den üblichen DNS-Einträgen, bei denen Hostnamen in IP-Adressen aufgelöst werden, dienen Reverse-DNS-Einträge dazu, IP-Adressen in Hostnamen umzukehren. **Rekursiver DNS** ist ein DNS der Einträge zwischenspeichert um die Root Server zu entlasten. **Multicast DNS** ([[mdns|mDNS]]) ist ein Verfahren zur lokalen Namensauflösung ohne DNS Server. **Zone** [[bind9|Bind9]] ist die Referenz-Implementierung eines DNS Server unter [[linux|Linux]]. Siehe auch [[dnsspoof|DNSSpoof]] oder [[dnschef|DNSChef]], [[fierce]], [[dnswalk]], [[dnsrecon]]. =====Funktion===== Das DNS-System besteht aus einer Hierarchie von DNS-Servern, die in verschiedene Kategorien eingeteilt sind. Die oberste Ebene wird durch die Root-Server repräsentiert. Darunter gibt es die Top-Level-Domain (TLD)-Server, die für spezifische Domains zuständig sind, wie z.B. .com, .org, .net usw. Innerhalb jeder TLD gibt es dann weitere DNS-Server, die für einzelne Domains oder Subdomains verantwortlich sind. Wenn ein Benutzer eine Website aufruft oder eine andere DNS-Anfrage stellt, beginnt der lokale DNS-Resolver des Benutzers mit der Suche nach der entsprechenden IP-Adresse. Der lokale DNS-Resolver ist normalerweise in der Netzwerkinfrastruktur des Internetdienstanbieters des Benutzers vorhanden. Der lokale DNS-Resolver fragt zuerst den Caching-Server an, ob dieser die angeforderte Information bereits in seinem Speicher hat. Wenn nicht, wird die Anfrage an einen oder mehrere DNS-Root-Server weitergeleitet. Die Root-Server geben dann Informationen über die zuständigen TLD-Server für die angeforderte Domain zurück. Der lokale DNS-Resolver stellt dann eine Anfrage an den zuständigen TLD-Server, der Informationen über die DNS-Server für die angeforderte Domain enthält. Der lokale DNS-Resolver stellt schließlich eine Anfrage an den autoritativen DNS-Server der angeforderten Domain, um die gewünschte IP-Adresse zu erhalten. Sobald der lokale DNS-Resolver die IP-Adresse erhalten hat, speichert er diese für eine gewisse Zeit in seinem Cache, um zukünftige Anfragen schneller beantworten zu können. Dies reduziert die Notwendigkeit, die gesamte Abfragehierarchie erneut durchlaufen zu müssen. {{dns-resolve-process.png}} =====DNS Einträge===== ^Name^Beschreibung^ |A|An A record shows the IPv4 address for a specific hostname or domain.| |AAAA|AAAA record, just like A record, point to the IPv6 address for a domain.| |CNAME|A "canoncial name" points a domain name (an alias) to another domain. In a CNAME record, the alias doesn't point to an IP address. And the domain name that the alias points to is the canonical name.| |NS|A nameserver (NS) record specifies the authoritative DNS server for a domain. In other words, the NS record helps point to where internet applications like a web browser can find the IP address for a domain name. Usually, multiple nameservers are specified for a domain.| |MX|A mail exchange (MX) record, is a DNS record type that shows where emails for a domain should be routed to. In other words, an MX record makes it possible to direct emails to a mail server. You can have multiple entries by specifiing a priority for each record.| |SOA|SOA stands for "start of authority." It's an important DNS record type that stores admin information about a domain. This information includes the email address of the admin and when the domain was last updated.| |TXT|TXT stands for "text," and this record type lets the owner of a domain store text values in the DNS. Several services use this record to verify ownership of a domain.| |PTR|A pointer (PTR) record provides a domain name for reverse lookup. It's the opposite of an A record as it provides the domain name linked to an IP address instead of the IP address for a domain.| |SRV|Using this DNS record type, it's possible to store the IP address and port for specific services.| |CERT|This record type stores public keys certificates.| |DCHID|This DNS record type stores information related to dynamic host configuration protocol (DHCP).| |DNAME|The full meaning of DNAME is "delegation name." This record type works very similarly to CNAME; however, it points all the subdomains for the alias to the canonical domain name. That is, pointing the DNAME for secondsite.com to example.com will also apply to staff.secondsite.com and any other subdomain.| =====Root Server===== Es besteht aus einer hierarchischen Struktur, die aus mehreren Ebenen von Nameservern besteht. Es gibt 13 [[https://de.wikipedia.org/wiki/Root-Nameserver|Root Nameserver]], die fortlaufend nach dem Schema .root-servers.net benannt sind. Alle Root-Nameserver setzen Anycast zur Lastverteilung ein, sodass die 13 Adressen von tatsächlich über 1600 Servern an verschiedenen Orten der Welt bedient werden. =====Recursive DNS===== Ein Recursive DNS (Domain Name System) bezieht sich auf einen Typ von DNS-Server, der Anfragen von Clients entgegennimmt und diese Anfragen rekursiv auflöst, indem er die erforderlichen DNS-Informationen von anderen DNS-Servern abruft. Wenn ein Client, beispielsweise ein Webbrowser, eine Anfrage an den DNS-Server sendet, übernimmt ein rekursiver DNS-Server die Verantwortung, die Auflösung der angeforderten Domain durchzuführen. * Der rekursive DNS-Server empfängt die Anfrage des Clients, der nach der IP-Adresse einer bestimmten Domain fragt. * Der Server überprüft zuerst seinen eigenen Cache, um zu sehen, ob er bereits über die erforderlichen Informationen verfügt. Wenn die Informationen vorhanden sind, gibt der Server die Antwort direkt an den Client zurück. * Falls die Informationen nicht im Cache vorhanden sind, beginnt der Server den Auflösungsprozess. Zunächst fragt er bei den Root-Nameservern nach, um herauszufinden, welcher Nameserver für die angeforderte Top-Level-Domain (TLD) zuständig ist. * Der Server setzt dann die Anfrage an den entsprechenden TLD-Nameserver fort und fragt nach dem autoritativen Nameserver für die angeforderte Domain. * Sobald der rekursive DNS-Server den autoritativen Nameserver für die Domain identifiziert hat, sendet er eine Anfrage an diesen Nameserver und erhält die gewünschte IP-Adresse. * Der Server speichert die erhaltenen Informationen in seinem Cache, um zukünftige Anfragen zu beschleunigen, und gibt die IP-Adresse an den Client zurück. * Der Client kann dann die Verbindung zur angeforderten Domain herstellen, z. B. eine Webseite abrufen. =====Zone===== ====Master-Zone==== Eine Master-Zone ist die ursprüngliche Quelle für DNS-Daten. In einer Master-Zone werden die DNS-Einträge für eine bestimmte Domäne oder Subdomäne verwaltet. Änderungen an den DNS-Einträgen werden in der Master-Zone vorgenommen. Diese Zone ist die autoritative Quelle für die DNS-Daten und wird als "primär" bezeichnet. ====Slave-Zone==== Eine Slave-Zone (oder Secondary-Zone) ist eine Kopie der Master-Zone. Slave-Zonen werden von Master-Zonen repliziert, um Redundanz und Lastenausgleich zu erreichen. Slave-Zonen dienen als Backup und können Abfragen von DNS-Anfragen bearbeiten, falls der primäre DNS-Server (Master) nicht verfügbar ist. Slave-Zonen sind schreibgeschützt und können nur Lesezugriffe verarbeiten. =====Zustand===== ====Authoritative DNS==== Ein DNS-Server wird als **authoritativer Nameserver** bezeichnet, wenn er die offiziellen und vertrauenswürdigen Informationen für eine bestimmte Domain enthält. Das bedeutet, dass der Nameserver als Quelle der Wahrheit für die DNS-Einträge dieser Domain betrachtet wird. Der autoritative Nameserver ist für die Verwaltung und Aktualisierung der DNS-Records einer Domain verantwortlich. Wenn ein rekursiver DNS-Server eine Anfrage für eine Domain erhält, wendet er sich an den autoritativen Nameserver dieser Domain, um die erforderlichen DNS-Informationen zu erhalten. ====Non Authoritative DNS==== Im Gegensatz dazu ist ein DNS-Server **nicht authoritativ**, wenn er die angefragten DNS-Informationen nicht als Quelle der Wahrheit bereitstellen kann. Dies kann der Fall sein, wenn der DNS-Server die angeforderten Informationen nicht im Cache hat und nicht der autoritative Nameserver für die angeforderte Domain ist. In diesem Fall muss der nicht authoritative DNS-Server die Anfrage an einen autoritativen Nameserver weiterleiten, um die gewünschten Informationen zu erhalten. =====Forwarding===== DNS Forwarding (Weiterleitung) ist ein Mechanismus, der in DNS-Servern verwendet wird, um DNS-Anfragen, die der Server nicht selbst beantworten kann, an einen anderen DNS-Server weiterzuleiten. Ein Forwarding-Server kann DNS-Antworten zwischenspeichern (caching), sodass wiederholte Anfragen schneller beantwortet werden können. Dies reduziert die Latenzzeit und die Belastung des Netzwerks. =====Zone Transfer===== Ein Zonentransfer ist ein Mechanismus, der in DNS (Domain Name System) verwendet wird, um DNS-Daten zwischen DNS-Servern zu synchronisieren. Zonentransfers sollten nur zu vertrauenswürdigen DNS-Servern zugelassen werden. Verwenden von Protokollen wie TSIG (Transaction Signature) zur Authentifizierung und Sicherstellung der Integrität und Authentizität der übertragenen DNS-Daten. Siehe [[DNSWalk]] ====AXFR (Full Zone Transfer)==== Ein vollständiger Zonentransfer überträgt die gesamte Zone vom primären zum sekundären DNS-Server. Dies wird normalerweise nur bei der ersten Einrichtung oder bei größeren Änderungen verwendet. ====IXFR (Incremental Zone Transfer)==== Ein inkrementeller Zonentransfer überträgt nur die Änderungen (z.B. hinzugefügte, geänderte oder gelöschte Datensätze) seit dem letzten Zonentransfer. Dies reduziert die Netzwerkbelastung und beschleunigt den Aktualisierungsprozess. =====Sicherheit===== DNS Angriffe sind nicht selten. Einige der gängigen DNS-Sicherheitsmechanismen sind: * DNSSEC (DNS Security Extensions): DNSSEC stellt Mechanismen zur Verfügung, um die Integrität und Authentizität von DNS-Daten zu gewährleisten. Es verwendet digitale Signaturen, um sicherzustellen, dass die erhaltenen DNS-Daten nicht verfälscht wurden. * DNS-over-HTTPS (DoH): DoH ermöglicht die Verschlüsselung von DNS-Anfragen und -Antworten über das HTTPS-Protokoll. Dadurch wird verhindert, dass Dritte den Inhalt der DNS-Kommunikation abfangen oder modifizieren können. * DNS [[Firewall]]: DNS-Firewalls überwachen den DNS-Verkehr und blockieren schädliche oder unerwünschte DNS-Anfragen. Sie können zum Schutz vor DNS-basierten Angriffen wie DNS-Amplification oder DNS-Cache-Poisoning eingesetzt werden. =====Scavening/Alterung===== [[https://www.escde.net/blog/dns-aging-scavenging|Overview]] =====Angriffe===== Angreifer könnten einen DNS Tunnel einrichten, um Daten durch DNS Abfragen zu exfiltrieren oder Befehle zu erhalten. Tools wie [[iodine]] oder [[dnscat2]] können dafür verwendet werden. DNS Anfragen/Antworten lassen sich auch spoofen (MiTM) siehe auch [[dsniff]] =====Links===== * [[https://youtu.be/3KCWrFLfM8w|Grundlagen]] * [[https://www.youtube.com/watch?v=Ah5wBBRArKA|DNS Cybersec - Eli the Conputer Guy]]