Modul 8 · 8.1
DNSSEC v bežnej reči
Modul 8: Bezpečnosť a riešenie problémov · Čas čítania: 11 min
Cieľ lekcie: Po tejto lekcii dokážete v bežnej reči vysvetliť, čo DNSSEC chráni, ako funguje reťazec dôvery a prečo sa to môže pokaziť pri prevode domény.
Kľúčové pojmy: DNSSEC, podpis (RRSIG), kľúč (DNSKEY), DS záznam, reťazec dôvery, validujúci resolver, SERVFAIL
Problém: ako viete, že je odpoveď skutočná?
V module 1 ste videli, že resolver kladie postupnosť otázok: koreňovým serverom, serveru TLD a autoritatívnemu menný serveru. Odpoveď, ktorá príde späť, sa považuje za pravdivú a uloží sa do cache. Bežný DNS však nekontroluje, či táto odpoveď skutočne pochádza od správneho menného servera. Útočník, ktorému sa podarí poslať falošnú odpoveď skôr, než príde skutočná, môže resolver presvedčiť, že example.com sa nachádza na adrese 203.0.113.66 namiesto 192.0.2.10. Toto sa nazýva cache poisoning: cache je "otrávená" a každý, kto tento resolver používa, sa dostane na nesprávny server.
DNSSEC (DNS Security Extensions) tento problém rieši podpisovaním odpovedí. Resolver tak dokáže overiť, či je odpoveď skutočná a či sa cestou nezmenila.
Čo DNSSEC robí a čo nerobí
Toto je najdôležitejšie si zapamätať:
| DNSSEC robí | DNSSEC nerobí |
|---|---|
| Dokazuje, že odpoveď pochádza od skutočného správcu zóny | Nešifruje váš DNS prevádzku (každý stále vidí, čo si vypytujete) |
| Dokazuje, že sa odpoveď cestou nezmenila | Nezabezpečuje váš web ani e-mail (na to slúžia https a SPF/DKIM/DMARC) |
| Dokazuje, že názov naozaj neexistuje | Nezabraňuje chybám vo vašich vlastných záznamoch: nesprávne podpísaný záznam je stále nesprávny |
Podpis funguje ako pečať na obálke: list si môže prečítať každý, ale hneď vidíte, či ho niekto otvoril.
Tri súčasti
DNSSEC pridáva niekoľko typov záznamov. Nemusíte ich vytvárať sami (to robí váš správca DNS alebo ovládací panel), ale stretnete sa s nimi:
- DNSKEY: verejný kľúč zóny. Pomocou neho môže ktokoľvek overiť podpisy.
- RRSIG: podpis pri skupine záznamov. Každá odpoveď typu A, MX alebo TXT dostane svoj RRSIG. Podpis má dátum začiatku a konca platnosti: zóna sa teda musí pravidelne znova podpisovať.
- DS (Delegation Signer): krátky "odtlačok prsta" kľúča vašej zóny. Ten sa nenachádza vo vašej vlastnej zóne, ale u rodiča: pre
example.comteda u registra .com (Verisign), pre doménu.nlu SIDN (registra .nl v Holandsku).
Takto vyzerá podpísaná odpoveď (skrátená):
$ 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 okrem iného algoritmus (13 = ECDSA P-256 so SHA-256), dátum konca platnosti (19. november 2026), dátum začiatku platnosti a číslo kľúča (30794).
Reťazec dôvery
Prečo je DS u rodiča? Pretože kľúč vo vašej vlastnej zóne nič nedokazuje: útočník by mohol poslať aj vlastný kľúč. Preto kontrola prebieha zhora nadol:
- Resolver dôveruje kľúču koreňa. Ten je zabudovaný v každom validujúcom resolveri (trust anchor).
- Koreň má DS pre .com, podpísaný koreňovým kľúčom. Vďaka tomu resolver vie, aký kľúč by mal mať .com.
- Zóna .com má DS pre example.com, podpísaný kľúčom .com.
- Zóna example.com má DNSKEY, ktorý sedí k tomuto DS, a tým je možné overiť všetky RRSIG.
Každý článok dokazuje ten nasledujúci. Ak sa jeden článok preruší, celý reťazec je nedôveryhodný.
Validujúci resolver (väčšina veľkých verejných resolverov a čoraz viac poskytovateľov) tento reťazec prechádza. Ak sedí, dostanete odpoveď. Ak nesedí, resolver nedá žiadnu odpoveď, ale chybový stav SERVFAIL. Pre návštevníka to vyzerá, akoby stránka jednoducho "neexistovala", hoci vaše záznamy môžu byť úplne v poriadku.
Môžete si to sami overiť na doméne, ktorá bola zámerne pokazená:
$ 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.)Pomocou +cd ("checking disabled") požiadate resolver, aby kontrolu preskočil. Ak vtedy odpoveď dostanete, viete s istotou, že problém spôsobuje DNSSEC:
$ dig +cd dnssec-failed.org A @1.1.1.1 +short
96.99.227.255Doména bez DNSSEC (bez DS u rodiča) nedáva SERVFAIL: jednoducho nie je podpísaná a prejde ako "nezabezpečená".
Kde sa to kazí: prevod domény a výmena kľúčov
Samotný DNSSEC sa pokazí len veľmi zriedkavo. Problém nastáva, keď DS u registra už nesedí ku kľúču v zóne. Deje sa to najmä:
- Pri prevode na iné menné servery alebo iného DNS poskytovateľa. Nový poskytovateľ podpisuje vlastným kľúčom, ale u registra ešte stále stojí DS starého poskytovateľa. Dôsledok: SERVFAIL pre každého s validujúcim resolverom. Toto je klasická chyba po prevode domény.
- Pri výmene kľúča, keď nový DS nebol (včas) odoslaný registru.
- Keď podpisy vypršia, pretože sa zóna už znova nepodpisuje.
Bezpečné poradie pri prevode domény je preto:
- Odstráňte DS u registra (alebo nechajte nového poskytovateľa dodať DS, ktorý tam doplníte).
- Počkajte, kým neuplynie TTL starého DS.
- Prepnite menné servery.
- Zapnite DNSSEC u nového poskytovateľa a nechajte nový DS umiestniť u registra.
Mnohí registrátori a ovládacie panely toto dnes riešia automaticky, pokiaľ sú doména a DNS u toho istého poskytovateľa. Ak sú u rôznych poskytovateľov, musíte DS preniesť sami.
Overte si to sami: DNSViz, Zonemaster a internet.nl
Reťazec nemusíte overovať pomocou dig. Existujú bezplatné nástroje, ktoré to urobia za vás a zobrazia výsledok.
DNSViz (https://dnsviz.net/) nakreslí celý reťazec ako obrázok. Postup je takýto:
- Na úvodnej stránke zadajte názov domény do vyhľadávacieho poľa (len názov, bez
https://a bezwww) a kliknite na Go. - DNSViz zobrazí poslednú analýzu. Ak je stará, alebo ste práve niečo zmenili, kliknite na Update now. Po niekoľkých sekundách sa zobrazí obrázok.
- Obrázok čítajte zhora nadol: hore je koreň (
.), pod ním TLD (napríkladnl), dole vaša doména. Každá zóna je rámček.
Čo na obrázku vidíte:
| Na obrázku | Význam |
|---|---|
| Ovál s DNSKEY | Kľúč zóny. Sivo vyplnený ovál je kľúč, ktorý podpisuje ostatné kľúče (KSK, s príznakom SEP); biely ovál je zvyčajne kľúč pre bežné záznamy (ZSK) |
| Štvorček s DS v zóne nad ním | Odtlačok prsta u rodiča. Šípka z DS smeruje k DNSKEY, ku ktorému patrí |
Zaoblený obdĺžnik, napríklad example.com/A | Bežná sada záznamov. Šípka k nej smeruje od kľúča, ktorý podpis (RRSIG) vytvoril |
| Čiara medzi dvoma zónami | Delegácia od rodiča k dieťaťu |
Reťazec sledujete takto: DS (u rodiča) ukazuje na DNSKEY (vo vašej zóne) a tento DNSKEY svojím RRSIG podpisuje záznamy. To je presne ten istý reťazec ako v tejto lekcii, len nakreslený.
Farby hovoria, či je všetko v poriadku:
- Modrá: bezpečné (secure). Reťazec vedie neprerušene od koreňa až k tejto súčasti.
- Čierna: nepodpísané (insecure). Neexistuje DS, takže nie je čo overovať. Nejde o chybu, doména jednoducho nepoužíva DNSSEC.
- Červená: pokazené (bogus). DS nesedí ku kľúču, alebo podpis nie je správny. Validujúci resolver vtedy dá SERVFAIL.
- Fialová (pri podpise): podpis vypršal alebo ešte nie je platný. Zóna sa už znova nepodpisuje.
- Žltá: upozornenie, napríklad menný server, ktorý neodpovedá správne, alebo algoritmus, ktorý nástroj nepozná.
- Sivá a bodkovaná: odkazuje sa na kľúč, ktorý neexistuje. Ak vidíte bodkovaný DNSKEY pod DS, u rodiča stále stojí DS zo starého kľúča: klasická chyba po prevode domény.
Vedľa súčasti sa môže zobraziť trojuholníček (upozornenie) alebo okrúhle chybové znamienko. Nastavte naň kurzor myši, alebo si pozrite zoznam pod obrázkom: tam je slovne uvedené, čo je zle.
Vyskúšajte to na sidn.nl (všetko modré) a na dnssec-failed.org (červené, s bodkovaným kľúčom pod DS).
Ďalšie nástroje, ktoré sa na to isté pozerajú z iného uhla:
- Zonemaster (
https://zonemaster.net/): skontroluje celú vašu zónu tak, ako to robí register, vrátane DNSSEC. Výsledkom je zoznam so zelenou (dobré), oranžovou (upozornenie) a červenou (chyba) farbou. - internet.nl (
https://internet.nl/): test webu a e-mailu okrem iného ukazuje, či je DNSSEC pre vašu doménu a mailové servery v poriadku, so zelenými fajočkami alebo červenými krížikmi. - Verisign DNSSEC Debugger (
https://dnssec-debugger.verisignlabs.com/): prechádza reťazec krok za krokom a pri každom kroku ukáže zelenú fajočku alebo červený krížik. Hodí sa, keď hľadáte jednu konkrétnu chybu.
Používajte ich po každej zmene v DNSSEC, a určite pred a po prevode domény. Nechajte nástroj pokojne znovu analyzovať: aj tieto nástroje pracujú s cache a TTL.
V praxi: ako to vyzerá v ovládacom paneli
V Môj WebOké zapnete DNSSEC pri doméne v sekcii DNSSEC/DANE; panel vytvorí kľúče a odošle DS registru. V DirectAdmin a u externých poskytovateľov ako Cloudflare sa to zvyčajne nazýva "zapnúť DNSSEC"; Cloudflare vám potom zobrazí DS záznam, ktorý musíte sami vyplniť u vášho registrátora. Ostatné panely fungujú podobne: vždy existuje krok "vytvoriť kľúče" (u DNS poskytovateľa) a krok "DS u registra" (u registrátora).
Zhrnutie
- DNSSEC podpisuje DNS odpovede, aby resolver mohol overiť, že sú skutočné. Nič nešifruje.
- DNSKEY je kľúč, RRSIG podpis, DS odtlačok prsta u rodiča.
- Kontrola prebieha ako reťazec od koreňa až k vašej doméne. Ak sa článok preruší, validujúci resolver dá SERVFAIL.
- Takmer všetky problémy vznikajú tým, že DS u registra už nesedí, často po prevode domény.
- Pomocou
dig +cdzistíte, či problém spôsobuje DNSSEC. - DNSViz nakreslí reťazec: modrá je bezpečné, čierna je nepodpísané, červená je pokazené. Zonemaster, internet.nl a Verisign DNSSEC Debugger sú dobré druhé názory.
Kvíz
Úloha
Úloha Z8.1: Pozrieť DNSSEC. Zistite, ktorá z dvoch domén má DNSSEC v poriadku a ktorá bola zámerne pokazená: sidn.nl a dnssec-failed.org. Pre obe vyžiadajte DS záznam a A záznam cez validujúci resolver (napríklad 1.1.1.1 alebo 9.9.9.9), pomocou dig alebo online nástroja. Vyplňte: číslo kľúča (key tag, prvé číslo) DS záznamu domény sidn.nl, a stav, ktorý dostanete pre dnssec-failed.org.
Úloha Z8.1b: Čítanie DNSViz. Analyzujte nlnetlabs.nl v DNSViz (https://dnsviz.net/, zadajte názov a kliknite na Go; kliknite na Update now, ak je analýza stará). Prečítajte si obrázok a vyplňte: (1) stav domény nlnetlabs.nl (bezpečná, nepodpísaná alebo pokazená), (2) číslo algoritmu DNSKEY záznamov (nachádza sa v každom ováli ako alg=), (3) koľko DNSKEY oválov sa nachádza v zóne nlnetlabs.nl, (4) číslo kľúča (id=) sivo vyplneného DNSKEY, na ktorý DS ukazuje, a (5) stav, ktorý DNSViz uvádza pre dnssec-failed.org. Kontrola si tie isté údaje vyžiada naživo.
Úloha O8.1: Posúdiť tri demo zóny DNSSEC. Pripravili sme tri demo zóny: signed-demo.dnspractice.com (dobrý reťazec), broken-demo.dnspractice.com (zámerne pokazená) a unsigned-demo.dnspractice.com (nepodpísaná). Pre každú zónu zistite, či je bezpečná, pokazená alebo nepodpísaná, napríklad pomocou DNSViz alebo dig +dnssec (všimnite si príznak AD a pri SERVFAIL skúste aj +cd). Nižšie vyberte pre každú zónu svoju odpoveď.
Ďalšie čítanie
Tieto články popisujú kroky v paneloch WebOké; u iných poskytovateľov sa tlačidlá volajú inak.
