Účel a kontext: proč řešit bezpečnost DNS
Domain Name System (DNS) je kritická infrastruktura mapující doménová jména na IP adresy a další zdroje. Jeho původní návrh nepočítal s integritou ani ověřováním původu odpovědí, což umožňuje útoky typu spoofing a cache poisoning. DNSSEC přidává kryptografické podepisování dat a řetězec důvěry, čímž umožňuje ověřit autenticitu odpovědí. Správně navržená obrana kombinuje DNSSEC s dalšími protiopatřeními (randomizace, cookies, omezení fragmentace, RRL, DoT/DoH pro soukromí) a provozní disciplínou.
Hrozby: spoofing, cache poisoning a další útoky na DNS
- DNS spoofing: podvržení odpovědí tak, aby resolver akceptoval falešná data (např. podvržené A/AAAA záznamy).
- Cache poisoning: injekce škodlivých záznamů do cache rekurzivního resolveru, vedoucí k dlouhodobému přesměrování dotazů.
- Off-path útoky: zneužití předvídatelného ID transakce, portu a fragmentace k injekci odpovědi bez viditelnosti provozu.
- On-path útoky (MITM): modifikace odpovědí během přenosu, např. v nedůvěryhodných sítích.
- Amplifikace a DoS: zneužití otevřených rekurzorů a velkých odpovědí (DNSSEC, ANY) k zahlcení obětí.
- NXNS a relaying: zneužití přesměrování na mnoho delegovaných jmenných serverů pro vyčerpání zdrojů resolveru.
- DNS rebinding: obcházení stejnopůvodnostních politik prohlížeče přes dynamicky měněné odpovědi.
Základy DNS a důvěryhodnost dat
DNS je hierarchický, distribuovaný systém. Autoritativní servery drží zóny, rekurzivní resolvery rekurzivně vyhledávají odpovědi a kešují je. Bez kryptografické validace spoléhá resolver na „důvěru v síť“, což je v dnešním prostředí nedostatečné. DNSSEC rozšiřuje DNS o digitální podpisy jednotlivých RRsetů a řetězec důvěry (root → TLD → doména).
DNSSEC: princip, záznamy a řetězec důvěry
- Podpisy RRSIG: každý RRset (např. A záznamy) má kryptografický podpis RRSIG vytvořený soukromým klíčem zóny.
- DNSKEY: veřejné klíče zóny publikované v DNS; typicky rozdělené na KSK (Key Signing Key) a ZSK (Zone Signing Key).
- DS záznam: hash KSK publikovaný v nadřazené zóně (např. u registru TLD), který vytváří vazbu parent → child a buduje řetězec důvěry.
- NSEC/NSEC3: kryptografické důkazy neexistence jména nebo typu. NSEC3 s opt-out a salt omezuje enumeraci zóny.
- CDS/CDNSKEY: záznamy pro automatizaci publikace/rotace DS u registru (delegovaná správa důvěry).
Volba algoritmů a velikostí klíčů
- RSA (alg. 8/RSASHA256): běžný, ale s většími podpisy; doporučena délka 2048 bitů (ZSK) a 2048–3072 bitů (KSK).
- ECDSA P-256 (alg. 13) a Ed25519 (alg. 15): moderní, kratší podpisy, rychlejší validace, menší fragmentace odpovědí.
- Preferujte ECDSA/Ed25519 pro minimalizaci velikosti paketů a nároků na přenos.
Provozní model: KSK/ZSK, podepisování a rotace klíčů
- Oddělení rolí: ZSK podepisuje RRsety, KSK podepisuje DNSKEY RRset; DS drží rodičovská zóna.
- Rotace klíčů: provádějte pravidelně (např. 6–12 měsíců pro ZSK, 1–2 roky pro KSK) s bezpečným přechodem (prepublish → sign → DS update → remove old).
- Bezpečnost klíčů: ukládejte privátní klíče v HSM nebo s odděleným přístupem a auditní stopou.
- Automatizace: využijte CDS/CDNSKEY a protokoly u registrátorů pro bezvýpadkovou rotaci DS.
Validující resolvery: jak ověřovat DNSSEC
- Anchor: kořenový klíč (trust anchor) pravidelně aktualizujte; validátor (BIND, Unbound, Knot Resolver) musí udržovat aktuální root KSK.
- Stavy validace: Secure, Insecure, Bogus, Indeterminate. Odmítejte Bogus odpovědi.
- Aggressive use of NSEC: validátor může syntetizovat negativní odpovědi z NSEC/NSEC3 a snižovat zátěž autoritativních serverů.
Hardening proti spoofingu (mimo DNSSEC)
- Randomizace ID a portu: vysoká entropie (16bit ID + 16bit port) snižuje úspěšnost off-path injekcí.
- 0x20 case randomization: zachování/alternace velikosti písmen v dotazu pro dodatečnou entropii (tam, kde je to bezpečné).
- DNS Cookies: transakční cookies (RFC 7873/9018) pro mitigaci spoofingu a odlišení legitimních klientů.
- QNAME minimization: dotazování po hierarchii s minimem odhalených informací (zlepšení soukromí a snížení útokové plochy).
- NXDOMAIN cut a serve-stale: lepší zacházení s negativní cache a dostupností při výpadcích.
EDNS(0), velikost odpovědí a fragmentace
DNSSEC zvětšuje odpovědi kvůli RRSIG/DNSKEY, což zvyšuje riziko IP fragmentace (zranitelnost pro injection). Doporučení:
- Omezte EDNS buffer (např. 1232 bajtů) a preferujte TCP fallback při velkých odpovědích.
- Preferujte algoritmy s kratšími podpisy (ECDSA/Ed25519).
- Zapněte minimal responses a vyhýbejte se tipu ANY.
Autoritativní zóny: správná konfigurace a publikace DNSSEC
- Signování zóny: používejte kontinuální podepisování (inline signing) a hlídejte expiraci RRSIG (správné TTL a jitter).
- DS publikace: po nasazení/rotaci KSK zajistěte včasné nahrání DS u registru.
- NSEC vs. NSEC3: pro veřejné zóny obvykle NSEC3 se salt; u menších nebo necitlivých zón je NSEC jednodušší a efektivnější.
- Anycast: distribuujte autoritativní servery pro odolnost vůči DoS a zkrácení latence.
- TSIG pro zabezpečení AXFR/IXFR a dynamických aktualizací; aplikujte ACL a split-horizon, pokud je nutné.
Rekurzivní resolvery: bezpečné nasazení
- Neotevírejte rekurzi veřejně; omezte na interní IP rozsahy.
- Zapněte DNSSEC validaci, QNAME minimization, DNS Cookies, RRL (Response Rate Limiting) a vhodné limity současných dotazů.
- Nastavte rozumné TTL limity a negativní cache dle RFC 2308; vyvarujte se příliš dlouhých TTL u kritických záznamů (usnadní rotace klíčů).
- Monitorujte Bogus rate, velké odpovědi, časování, chybovost serverů a latence k TLD/kořeni.
Soukromí vs. integrita: DoT/DoH a jejich vztah k DNSSEC
- DNS over TLS (DoT) a DNS over HTTPS (DoH) šifrují transport mezi klientem a resolverem, chrání soukromí a integritu přenosu, ale neověřují pravost autoritativních dat.
- DNSSEC ověřuje autenticitu a integritu dat na aplikační vrstvě. Optimální je kombinace: DoT/DoH + DNSSEC validace.
Moderní RR typy a DNSSEC
- CAA: omezení vydávání TLS certifikátů – podpis CAA zvyšuje odolnost proti podvržení.
- DANE/TLSA: vazba TLS certifikátů na DNSSEC; vyžaduje širokou validaci u klientů.
- SVCB/HTTPS: moderní směrování klientů na služby a parametry; s DNSSEC eliminujete riziko podvržení alternativních koncových bodů.
Bezpečnostní a provozní best practices
- Nasazujte DNSSEC se separací KSK/ZSK, preferujte ECDSA/Ed25519, držte malý EDNS buffer a TCP fallback.
- Zapněte QNAME minimization, DNS Cookies, 0x20 randomizaci a RRL.
- Omezte rekurzi, udržujte aktuální software, sledujte CVE a aplikujte bezpečnostní záplaty.
- Proveďte Anycast a geografickou diversifikaci autoritativních serverů; oddělte role (auth vs. recursor).
- Pravidelně testujte validaci (např. domény s chybně publikovaným DS) a rotace klíčů.
Procesní a compliance aspekty
- Správa klíčů: dokumentované postupy, více osob při klíčových operacích (SoD), auditní logy, HSM, pravidelné DR testy.
- Incident response: scénáře pro chybně nasazený DS, expirované RRSIGy, kompromitovaný klíč; rollback plány.
- Soulad: požadavky regulací (např. NIS2) na dostupnost a integritu; evidence změn a verze zón.
Časté chyby a jak se jim vyhnout
- Publikace DS bez dostupného odpovídajícího DNSKEY → Bogus odpovědi a výpadky.
- Příliš dlouhá expirace RRSIG a TTL znemožňující rychlou opravu/rotaci.
- Velké odpovědi bez TCP fallback a s vysokým EDNS bufferem → fragmentace a injekce.
- Otevřená rekurze dostupná z internetu → amplifikace a cache poisoning.
Referenční návrh nasazení
- Autoritativní vrstva: anycast uzly, inline signing, NSEC3 se salt, TSIG pro AXFR/IXFR, monitoring expirace RRSIG a latence.
- Registr/registrátor: automatizace DS přes CDS/CDNSKEY, pravidelné ověřování řetězce důvěry.
- Rekurze: validující resolver (Unbound/Knot Resolver/BIND) s QNAME minimization, cookies, RRL, EDNS 1232, TCP fallback, serve-stale.
- Klient: DoT/DoH k internímu validujícímu resolveru, případně lokální validace (stub s DNSSEC).
- Provoz: dashboard metrik (bogus rate, SERVFAIL, veľké odpovědi, RTT), alerting, pravidelný test selhání klíčů a obnovy.
Závěr
Bezpečnost DNS vyžaduje kombinaci kryptografické integrity (DNSSEC), transportních ochran (DoT/DoH), protispoofingových technik (randomizace, cookies), pečlivé práce s velikostí odpovědí a disciplinovaného provozu. DNSSEC je klíčový stavební kámen: ověřuje, že data skutečně pocházejí od autoritativního zdroje a nebyla po cestě změněna. Teprve v souhře s provozními a architektonickými opatřeními poskytuje DNS odolnou obranu proti spoofingu, poisoning útokům a celé třídě rizik, která by jinak mohla ohrozit dostupnost i důvěryhodnost vašich služeb.