Moduuli 8 · 8.1
DNSSEC selkokielellä
Moduuli 8: Turvallisuus ja ongelmien ratkaisu · Lukuaika: 11 minuuttia
Oppimistavoite: Tämän oppitunnin jälkeen osaat selittää selkokielellä, mitä DNSSEC suojaa, miten luottamusketju toimii ja miksi se voi mennä rikki verkkotunnuksen siirron yhteydessä.
Keskeiset käsitteet: DNSSEC, allekirjoitus (RRSIG), avain (DNSKEY), DS-tietue, luottamusketju, validoiva resolveri, SERVFAIL
Ongelma: miten tiedät, että vastaus on aito?
Moduulissa 1 näit, että resolveri esittää sarjan kysymyksiä: juurelle, TLD-palvelimelle ja autoritatiiviselle nimipalvelimelle. Palaava vastaus uskotaan sellaisenaan ja laitetaan välimuistiin. Mutta tavallinen DNS ei tarkista, tuleeko vastaus todella oikealta nimipalvelimelta. Hyökkääjä, joka onnistuu lähettämään väärennetyn vastauksen ennen kuin oikea vastaus ehtii perille, voi saada resolverin uskomaan, että example.com löytyy osoitteesta 203.0.113.66 eikä osoitteesta 192.0.2.10. Tätä kutsutaan cache poisoningiksi: välimuisti on "myrkytetty" ja kaikki, jotka käyttävät kyseistä resolveria, päätyvät väärälle palvelimelle.
DNSSEC (DNS Security Extensions) ratkaisee tämän allekirjoittamalla vastaukset. Resolveri voi silloin tarkistaa, että vastaus on aito ja että sitä ei ole muutettu matkalla.
Mitä DNSSEC tekee ja mitä se ei tee
Tämä on tärkein asia muistaa:
| DNSSEC tekee | DNSSEC ei tee |
|---|---|
| Todistaa, että vastaus tulee vyöhykkeen todelliselta ylläpitäjältä | Salaa DNS-liikenteesi (kaikki näkevät silti, mitä kysyt) |
| Todistaa, että vastausta ei ole muutettu matkalla | Suojaa verkkosivustoasi tai sähköpostiasi (siihen käytetään https:ää ja SPF:ää, DKIM:ää, DMARC:ia) |
| Todistaa, että nimeä ei todella ole olemassa | Estä virheitä omissa tietueissasi: väärin allekirjoitettu tietue on silti väärä |
Allekirjoitus toimii kuin sinetti kirjekuoressa: kaikki voivat lukea kirjeen, mutta näet heti, jos joku on avannut sen.
Kolme osaa
DNSSEC lisää muutaman tietuetyypin. Sinun ei tarvitse luoda niitä itse (sen tekee DNS-palveluntarjoajasi tai hallintapaneeli), mutta törmäät niihin:
- DNSKEY: vyöhykkeen julkinen avain. Tällä kuka tahansa voi tarkistaa allekirjoitukset.
- RRSIG: tietueryhmän allekirjoitus. Jokainen A-, MX- tai TXT-vastaus saa mukaansa RRSIG:n. Allekirjoituksella on alkamis- ja päättymispäivä: vyöhyke pitää siis allekirjoittaa uudelleen säännöllisesti.
- DS (Delegation Signer): lyhyt "sormenjälki" vyöhykkeesi avaimesta. Se ei ole omassa vyöhykkeessäsi, vaan ylemmällä tasolla:
example.com-tunnukselle siis .com-rekisterinpitäjällä (Verisign), .nl-verkkotunnukselle SIDN:llä (Alankomaiden .nl-rekisterinpitäjä).
Näin näyttää allekirjoitettu vastaus (lyhennetty):
$ 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:ssä näkyy muun muassa algoritmi (13 = ECDSA P-256 ja SHA-256), päättymispäivä (19. marraskuuta 2026), alkamispäivä ja avaimen numero (30794).
Luottamusketju
Miksi DS on ylemmällä tasolla? Koska avain omassa vyöhykkeessäsi ei todista mitään: hyökkääjä voisi lähettää mukana myös oman avaimensa. Siksi tarkistus kulkee ylhäältä alas:
- Resolveri luottaa juuren avaimeen. Se on sisäänrakennettu jokaiseen validoivaan resolveriin (trust anchor).
- Juurella on DS-tietue .com-tunnukselle, allekirjoitettu juuriavaimella. Näin resolveri tietää, minkä avaimen .com-tunnuksella pitäisi olla.
- .com-vyöhykkeellä on DS-tietue example.com-tunnukselle, allekirjoitettu .com-avaimella.
- Vyöhykkeellä example.com on DNSKEY, joka vastaa tätä DS-tietuetta, ja sen avulla kaikki RRSIG-allekirjoitukset voidaan tarkistaa.
Jokainen lenkki todistaa seuraavan. Jos yksi lenkki katkeaa, koko ketju muuttuu epäluotettavaksi.
Validoiva resolveri (useimmat suuret julkiset resolverit ja yhä useampi operaattori) käy tämän ketjun läpi. Jos se pitää paikkansa, saat vastauksen. Jos ei, resolveri ei anna vastausta vaan virhetilan SERVFAIL. Kävijälle sivusto näyttää silloin ihan vain "olemattomalta", vaikka tietueesi saattavat olla täysin kunnossa.
Voit nähdä tämän itse verkkotunnuksella, joka on tahallaan rikottu:
$ 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.)+cd:llä ("checking disabled") pyydät resolveria ohittamaan tarkistuksen. Jos saat silloin vastauksen, tiedät varmasti, että kyse on DNSSEC:stä:
$ dig +cd dnssec-failed.org A @1.1.1.1 +short
96.99.227.255Verkkotunnus ilman DNSSEC:iä (ei DS-tietuetta ylemmällä tasolla) ei anna SERVFAIL-vastausta: se on silloin yksinkertaisesti allekirjoittamaton, ja se päästetään läpi "suojaamattomana".
Mikä menee pieleen: siirto ja avaimenvaihto
DNSSEC itse menee lähes koskaan rikki. Ongelma syntyy, kun rekisterinpitäjällä oleva DS ei enää vastaa vyöhykkeen avainta. Tämä tapahtuu etenkin:
- Nimipalvelimien tai DNS-palveluntarjoajan vaihdon yhteydessä. Uusi palveluntarjoaja allekirjoittaa omalla avaimellaan, mutta rekisterinpitäjällä on yhä vanhan palveluntarjoajan DS. Seuraus: SERVFAIL kaikille, joilla on validoiva resolveri. Tämä on klassinen virhe siirron jälkeen.
- Avaimenvaihdon yhteydessä, kun uutta DS-tietuetta ei ole lähetetty (ajoissa) rekisterinpitäjälle.
- Kun allekirjoitukset vanhenevat, koska vyöhykettä ei enää allekirjoiteta uudelleen.
Turvallinen järjestys siirrossa on siis:
- Poista DS rekisterinpitäjältä (tai pyydä uutta palveluntarjoajaa toimittamaan DS, jonka lisäät mukaan).
- Odota, kunnes vanhan DS:n TTL on kulunut umpeen.
- Vaihda nimipalvelimet.
- Ota DNSSEC käyttöön uudella palveluntarjoajalla ja pyydä lisäämään uusi DS rekisterinpitäjälle.
Monet verkkotunnusvälittäjät ja hallintapaneelit hoitavat tämän nykyään automaattisesti, kunhan verkkotunnus ja DNS ovat samalla palveluntarjoajalla. Jos ne ovat eri palveluntarjoajilla, DS pitää siirtää itse.
Tarkista itse: DNSViz, Zonemaster ja internet.nl
Sinun ei tarvitse käydä ketjua läpi dig:illä. On olemassa ilmaisia työkaluja, jotka tekevät sen puolestasi ja näyttävät tuloksen.
DNSViz (https://dnsviz.net/) piirtää koko ketjun kuvana. Näin käytät sitä:
- Kirjoita etusivulla verkkotunnuksen nimi hakukenttään (vain nimi, ilman
https://ja ilmanwww) ja klikkaa Go. - DNSViz näyttää viimeisimmän analyysin. Jos se on vanha tai olet juuri muuttanut jotain, klikkaa Update now. Muutaman sekunnin kuluttua näet kuvan.
- Lue kuva ylhäältä alas: ylimpänä juuri (
.), sen alla TLD (esimerkiksinl), alimpana verkkotunnuksesi. Jokainen vyöhyke on kehyksessä.
Mitä kuvassa näet:
| Kuvassa | Merkitys |
|---|---|
| Soikio, jossa DNSKEY | Vyöhykkeen avain. Harmaalla täytetty soikio on avain, joka allekirjoittaa muut avaimet (KSK, jossa on SEP-lippu); valkoinen soikio on yleensä tavallisten tietueiden avain (ZSK) |
| Laatikko, jossa DS, ylemmässä vyöhykkeessä | Ylemmän tason sormenjälki. DS:n nuoli osoittaa DNSKEY:hin, johon se kuuluu |
Pyöristetty suorakulmio, esimerkiksi example.com/A | Tavallinen tietuejoukko. Siihen osoittava nuoli tulee avaimesta, joka on tehnyt allekirjoituksen (RRSIG) |
| Viiva kahden vyöhykkeen välillä | Delegointi ylemmältä tasolta alemmalle |
Ketjua seurataan näin: DS (ylemmällä tasolla) osoittaa DNSKEY:hin (omassa vyöhykkeessäsi), ja tämä DNSKEY allekirjoittaa tietueet RRSIG:llä. Tämä on juuri tämän oppitunnin ketju, mutta kuvana.
Värit kertovat, onko kaikki kunnossa:
- Sininen: turvallinen (secure). Ketju kulkee katkeamatta juuresta tähän osaan.
- Musta: allekirjoittamaton (insecure). DS:ää ei ole, joten tarkistettavaa ei ole. Tämä ei ole virhe, verkkotunnus vain ei käytä DNSSEC:iä.
- Punainen: rikki (bogus). DS ei vastaa avainta, tai allekirjoitus ei täsmää. Validoiva resolveri antaa silloin SERVFAIL-vastauksen.
- Violetti (allekirjoituksen kohdalla): allekirjoitus on vanhentunut tai ei vielä voimassa. Vyöhykettä ei enää allekirjoiteta uudelleen.
- Keltainen: varoitus, esimerkiksi nimipalvelin, joka ei vastaa kunnolla, tai algoritmi, jota työkalu ei tunnista.
- Harmaa ja pisteviivainen: viitataan avaimeen, jota ei ole olemassa. Jos näet pisteviivaisen DNSKEY:n DS:n alla, rekisterinpitäjällä on yhä vanhan avaimen DS: klassinen virhe siirron jälkeen.
Osan vierellä voi olla kolmio (varoitus) tai pyöreä virhemerkki. Vie hiiri sen päälle, tai katso kuvan alla olevaa listaa: siinä kerrotaan sanoin, mikä on vialla.
Kokeile vaikka sidn.nl-tunnusta (kaikki sinistä) ja dnssec-failed.org-tunnusta (punaista, pisteviivainen avain DS:n alla).
Muita työkaluja, jotka tarkastelevat samaa asiaa eri kulmasta:
- Zonemaster (
https://zonemaster.net/): tarkistaa koko vyöhykkeesi samaan tapaan kuin rekisterinpitäjä, myös DNSSEC:in. Tuloksena on lista, jossa on vihreää (hyvä), oranssia (varoitus) ja punaista (virhe). - internet.nl (
https://internet.nl/): verkkosivusto- ja sähköpostitesti näyttävät muun muassa, onko DNSSEC kunnossa verkkotunnuksellesi ja sähköpostipalvelimillesi, vihreillä täpillä tai punaisilla rasteilla. - Verisign DNSSEC Debugger (
https://dnssec-debugger.verisignlabs.com/): käy ketjun läpi askel askeleelta ja merkitsee jokaisen askeleen vihreällä täpällä tai punaisella rastilla. Kätevä, kun etsit yhtä tiettyä virhettä.
Käytä näitä aina DNSSEC:iin tehdyn muutoksen jälkeen, ja varmasti ennen ja jälkeen siirron. Anna työkalun analysoida rauhassa uudelleen: nämäkin työkalut käyttävät välimuisteja ja TTL-arvoja.
Käytännössä: näin se näkyy hallintapaneelissa
Oma WebOké:ssä otat DNSSEC:in käyttöön verkkotunnukselle kohdassa DNSSEC/DANE; paneeli luo avaimet ja lähettää DS:n rekisterinpitäjälle. DirectAdminissa ja ulkoisilla palveluntarjoajilla kuten Cloudflare se näkyy yleensä nimellä "Ota DNSSEC käyttöön"; Cloudflare näyttää sinulle silloin DS-tietueen, joka pitää itse syöttää verkkotunnusvälittäjälle. Muut hallintapaneelit toimivat samaan tapaan: aina on vaihe "luo avaimet" (DNS-palveluntarjoajalla) ja vaihe "DS rekisterinpitäjälle" (verkkotunnusvälittäjällä).
Yhteenveto
- DNSSEC allekirjoittaa DNS-vastaukset, jotta resolveri voi tarkistaa, että ne ovat aitoja. Se ei salaa mitään.
- DNSKEY on avain, RRSIG allekirjoitus, DS ylemmän tason sormenjälki.
- Tarkistus kulkee ketjuna juuresta verkkotunnukseesi. Jos lenkki katkeaa, validoiva resolveri antaa SERVFAIL-vastauksen.
- Lähes kaikki ongelmat johtuvat siitä, että rekisterinpitäjän DS ei enää täsmää, usein siirron jälkeen.
dig +cd:llä näet, johtuuko ongelma DNSSEC:stä.- DNSViz piirtää ketjun: sininen on turvallinen, musta on allekirjoittamaton, punainen on rikki. Zonemaster, internet.nl ja Verisign DNSSEC Debugger ovat hyviä toisia mielipiteitä.
Tietovisa
Tehtävä
Tehtävä Z8.1: DNSSEC näkyväksi. Selvitä, kummalla kahdesta verkkotunnuksesta DNSSEC on kunnossa ja kumpi on tahallaan rikottu: sidn.nl ja dnssec-failed.org. Kysy molemmille DS-tietue ja A-tietue validoivan resolverin kautta (esimerkiksi 1.1.1.1 tai 9.9.9.9), dig:illä tai verkkotyökalulla. Täytä: sidn.nl-tunnuksen DS:n avainnumero (key tag, ensimmäinen luku), ja tila, jonka saat dnssec-failed.org-tunnukselle.
Tehtävä Z8.1b: DNSViz:n lukeminen. Analysoi nlnetlabs.nl DNSViz:ssä (https://dnsviz.net/, kirjoita nimi ja klikkaa Go; klikkaa Update now, jos analyysi on vanha). Lue kuva ja täytä: (1) nlnetlabs.nl-tunnuksen tila (turvallinen, allekirjoittamaton tai rikki), (2) DNSKEY-tietueiden algoritminumero (näkyy jokaisessa soikiossa kohdassa alg=), (3) kuinka monta DNSKEY-soikiota nlnetlabs.nl-vyöhykkeessä on, (4) sen harmaalla täytetyn DNSKEY:n avainnumero (id=), johon DS osoittaa, ja (5) tila, jonka DNSViz antaa dnssec-failed.org-tunnukselle. Tarkistus hakee samat tiedot suoraan.
Tehtävä O8.1: Kolmen DNSSEC-demovyöhykkeen arviointi. Olemme luoneet kolme demovyöhykettä: signed-demo.dnspractice.com (toimiva ketju), broken-demo.dnspractice.com (tahallaan rikki) ja unsigned-demo.dnspractice.com (allekirjoittamaton). Selvitä kullekin vyöhykkeelle, onko se turvallinen, rikki vai allekirjoittamaton, esimerkiksi DNSViz:llä tai komennolla dig +dnssec (katso AD-lippu, ja kokeile SERVFAIL-tilanteessa myös +cd). Valitse alla jokaiselle vyöhykkeelle vastauksesi.
Lue lisää
Nämä artikkelit kuvaavat vaiheet WebOké:n hallintapaneeleissa; muilla palveluntarjoajilla painikkeet voivat olla eri nimisiä.
