Moodul 8 · 8.1
DNSSEC lihtsas keeles
Moodul 8: Turvalisus ja probleemide lahendamine · Lugemisaeg: 11 minutit
Õpieesmärk: Pärast seda tundi oskad sa lihtsas keeles selgitada, mida DNSSEC kaitseb, kuidas usaldusahel töötab ja miks see ülekande ajal katki võib minna.
Põhimõisted: DNSSEC, allkiri (RRSIG), võti (DNSKEY), DS-kirje, usaldusahel, valideeriv resolver, SERVFAIL
Probleem: kuidas tead, et vastus on tõeline?
Moodulis 1 nägid, et resolver esitab rea päringuid: juurserverile, TLD serverile ja autoriteetsele nimeserverile. Tagasi tulnud vastust usutakse ja see pannakse vahemällu. Kuid tavaline DNS ei kontrolli, kas see vastus tuleb tõesti õigest nimeserverist. Ründaja, kes suudab saata valevastuse enne tõelise vastuse saabumist, võib panna resolveri uskuma, et example.com asub aadressil 203.0.113.66, mitte 192.0.2.10. Seda nimetatakse vahemälu mürgitamiseks (cache poisoning): vahemälu on "mürgitatud" ja kõik, kes seda resolverit kasutavad, jõuavad vale serverini.
DNSSEC (DNS Security Extensions) lahendab selle probleemi, allkirjastades vastused. Resolver saab siis kontrollida, kas vastus on tõeline ja kas seda pole teel muudetud.
Mida DNSSEC teeb ja mida mitte
See on kõige olulisem, mida meeles pidada:
| DNSSEC teeb | DNSSEC ei tee |
|---|---|
| Tõestab, et vastus tuleb tsooni tegelikult haldajalt | Ei krüpteeri su DNS-liiklust (igaüks näeb ikka, mida sa päringuga küsid) |
| Tõestab, et vastust pole teel muudetud | Ei turva su veebisaiti ega e-posti (selleks on https ja SPF/DKIM/DMARC) |
| Tõestab, et nime tõesti ei eksisteeri | Ei väldi vigu su enda kirjetes: valesti allkirjastatud kirje on ikka vale |
Allkiri toimib nagu ümbriku pitser: igaüks saab kirja lugeda, aga sa näed kohe, kui keegi on selle avanud.
Kolm osa
DNSSEC lisab mõned kirjetüübid. Sa ei pea neid ise looma (seda teeb su DNS-haldaja või haldurpaneel), aga sa puutud nendega kokku:
- DNSKEY: tsooni avalik võti. Selle abil saab igaüks allkirju kontrollida.
- RRSIG: allkiri kirjete grupi juures. Iga A-, MX- või TXT-vastus saab kaasa RRSIG-i. Allkirjal on algus- ja lõppkuupäev: tsoon tuleb seega regulaarselt uuesti allkirjastada.
- DS (Delegation Signer): su tsooni võtme lühike "sõrmejälg". See asub mitte sinu enda tsoonis, vaid ülemal tasemel: domeeni
example.compuhul seega .com registris (Verisign), .nl-domeeni puhul SIDN-is.
Nii näeb välja allkirjastatud vastus (lühendatult):
$ 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...RRSIG-ist näed muuhulgas algoritmi (13 = ECDSA P-256 koos SHA-256-ga), lõppkuupäeva (19. november 2026), algkuupäeva ja võtme numbrit (30794).
Usaldusahel
Miks asub DS ülemal tasemel? Sest sinu enda tsoonis olev võti ei tõesta midagi: ründaja võiks ju ise samuti oma võtme kaasa saata. Seetõttu toimub kontroll ülevalt alla:
- Resolver usaldab juurtsooni võtit. See on sisse ehitatud igasse valideerivasse resolverisse (trust anchor).
- Juurtsoonil on DS domeeni .com jaoks, allkirjastatud juurtsooni võtmega. Nii teab resolver, milline võti peaks .com-il olema.
- .com-tsoonil on DS domeeni example.com jaoks, allkirjastatud .com võtmega.
- Tsoonil example.com on DNSKEY, mis sobib selle DS-iga, ja selle abil saab kontrollida kõiki RRSIG-e.
Iga lüli tõestab järgmist. Kui üks lüli katkeb, muutub kogu ahel ebausaldusväärseks.
Valideeriv resolver (enamik suuri avalikke resolvereid ja järjest rohkem teenusepakkujaid) käib selle ahela läbi. Kui see klapib, saad vastuse. Kui ei klapi, ei anna resolver mitte mingit vastust, vaid veaolekut SERVFAIL. Külastaja jaoks näib leht siis lihtsalt "olematuna", kuigi su kirjed võivad täiesti korras olla.
Seda saad ise näha domeeniga, mis on meelega katki tehtud:
$ 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.)Lipuga +cd ("checking disabled") palud resolveril kontroll vahele jätta. Kui siis saad vastuse kätte, tead kindlalt, et probleem on DNSSEC-is:
$ dig +cd dnssec-failed.org A @1.1.1.1 +short
96.99.227.255Domeen, millel pole DNSSEC-i (DS puudub ülemal tasemel), ei anna SERVFAIL-i: see on lihtsalt allkirjastamata ja lastakse läbi kui "kaitsmata".
Kus asi untsu läheb: ülekanne ja võtmevahetus
DNSSEC ise läheb peaaegu kunagi katki. Asi läheb untsu, kui registris olev DS ei sobi enam tsoonis oleva võtmega. See juhtub eelkõige:
- Nimeserverite või DNS-partneri vahetusel. Uus partner allkirjastab oma võtmega, aga registris seisab veel vana partneri DS. Tulemus: SERVFAIL kõigile, kellel on valideeriv resolver. See on klassikaline viga pärast ülekannet.
- Võtmevahetusel, kui uut DS-i pole (õigeaegselt) registrisse saadetud.
- Kui allkirjad aeguvad, sest tsooni enam uuesti ei allkirjastata.
Turvaline järjekord ülekande puhul on seega:
- Eemalda DS registrist (või lase uuel partneril anda DS, mille sa juurde lisad).
- Oota, kuni vana DS-i TTL on läbi.
- Vaheta nimeserverid.
- Lülita DNSSEC uue partneri juures sisse ja lase uus DS registrisse panna.
Paljud registripidajad ja haldurpaneelid korraldavad seda tänapäeval automaatselt, kui domeen ja DNS on sama partneri juures. Kui need asuvad erinevate partnerite juures, pead DS-i ise üle kandma.
Kontrolli ise: DNSViz, Zonemaster ja internet.nl
Sul pole vaja ahelat dig abil läbi käia. On olemas tasuta tööriistad, mis teevad seda sinu eest ja näitavad tulemust.
DNSViz (https://dnsviz.net/) joonistab kogu ahela pildina. Nii kasutad seda:
- Kirjuta esilehel otsingukasti domeeninimi (ainult nimi, ilma
https://ja ilmawww-ta) ja klõpsa Go. - DNSViz näitab viimast analüüsi. Kui see on vana, või kui oled just midagi muutnud, klõpsa Update now. Mõne sekundi pärast näed pilti.
- Loe pilti ülevalt alla: üleval juurtsoon (
.), selle all TLD (näiteksnl), allpool sinu domeen. Iga tsoon on raamiga kastis.
Mida pildil näed:
| Pildil | Tähendus |
|---|---|
| Ovaal tähisega DNSKEY | Tsooni võti. Hall täidetud ovaal on võti, mis allkirjastab teisi võtmeid (KSK, SEP lipuga); valge ovaal on tavaliselt tavaliste kirjete võti (ZSK) |
| Kast tähisega DS ülemises tsoonis | Sõrmejälg ülemal tasemel. DS-i nool viitab DNSKEY-le, millele see kuulub |
Ümarate nurkadega ristkülik, näiteks example.com/A | Tavaline kirjete grupp. Sellele viitav nool tuleb võtmelt, mis allkirjastas (RRSIG) selle kirje |
| Joon kahe tsooni vahel | Delegeerimine ülemalt tasemelt alamtasemele |
Ahelat jälgid nii: DS (ülemal tasemel) osutab DNSKEY-le (sinu tsoonis) ja see DNSKEY paneb RRSIG-iga allkirja kirjete alla. See on täpselt see ahel, mis selles tunnis oli, ainult joonistatuna.
Värvid ütlevad, kas kõik klapib:
- Sinine: turvaline (secure). Ahel kulgeb katkematult juurtsoonist selle osani.
- Must: allkirjastamata (insecure). DS-i pole, seega pole midagi kontrollida. See pole viga, domeen lihtsalt ei kasuta DNSSEC-i.
- Punane: katki (bogus). DS ei sobi võtmega, või allkiri ei klapi. Valideeriv resolver annab siis SERVFAIL-i.
- Lilla (allkirja puhul): allkiri on aegunud või veel mitte kehtiv. Tsooni enam uuesti ei allkirjastata.
- Kollane: hoiatus, näiteks nimeserver, mis ei vasta korralikult, või algoritm, mida tööriist ei tunne.
- Hall ja punktiirjoontega: viidatakse võtmele, mida pole olemas. Kui näed punktiirjoonega DNSKEY-d DS-i all, on ülemal tasemel veel vana võtme DS: klassikaline viga pärast ülekannet.
Osa kõrval võib olla kolmnurgake (hoiatus) või ümmargune veamärk. Vii hiir selle peale või vaata pildi all olevat nimekirja: seal on sõnadega kirjas, mis on valesti.
Proovi seda domeeniga sidn.nl (kõik sinine) ja domeeniga dnssec-failed.org (punane, koos punktiirjoonega võtmega DS-i all).
Teised tööriistad, mis vaatavad sama asja teisest nurgast:
- Zonemaster (
https://zonemaster.net/): kontrollib kogu su tsooni samamoodi nagu register seda teeb, sealhulgas DNSSEC-i. Tulemus on nimekiri rohelise (hea), oranži (hoiatus) ja punasega (viga). - internet.nl (
https://internet.nl/): veebisaidi ja e-posti test näitavad muuhulgas, kas DNSSEC on su domeeni ja mailiserverite jaoks korras, roheliste linnukeste või punaste ristidega. - Verisign DNSSEC Debugger (
https://dnssec-debugger.verisignlabs.com/): käib ahela samm-sammult läbi ja paneb iga sammu juurde rohelise linnukese või punase risti. Kasulik, kui otsid konkreetset viga.
Kasuta neid pärast igat DNSSEC-i muudatust, ja kindlasti enne ja pärast ülekannet. Lase tööriistal rahulikult uuesti analüüsida: ka need tööriistad töötavad vahemälude ja TTL-idega.
Praktikas: nii näeb see välja haldurpaneelis
Minu WebOké-s lülitad DNSSEC-i domeenil sisse DNSSEC/DANE alt; paneel loob võtmed ja saadab DS-i registrisse. DirectAdmin-is ja väliste partnerite juures nagu Cloudflare nimetatakse seda tavaliselt "DNSSEC inschakelen" ehk sisselülitamiseks; Cloudflare näitab sulle siis DS-kirjet, mille pead ise oma registripidaja juures sisestama. Teised haldurpaneelid töötavad sarnaselt: alati on samm "võtmete loomine" (DNS-partneri juures) ja samm "DS registrisse" (registripidaja juures).
Kokkuvõte
- DNSSEC allkirjastab DNS-vastuseid, et resolver saaks kontrollida, et need on tõelised. See ei krüpteeri midagi.
- DNSKEY on võti, RRSIG allkiri, DS sõrmejälg ülemal tasemel.
- Kontroll kulgeb ahelana juurtsoonist su domeenini. Kui üks lüli katkeb, annab valideeriv resolver SERVFAIL-i.
- Peaaegu kõik probleemid tekivad sellest, et registris olev DS enam ei sobi, tihti pärast ülekannet.
- Käsuga
dig +cdnäed, kas probleem tuleneb DNSSEC-ist. - DNSViz joonistab ahela: sinine on turvaline, must on allkirjastamata, punane on katki. Zonemaster, internet.nl ja Verisign DNSSEC Debugger on head teised arvamused.
Test
Ülesanne
Ülesanne Z8.1: DNSSEC-i nägemine. Uuri välja, kummal kahest domeenist on DNSSEC korras ja kumb on meelega katki tehtud: sidn.nl ja dnssec-failed.org. Küsi mõlema jaoks DS-kirje ja A-kirje valideeriva resolveri kaudu (näiteks 1.1.1.1 või 9.9.9.9), kasutades dig-i või veebipõhist tööriista. Täida: domeeni sidn.nl DS-i võtmenumber (key tag, esimene number) ja olek, mille saad domeeni dnssec-failed.org kohta.
Ülesanne Z8.1b: DNSViz-i lugemine. Analüüsi domeeni nlnetlabs.nl DNSViz-is (https://dnsviz.net/, kirjuta nimi sisse ja klõpsa Go; klõpsa Update now, kui analüüs on vana). Loe pilti ja täida: (1) domeeni nlnetlabs.nl olek (turvaline, allkirjastamata või katki), (2) DNSKEY-kirjete algoritminumber (seisab igas ovaalis kui alg=), (3) mitu DNSKEY-ovaali on domeeni nlnetlabs.nl tsoonis, (4) selle hallilt täidetud DNSKEY võtmenumber (id=), millele DS osutab, ja (5) olek, mille DNSViz annab domeenile dnssec-failed.org. Kontroll küsib sama infot otse elust.
Ülesanne O8.1: Kolme DNSSEC-i demotsooni hindamine. Oleme valmis seadnud kolm demotsooni: signed-demo.dnspractice.com (korras ahel), broken-demo.dnspractice.com (meelega katki) ja unsigned-demo.dnspractice.com (allkirjastamata). Uuri iga tsooni kohta, kas see on turvaline, katki või allkirjastamata, näiteks DNSViz-iga või käsuga dig +dnssec (jälgi AD-lippu ja proovi SERVFAIL-i korral ka +cd). Vali allpool iga tsooni jaoks oma vastus.
Rohkem lugemist
Need artiklid kirjeldavad samme WebOké haldurpaneelides; teiste partnerite juures on nupud teisiti nimetatud.
