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
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-part
von 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
DNSKEY
Resource Record beinhaltet öffentlichen Schlüssel der ZoneRRSIG
Resource 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