Modul 8 · 8.1
DNSSEC v obyčejné řeči
Modul 8: Bezpečnost a řešení problémů · Doba čtení: 11 min
Cíl lekce: Po této lekci dokážete běžnými slovy vysvětlit, co DNSSEC chrání, jak funguje řetězec důvěry a proč se to může pokazit při převodu domény.
Klíčové pojmy: DNSSEC, podpis (RRSIG), klíč (DNSKEY), DS záznam, řetězec důvěry, validující resolver, SERVFAIL
Problém: jak poznáte, že je odpověď pravá?
V modulu 1 jste viděli, že resolver klade řadu dotazů: na root, na server TLD a na autoritativní jmenný server. Odpověď, která se vrátí, se bere jako důvěryhodná a uloží se do cache. Běžné DNS ale nekontroluje, zda tato odpověď skutečně pochází ze správného jmenného serveru. Útočník, kterému se podaří poslat falešnou odpověď dříve, než dorazí ta pravá, může resolveru namluvit, že example.com sídlí na 203.0.113.66 místo na 192.0.2.10. Tomu se říká cache poisoning: cache je „otrávená“ a každý, kdo tento resolver používá, skončí na špatném serveru.
DNSSEC (DNS Security Extensions) to řeší podepisováním odpovědí. Resolver pak může ověřit, že je odpověď pravá a že nebyla cestou změněna.
Co DNSSEC dělá a co ne
Toto je nejdůležitější věc, kterou si zapamatovat:
| DNSSEC dělá | DNSSEC nedělá |
|---|---|
| Dokazuje, že odpověď pochází od skutečného správce zóny | Nešifruje Váš DNS provoz (kdokoliv stále vidí, co zjišťujete) |
| Dokazuje, že odpověď nebyla cestou změněna | Nezabezpečuje Váš web ani e-mail (na to slouží https a SPF/DKIM/DMARC) |
| Dokazuje, že doména skutečně neexistuje | Nezabraňuje chybám ve Vašich vlastních záznamech: špatně podepsaný záznam zůstává stále špatný |
Podpis funguje jako pečeť na obálce: dopis si může přečíst kdokoliv, ale hned uvidíte, pokud ho někdo otevřel.
Tři součásti
DNSSEC přidává několik typů záznamů. Sami je vytvářet nemusíte (to dělá Váš správce DNS nebo administrační panel), ale setkáte se s nimi:
- DNSKEY: veřejný klíč zóny. Pomocí něj může kdokoliv ověřit podpisy.
- RRSIG: podpis u skupiny záznamů. Každá odpověď typu A, MX nebo TXT dostane RRSIG. Podpis má datum začátku a konce platnosti: zóna se tedy musí pravidelně znovu podepisovat.
- DS (Delegation Signer): krátký „otisk“ klíče Vaší zóny. Ten se nenachází ve Vaší vlastní zóně, ale u rodiče: pro
example.comtedy u registru .com (Verisign), pro doménu.nlu SIDN (registr domény .nl v Nizozemsku).
Takto vypadá podepsaná odpověď (zkráceně):
$ dig example.com A +dnssec +noall +answer
example.com. 3600 IN A 192.0.2.10
example.com. 3600 IN RRSIG A 13 2 3600 20261119000000 20261029000000 30794 example.com. s7yJ5o...V RRSIG vidíte mimo jiné algoritmus (13 = ECDSA P-256 se SHA-256), datum konce platnosti (19. listopadu 2026), datum začátku platnosti a číslo klíče (30794).
Řetězec důvěry
Proč je DS u rodiče? Protože klíč ve Vaší vlastní zóně nic nedokazuje: útočník by mohl poslat i vlastní klíč. Proto kontrola probíhá shora dolů:
- Resolver důvěřuje klíči rootu. Ten je vestavěný v každém validujícím resolveru (tzv. trust anchor).
- Root má DS pro .com, podepsaný kořenovým klíčem. Díky tomu resolver ví, jaký klíč by měla mít .com.
- Zóna .com má DS pro example.com, podepsaný klíčem .com.
- Zóna example.com má DNSKEY, který odpovídá tomuto DS, a díky tomu lze ověřit všechny RRSIG.
Každé spojení dokazuje to následující. Pokud se přeruší jeden článek, celý řetězec je nedůvěryhodný.
Validující resolver (většina velkých veřejných resolverů a stále více poskytovatelů) tento řetězec prochází. Pokud sedí, dostanete odpověď. Pokud nesedí, resolver nevrátí odpověď, ale chybový stav SERVFAIL. Pro návštěvníka to pak vypadá, jako by web prostě „neexistoval“, přestože Vaše záznamy jsou možná v naprostém pořádku.
Můžete si to sami ověřit na doméně, která byla úmyslně poškozena:
$ dig dnssec-failed.org A @1.1.1.1
;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL
; EDE: 9 (DNSKEY Missing): (no SEP matching the DS found for dnssec-failed.org.)Pomocí +cd („checking disabled“) požádáte resolver, aby kontrolu přeskočil. Pokud pak odpověď dostanete, máte jistotu, že problém souvisí s DNSSEC:
$ dig +cd dnssec-failed.org A @1.1.1.1 +short
96.99.227.255Doména bez DNSSEC (žádný DS u rodiče) SERVFAIL nevrací: prostě není podepsaná a je propuštěna jako „nezabezpečená“.
Kde to selhává: převod domény a výměna klíčů
Samotné DNSSEC se téměř nikdy nerozbije. Problém nastává, když DS u registru přestane odpovídat klíči v zóně. Stává se to hlavně:
- Při převodu na jiné jmenné servery nebo jiného poskytovatele DNS. Nový poskytovatel podepisuje vlastním klíčem, ale u registru stále zůstává DS starého poskytovatele. Výsledek: SERVFAIL pro každého s validujícím resolverem. Toto je klasická chyba po převodu domény.
- Při výměně klíče, kdy nový DS nebyl (včas) odeslán do registru.
- Když vyprší platnost podpisů, protože zóna už není znovu podepisována.
Bezpečný postup při převodu je proto následující:
- Odstraňte DS u registru (nebo si nechte od nového poskytovatele dodat DS a ten doplňte).
- Počkejte, než uplyne TTL starého DS.
- Přepněte jmenné servery.
- Zapněte DNSSEC u nového poskytovatele a nechte nový DS umístit u registru.
Mnoho registrátorů a panelů to dnes řeší automaticky, pokud doména i DNS zůstávají u stejného poskytovatele. Pokud jsou u různých poskytovatelů, musíte DS přenést sami.
Ověření na vlastní pěst: DNSViz, Zonemaster a internet.nl
Řetězec nemusíte procházet pomocí dig. Existují bezplatné nástroje, které to udělají za Vás a výsledek zobrazí.
DNSViz (https://dnsviz.net/) nakreslí celý řetězec jako obrázek. Použití:
- Na úvodní stránce napište do vyhledávacího pole název domény (jen samotný název, bez
https://a bezwww) a klikněte na Go. - DNSViz zobrazí poslední analýzu. Pokud je stará, nebo jste právě něco změnili, klikněte na Update now. Po pár vteřinách se zobrazí obrázek.
- Obrázek čtěte shora dolů: nahoře je root (
.), pod ním TLD (napříkladnl), dole Vaše doména. Každá zóna je ohraničena rámečkem.
Co na obrázku uvidíte:
| Na obrázku | Význam |
|---|---|
| Ovál s nápisem DNSKEY | Klíč zóny. Šedě vyplněný ovál je klíč, který podepisuje ostatní klíče (KSK, s příznakem SEP); bílý ovál je obvykle klíč pro běžné záznamy (ZSK) |
| Obdélníček s nápisem DS ve zóně nad ním | Otisk uložený u rodiče. Šipka od DS vede k DNSKEY, ke kterému patří |
Zaoblený obdélník, například example.com/A | Běžná sada záznamů. Šipka k ní vede od klíče, který na ni umístil podpis (RRSIG) |
| Čára mezi dvěma zónami | Delegace od rodiče k potomkovi |
Řetězec sledujete takto: DS (u rodiče) ukazuje na DNSKEY (ve Vaší zóně) a tento DNSKEY podepisuje pomocí RRSIG záznamy. Je to přesně tentýž řetězec jako v této lekci, jen nakreslený.
Barvy Vám řeknou, zda je vše v pořádku:
- Modrá: zabezpečeno (secure). Řetězec vede nepřerušeně od rootu až k této součásti.
- Černá: nepodepsáno (insecure). Neexistuje DS, takže není co kontrolovat. Nejde o chybu, doména jednoduše nepoužívá DNSSEC.
- Červená: poškozeno (bogus). DS neodpovídá klíči, nebo podpis nesouhlasí. Validující resolver pak vrátí SERVFAIL.
- Fialová (u podpisu): platnost podpisu vypršela, nebo ještě nezačala. Zóna už není znovu podepisována.
- Žlutá: upozornění, například jmenný server, který neodpovídá správně, nebo algoritmus, který nástroj nezná.
- Šedá a tečkovaná: odkazuje se na klíč, který neexistuje. Pokud vidíte tečkovaný DNSKEY pod DS, u rodiče stále zůstává DS starého klíče: klasická chyba po převodu domény.
Vedle součásti se může objevit trojúhelníček (upozornění) nebo kulatá chybová značka. Najeďte na ni myší, nebo se podívejte do seznamu pod obrázkem: tam je slovy popsáno, co je špatně.
Vyzkoušejte to na doméně sidn.nl (vše modré) a na dnssec-failed.org (červená, s tečkovaným klíčem pod DS).
Další nástroje, které se na totéž dívají z jiného úhlu:
- Zonemaster (
https://zonemaster.net/): kontroluje celou Vaši zónu stejně jako to dělá registr, včetně DNSSEC. Výsledkem je seznam se zelenou (v pořádku), oranžovou (upozornění) a červenou (chyba) barvou. - internet.nl (
https://internet.nl/): test webu a e-mailu mimo jiné ukáže, zda je DNSSEC pro Vaši doménu a mailové servery v pořádku, se zelenými fajfkami nebo červenými křížky. - Verisign DNSSEC Debugger (
https://dnssec-debugger.verisignlabs.com/): prochází řetězec krok za krokem a u každého kroku zobrazí zelenou fajfku nebo červený křížek. Hodí se, když hledáte konkrétní chybu.
Používejte je po každé změně DNSSEC, a určitě před a po převodu domény. Nechte nástroj klidně znovu analyzovat: i tyto nástroje pracují s cache a TTL.
V praxi: jak to vypadá v panelu
V Můj WebOké zapnete DNSSEC u domény v sekci DNSSEC/DANE; panel vytvoří klíče a odešle DS do registru. V DirectAdmin a u externích poskytovatelů jako Cloudflare se tomu obvykle říká „zapnout DNSSEC“; Cloudflare Vám pak zobrazí DS záznam, který musíte sami vyplnit u svého registrátora. Jiné panely fungují podobně: vždy je zde krok „vytvořit klíče“ (u poskytovatele DNS) a krok „DS u registru“ (u registrátora).
Shrnutí
- DNSSEC podepisuje DNS odpovědi, aby resolver mohl ověřit, že jsou pravé. Nic nešifruje.
- DNSKEY je klíč, RRSIG podpis, DS otisk uložený u rodiče.
- Kontrola probíhá jako řetězec od rootu až k Vaší doméně. Pokud se přeruší jeden článek, validující resolver vrátí SERVFAIL.
- Téměř všechny problémy vznikají tím, že DS u registru už neodpovídá, často po převodu domény.
- Pomocí
dig +cdzjistíte, zda problém způsobuje DNSSEC. - DNSViz nakreslí řetězec: modrá znamená zabezpečeno, černá nepodepsáno, červená poškozeno. Zonemaster, internet.nl a Verisign DNSSEC Debugger jsou dobré druhé názory.
Kvíz
Úkol
Úkol Z8.1: Zobrazení DNSSEC. Zjistěte, která ze dvou domén má DNSSEC v pořádku a která je úmyslně poškozena: sidn.nl a dnssec-failed.org. U obou si vyžádejte DS záznam a A záznam přes validující resolver (například 1.1.1.1 nebo 9.9.9.9), pomocí dig nebo online nástroje. Doplňte: číslo klíče (key tag, první číslo) z DS u sidn.nl, a stav, který dostanete pro dnssec-failed.org.
Úkol Z8.1b: Čtení DNSViz. Analyzujte nlnetlabs.nl v DNSViz (https://dnsviz.net/, napište název a klikněte na Go; pokud je analýza stará, klikněte na Update now). Přečtěte si obrázek a doplňte: (1) stav domény nlnetlabs.nl (zabezpečeno, nepodepsáno nebo poškozeno), (2) číslo algoritmu záznamů DNSKEY (v každém oválu je uvedeno jako alg=), (3) kolik oválů DNSKEY se nachází v zóně nlnetlabs.nl, (4) číslo klíče (id=) šedě vyplněného DNSKEY, na který ukazuje DS, a (5) stav, který DNSViz zobrazuje pro dnssec-failed.org. Kontrola si tyto údaje ověří živě.
Úkol O8.1: Posouzení tří ukázkových zón DNSSEC. Připravili jsme tři ukázkové zóny: signed-demo.dnspractice.com (správný řetězec), broken-demo.dnspractice.com (úmyslně poškozená) a unsigned-demo.dnspractice.com (nepodepsaná). U každé zóny zjistěte, zda je zabezpečená, poškozená nebo nepodepsaná, například pomocí DNSViz nebo dig +dnssec (všimněte si příznaku AD a při SERVFAIL zkuste i +cd). U každé zóny níže vyberte svou odpověď.
Doporučené čtení
Tyto články popisují kroky v panelech WebOké; u jiných poskytovatelů se tlačítka mohou jmenovat jinak.
