Bezpečnost DNS: DNSSEC a ochrana proti podvržení odpovědí

Bezpečnost DNS: DNSSEC a ochrana proti spoofingu

Úč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í

  1. Autoritativní vrstva: uzly anycast, inline signing, NSEC3 se solí, TSIG pro AXFR/IXFR, monitorování expirace RRSIG a latence.
  2. Registr/registrátor: automatizace DS prostřednictvím CDS/CDNSKEY, pravidelné ověřování řetězce důvěry.
  3. Rekurze: validující resolver (Unbound/Knot Resolver/BIND) s minimalizací QNAME, cookies, RRL, EDNS 1232, přechodem na TCP a serve-stale.
  4. Klient: DoT/DoH k internímu validujícímu resolveru, případně lokální validace (stub s DNSSEC).
  5. 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.