Účel a kontext: proč řešit bezpečnost DNS
Domain Name System (DNS) je kritická infrastruktura, která mapuje 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 otrava mezipaměti (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 ochranu soukromí) a provozní disciplínou.
Hrozby: spoofing, otrava mezipaměti a další útoky na DNS
- DNS spoofing: podvržení odpovědí tak, aby resolver přijal falešná data (např. podvržené záznamy A/AAAA).
- Otrava mezipaměti (cache poisoning): injektování škodlivých záznamů do mezipaměti rekurzivního resolveru, které vede k dlouhodobému přesměrování dotazů.
- Útoky mimo cestu (off-path): zneužití předvídatelného ID transakce, portu a fragmentace k injektování odpovědi bez možnosti sledovat provoz.
- Útoky na cestě (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 rozsáhlých odpovědí (DNSSEC, ANY) k zahlcení oběti.
- NXNS a přeposílání: zneužití přesměrování na mnoho delegovaných jmenných serverů za účelem vyčerpání zdrojů resolveru.
- DNS rebinding: obcházení zásad stejného původu prohlížeče prostřednictvím dynamicky měněných odpovědí.
Základy DNS a důvěryhodnost dat
DNS je hierarchický distribuovaný systém. Autoritativní servery uchovávají zóny, rekurzivní resolvery rekurzivně vyhledávají odpovědi a ukládají je do mezipaměti. Bez kryptografické validace se resolver spoléhá 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 (kořenová zóna → TLD → doména).
DNSSEC: princip, záznamy a řetězec důvěry
- Podpisy RRSIG: každý RRset (např. záznamy A) má kryptografický podpis RRSIG vytvořený soukromým klíčem zóny.
- DNSKEY: veřejné klíče zóny publikované v DNS; obvykle se dělí na KSK (Key Signing Key) a ZSK (Zone Signing Key).
- Záznam DS: hash KSK publikovaný v nadřazené zóně (např. u registru TLD), který vytváří vazbu nadřazená zóna → podřízená zóna a buduje řetězec důvěry.
- NSEC/NSEC3: kryptografické důkazy o neexistenci jména nebo typu. NSEC3 s opt-out a solí omezuje enumeraci zóny.
- CDS/CDNSKEY: záznamy pro automatizaci publikování a rotace DS u registru (delegovaná správa důvěry).
Volba algoritmů a velikostí klíčů
- RSA (alg. 8/RSASHA256): běžný algoritmus, ale vytváří větší podpisy; doporučená délka je 2048 bitů (ZSK) a 2048–3072 bitů (KSK).
- ECDSA P-256 (alg. 13) a Ed25519 (alg. 15): moderní algoritmy s kratšími podpisy, rychlejší validací a menší fragmentací odpovědí.
- Upřednostňujte ECDSA/Ed25519, abyste minimalizovali velikost paketů a nároky na přenos.
Provozní model: KSK/ZSK, podepisování a rotace klíčů
- Rozdělení rolí: ZSK podepisuje RRsety, KSK podepisuje RRset DNSKEY; DS uchovává nadřazená zóna.
- Rotace klíčů: provádějte ji pravidelně (např. každých 6–12 měsíců u ZSK, každé 1–2 roky u KSK) a zajistěte bezpečný přechod (předběžné zveřejnění → podepsání → aktualizace DS → odstranění starého klíče).
- Zabezpečení klíčů: ukládejte soukromé klíče v HSM nebo s odděleným přístupem a auditní stopou.
- Automatizace: využívejte CDS/CDNSKEY a protokoly registrátorů k bezvýpadkové rotaci DS.
Validující resolvery: jak ověřovat DNSSEC
- Trust anchor: kořenový klíč pravidelně aktualizujte; validátor (BIND, Unbound, Knot Resolver) musí udržovat aktuální kořenový klíč KSK.
- Stavy validace: Secure, Insecure, Bogus, Indeterminate. Odpovědi se stavem Bogus odmítejte.
- Agresivní využití NSEC: validátor může syntetizovat negativní odpovědi z NSEC/NSEC3 a snížit zátěž autoritativních serverů.
Zpevnění ochrany proti spoofingu (mimo DNSSEC)
- Randomizace ID a portu: vysoká entropie (16bitové ID + 16bitový port) snižuje úspěšnost injektování mimo cestu.
- Randomizace velikosti písmen 0x20: zachování či změna velikosti písmen v dotazu přidává další entropii (tam, kde je to bezpečné).
- DNS Cookies: transakční cookies (RFC 7873/9018) pomáhají omezovat spoofing a rozlišovat legitimní klienty.
- Minimalizace QNAME: dotazování podle hierarchie s odhalením co nejmenšího množství informací (zlepšuje soukromí a zmenšuje plochu pro útok).
- NXDOMAIN cut a serve-stale: zlepšují práci s negativní mezipamětí a dostupnost při výpadcích.
EDNS(0), velikost odpovědí a fragmentace
DNSSEC zvětšuje odpovědi kvůli záznamům RRSIG/DNSKEY, což zvyšuje riziko fragmentace IP paketů (a zranitelnosti vůči injektování). Doporučení:
- Omezte vyrovnávací paměť EDNS (např. na 1232 bajtů) a u rozsáhlých odpovědí upřednostňujte přechod na TCP.
- Upřednostňujte algoritmy s kratšími podpisy (ECDSA/Ed25519).
- Zapněte minimal responses a vyhýbejte se dotazům typu ANY.
Autoritativní zóny: správná konfigurace a publikování DNSSEC
- Podepisování zóny: používejte průběžné podepisování (inline signing) a hlídejte expiraci RRSIG (správné TTL a rozptyl časování).
- Publikování DS: po nasazení nebo rotaci KSK zajistěte včasné nahrání DS u registru.
- NSEC vs. NSEC3: pro veřejné zóny se obvykle používá NSEC3 se solí; u menších nebo necitlivých zón je NSEC jednodušší a efektivnější.
- Anycast: distribuujte autoritativní servery, abyste zvýšili odolnost vůči DoS a snížili latenci.
- TSIG pro zabezpečení AXFR/IXFR a dynamických aktualizací; v případě potřeby použijte ACL a split-horizon.
Rekurzivní resolvery: bezpečné nasazení
- Nezpřístupňujte rekurzi veřejnosti; omezte ji na interní rozsahy IP adres.
- Zapněte validaci DNSSEC, minimalizaci QNAME, DNS Cookies, RRL (Response Rate Limiting) a vhodné limity souběžných dotazů.
- Nastavte rozumné limity TTL a negativní mezipaměť podle RFC 2308; u kritických záznamů se vyvarujte příliš dlouhých TTL (usnadní rotaci klíčů).
- Monitorujte míru odpovědí Bogus, rozsáhlé odpovědi, časování, chybovost serverů a latenci vůči TLD/kořenové zóně.
Soukromí vs. integrita: DoT/DoH a jejich vztah k DNSSEC
- DNS over TLS (DoT) a DNS over HTTPS (DoH) šifrují přenos mezi klientem a resolverem, čímž 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 + validace DNSSEC.
Moderní typy RR a DNSSEC
- CAA: omezuje vydávání TLS certifikátů – podpis CAA zvyšuje odolnost vůči podvržení.
- DANE/TLSA: propojuje TLS certifikáty s DNSSEC; vyžaduje širokou podporu validace na straně klientů.
- SVCB/HTTPS: moderní směrování klientů ke službám a nastavování parametrů; díky DNSSEC eliminujete riziko podvržení alternativních koncových bodů.
Bezpečnostní a provozní osvědčené postupy
- Nasaďte DNSSEC s oddělením rolí KSK/ZSK, upřednostňujte ECDSA/Ed25519, zachovávejte malou vyrovnávací paměť EDNS a zajistěte přechod na TCP.
- Zapněte minimalizaci QNAME, DNS Cookies, randomizaci 0x20 a RRL.
- Omezte rekurzi, udržujte software aktuální, sledujte CVE a instalujte bezpečnostní záplaty.
- Zaveďte Anycast a geografickou diverzifikaci autoritativních serverů; oddělte jejich role (autoritativní server vs. rekurzivní resolver).
- Pravidelně testujte validaci (např. u domén s chybně publikovaným DS) a rotaci klíčů.
Procesní a compliance aspekty
- Správa klíčů: zdokumentované postupy, zapojení více osob do klíčových operací (SoD), auditní protokoly, HSM a pravidelné testy zotavení po havárii.
- Reakce na incidenty: scénáře pro chybně nasazený DS, expirované záznamy RRSIG a kompromitovaný klíč; plány návratu k předchozímu stavu.
- Soulad s předpisy: požadavky regulací (např. NIS2) na dostupnost a integritu; evidence změn a verzí zón.
Časté chyby a jak se jim vyhnout
- Publikování DS bez dostupného odpovídajícího DNSKEY → odpovědi Bogus a výpadky.
- Příliš dlouhá expirace RRSIG a TTL znemožňující rychlou opravu nebo rotaci.
- Rozsáhlé odpovědi bez přechodu na TCP a s vysokou vyrovnávací pamětí EDNS → fragmentace a injektování.
- Otevřená rekurze dostupná z internetu → amplifikace a otrava mezipaměti.
Referenční návrh nasazení
- Autoritativní vrstva: uzly anycast, inline signing, NSEC3 se solí, TSIG pro AXFR/IXFR, monitorování expirace RRSIG a latence.
- Registr/registrátor: automatizace DS prostřednictvím CDS/CDNSKEY, pravidelné ověřování řetězce důvěry.
- Rekurze: validující resolver (Unbound/Knot Resolver/BIND) s minimalizací QNAME, cookies, RRL, EDNS 1232, přechodem na TCP a serve-stale.
- Klient: DoT/DoH k internímu validujícímu resolveru, případně lokální validace (stub s DNSSEC).
- Provoz: panel metrik (míra odpovědí bogus, SERVFAIL, rozsáhlé odpovědi, RTT), upozornění, pravidelné testování selhání klíčů a obnovy.
Závěr
Bezpečnost DNS vyžaduje kombinaci kryptografické integrity (DNSSEC), ochrany přenosu (DoT/DoH), technik proti spoofingu (randomizace, cookies), pečlivé práce s velikostí odpovědí a disciplinovaného provozu. DNSSEC je klíčovým stavebním kamenem: ověřuje, že data skutečně pocházejí od autoritativního zdroje a nebyla cestou změněna. Teprve v kombinaci s provozními a architektonickými opatřeními poskytuje DNS odolnou ochranu proti spoofingu, útokům typu poisoning a celé třídě rizik, která by jinak mohla ohrozit dostupnost i důvěryhodnost vašich služeb.
