DNS
Domain Name System
💬❗ Was ist DNS?
- Wofür wird es benötigt?
- Wie funktioniert es?
-
Verzeichnisdienst
- Client-/Server-Architektur
- hiearchisch, verteilter
-
„Telefonbuch“ des Internets
-
insbesondere für Auflösung von Domainnamen zu IP-Adressen
- …und andere Informationen begrenzter Datenmenge…
- die dezentral bereitgestellt werden
- die gecached werden dürfen
- …und andere Informationen begrenzter Datenmenge…
-
ersetztergänzt/etc/hosts(bzw.C:\Windows\System32\drivers\etc\hosts)
📝❗ FiSi AP2 Analyse Sommer 2023 Aufgabe 4
📝❗ FiSi AP2 Analyse Winter 2021 Aufgabe 4b-c
Inhaltsverzeichnis
- URI, URL, Domänennamen, Zonen
- Arten von Nameservern
- Resource Records und RR-Typen
- Sicherheit
- Vertiefende Informationen
URI, URL, Domänennamen, Zonen
URI
Uniform (Universal) Resource Identifier
Werden insbesondere im WWW für Hyperlinks verwendet
❓❗ Was sind URIs?
URIs sind einheitlich aufgebaut:
URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ]
(RFC 3986)
URL, URN
flowchart TB URI --> URL URI --> URN URI --> data
Uniform Resource Locator identifizieren Ressourcen mittels Adresse
- Schema entspricht dem „primären Zugriffsmechanismus“ z.B.
http,https,ftp,file,mailto,tel - z.B.
https://de.wikipedia.org/wiki/Uniform_Resource_Locator,git://github.com/johannesloetzsch/LF10b.git
Uniform Resource Name identifiziert inhaltsgleiche Ressourcen anhand eines dauerhaft gültigen, eindeutigen Namens
- Schema sollte „urn“ sein
- Namensräume werden von IANA vergeben
- z.B. urn:ISBN:978-3-14-220108-5
Data-URLs
identifizierten Ressourcen direkt über ihren Inhalt
- müssen die Kodierung benennen
- z.B.
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAXUlEQVQY073MvQ2CUADE8R90tOzgFkzgMg7gLs7BCDYmhD0sTV7F2Vi8EF5nuOpyH3/+rW4fhMvPDh3r4Stcwxxe4dbEh3co4ROedddXowmlyrYwtoj3sIRHc3S+vgySGhd7StmKAAAAAElFTkSuQmCC
FQDN
Fully Qualified Domain Name
- werden im
hier-partvon URIs verwendet - enden auf einen Punkt (der aber oft weggelassen wird)
DNS-Zonen
Teil des Domänenbaums, für den ein Nameserver zuständig ist
Root-Server, Root Hint
Arten von Nameservern
❓❗ Wie funktionieren die unterschiedlichen Arten von DNS-Servern?
- Warum ist es oft sinnvoll, einen vom ISP bereitgestellten Recursive Resolver und im eigenen Netz nur Forwarding Nameserver zu verwenden?
Beispiel: Was ist alles nötig, um eine IP für de.wikipedia.org. zu erhalten?
flowchart LR
classDef forwarding fill:#ccf
classDef recursive fill:#afa
classDef authoritative fill:#fc9
subgraph Client[localhost]
client_app{{Anwendung}}
client_os{{Betriebssystem}}
client_hosts["/etc/hosts"]
client_ns([Stub Resolver]):::forwarding
client_conf["/etc/resolv.conf\nnameserver 192.168.0.1"]
client_cache[Cache]
client_app -- 1a --> client_os
client_os -- 1b --> client_hosts
client_os -- 1c --> client_ns
client_ns -- 1d --> client_cache
client_ns -- 1e --> client_conf
end
subgraph Router[router.local\n192.168.0.1]
router_ns([Forwarding NS]):::forwarding
router_cache[Cache]
router_ns -- 3 --> router_cache
end
subgraph ISP[ns.isp.com]
isp_ns((Recursive NS)):::recursive
isp_cache[Cache]
isp_root_hint[Root Hint\na.root-servers.net]
isp_ns -- 5,7,9 --> isp_cache
isp_ns -- 6a --> isp_root_hint
end
root[(a.root-servers.net\nNS .\norg. 2756 IN NS a0.org.afilias-nst.info.)]:::authoritative
org[(a0.org.afilias-nst.info\nNS org.\nwikipedia.org. 12831 IN NS ns0.wikimedia.org.)]:::authoritative
wikipedia[(ns0.wikimedia.org\nNS wikipedia.org.\nde.wikipedia.org. 21434 IN CNAME dyna.wikimedia.org.\ndyna.wikimedia.org. 180 IN A 185.15.59.224)]:::authoritative
client_ns -- 2 --> router_ns
router_ns -- 4 --> isp_ns
isp_ns -- 6b --> root
isp_ns -- 8 --> org
isp_ns -- 10 --> wikipedia
6b: Welche Nameserver sind für die Zone `org.` zuständig?
org. 2756 IN NS a0.org.afilias-nst.info.
8: Welche Nameserver sind für die Zone `wikipedia.org.` zuständig?
wikipedia.org. 12831 IN NS ns0.wikimedia.org.
10: Unter welcher IP ist der Host `de.wikipedia.org.` erreichbar?
de.wikipedia.org. 21434 IN CNAME dyna.wikimedia.org.
dyna.wikimedia.org. 180 IN A 185.15.59.224
Authoritative
- Zuständig für eine Zone
- (Hoffentlich) unter Kontrolle des Domaininhabers
Recursive
- Resolved Anfragen rekursiv (Schrittweise vom Root-Server bis zur abgefragten Subdomain)
- fragt für alle Zonen die jeweiligen Authoritativen Nameserver
- Wird von ISPs bereitgestellt. Kann im eigenen Netz betrieben werden.
Forwarding (Caching, Stub-Resolver)
- Macht selbst keine rekursive Namensauflösung
- Antworted aus dem Cache wenn Eintrag vorhanden und nicht älter als TTL
- Wenn Eintrag nicht im Cache vorhanden: Fragt anderen Recursive (oder Forwarding) NS
- Üblicherweise von Routern und Betriebsystemen bereitgestellt.
❓❗ Was muss beachtet werden, wenn lokale Server mittels DNS genutzt werden?
Die Zonen von öffentlichen Domains sind über recursive Abfrage ausgehend von den Root-Servern erreichbar. Für lokale Netze können Authoritative Nameserver betrieben werden, die nicht öffentlich erreichbar sind. Damit Clients diese nutzen können, müssen diese die Nutzung des lokalen DNS-Servers konfigurieren.
📝❗ FiSi AP2 Analyse Sommer 2024 Aufgabe 2b
Resource Records und RR-Typen
Einträge (Zeilen) von Zonendateien
❓❗ Für welche Zwecke werden die folgenden RR-Typen benutzt?
Aufbau und Beispiele:
| name | ttl (Sekunden) | class | type | rdata |
|---|---|---|---|---|
| example.com. | 3600 | IN | A | 172.30.0.7 |
| example.com. | 3600 | IN | AAAA | 2600:1408:ec00:36::1736:7f24 |
| 7.0.30.172.in-addr.arpa. | PTR | example.com. | ||
| www.example.com. | IN | CNAME | example.com | |
| example.org. | IN | DNAME | example.com. | |
| example.com. | NS | nameserver.example.com. | ||
| @ | 3600 | IN | SOA | master.example.com. hostmaster.example.com. ( 2014031700 3600 1800 604800 600 ) |
| example.net. | IN | DNSKEY | ( 257 3 1 AQOW4333ZLdOHLRk+3Xe6RAaCQAOMhAVJu2Txqmk1Kyc13h69/wh1zhDk2jjqxsN6dVAFi16CUoynd7/EfaXdcjL ) | |
| nsf.example.org. | RRSIG | A 1 3 1000 20060616062444 ( 20060517062444 9927 example.org.mMBIXxXU6buN53GWHTPpwEbse4aR2gNI8rgsg9/x1We23K3gkO5DBjFdty27Fj4FMbQzg0uBuv9aFcPaMyILJg== ) | ||
| filiale1.example.org. | DS | 52037 1 1 378929E92D7DA04267EE87E802D75C5CA1B5D280 | ||
| whatever.example.com. | 3600 | IN | TXT | "Hello World" |
| _ldap._tcp.example.com. | 3600 | IN | SRV | 10 0 389 ldap01.example.com. |
| example.com. | 1800 | IN | MX | mailserver.example.com. |
| example.com. | 3600 | IN | SPF | "v=spf1 mx -all" |
| mail._domainkey.example.com | 6000 | IN | TXT | v=DKIM1; p=76E629F05F70 9EF665853333 EEC3F5ADE69A 2362BECE4065 8267AB2FC3CB 6CBE |
💻❗ Wo ist auf Unix-Servern konfiguriert, wie die Namensauflösung stattfinden soll?
cat /etc/resolv.conf /etc/hosts
💻❗ Wie kann man zum debuggen die IP-Adresse(n) zu einem Domainnamen auflösen?
dig afbb.de📝❗ FiSi AP2 Analyse Sommer 2024 Aufgabe 3ab
💻 Wie können für eine Domain alle Records recursiv resolved werden?
dig any afbb.de +trace
Sicherheit
💬❗ Diskutieren Sie die Sicherheit von DNS im Bezug auf
- Verfügbarkeit, Zensurresistenz
- Integrität, Authentizität
- Vertraulichkeit, Anonymität
Welche Gefahren gehen jeweils aus von
- DNS-Server
- Clients
- ISP
- Dritten
- Innerhalb der gleichen Broadcastdomain
- Außerhalb des eigenen Netzes
Wie kann man sich schützen? Welche Grenzen haben diese Maßnahmen?
DNS-Spoofing
- Angreifer kann sich mittels DHCP-Spoofing als DNS-Server des Netzwerks ausgeben
- Angreifer kann sich mittels IP-Spoofing als DNS-Server ausgeben
- Muss Antworten schneller als der korrekte DNS-Server ausliefern
=> kann mit DoS auf DNS-Server kombiniert werden
- Muss Antworten schneller als der korrekte DNS-Server ausliefern
DNS-Cache-Poisoning
- Angreifer kann DNS-Anfragen an Recursive oder Forwarding DNS-Server stellen und passende Antworten auf benötigte Rückfragen an nächsten Server selbst senden
- Wenn DNS-Server die Authentizität/Integrität der gefälschten Antworten nicht prüft:
- DNS-Server schreibt die manipulierten Daten in den Cache und liefern diese bis zur TTL bei künftigen Anfragen aus
Maßnahmen
DNSSEC
Domain Name System Security Extensions
- Authentizität wird mittels digitalen Signaturen abgesichert
DNSKEYResource Record beinhaltet öffentlichen Schlüssel der ZoneRRSIGResource Record enthält Signatur für zugehörigen DNS-Record- Eine Chain of Trust wird aufgebaut, indem in der Parent-Zone
- ein
DS(Delegation Signer) Resource Record mit dem Hash des Schlüssels der Zone abgelegt wird - die Parent-Zone selbst signiert wird
- der oberste Schlüssel der Kette muss dem Client vorab bekannt sein Vertrauensanker
- ein
❗ Vertraulichkeit ist bei DNSSEC nicht vorgesehen. DNS-Daten sind unverschlüsselt!
DNS over TLS (DoT)
DNS over HTTPS (DoH)
- Anwendung fragt DNS-Server direkt anstatt über das Betriebssystem
Vertiefende Informationen
💡💬 Blog-Artikel zu Anfriffsszenario auf DNSSEC
