Maailmankartta, jossa kuvataan tietojen siirtymistä palvelinten välillä

DNS-tietojen turvallisuus

Vesa Viljanen Vesa Viljanen 5.9.2019 Lukuaika 13 min

Tänään vietetään kansallista DNSSEC Launch Day linkki avautuu uuteen ikkunaan -päivää. Päivän tarkoituksena on edesauttaa nimipalvelun tietoturvalaajennuksen käyttöönottoa Suomessa. Siksi ajattelin kirjoittaa hieman syvällisemmin asian tiimoilta. Tiedätkö, mitä merkitystä DNSSEC:illä tai muilla nimipalveluiden tietoturvaominaisuuksilla on verkkosivujen ja verkkotunnuksen omistajalle? Tai miten käyttäjänä voit parantaa nimipalvelimiin liittyvää tietoturvaasi?

DNS (Domain Name System) on Internetin nimipalvelujärjestelmä, joka selvittää verkkotunnukseen viittaavat IP-osoitteet ja muut tiedot. Nimipalvelinten ansiosta mm. sivuillemme pääsee kirjoittamalla valkohattu.fi selaimen osoitepalkkiin ja painamalla enteriä. Taustalla selain pyytää käyttöjärjestelmään määriteltyä nimipalvelinta selvittämään valkohattu.fi-verkkotunnukseen viittaavan IP-osoitteen, ja nimipalvelin puolestaan kysyy tätä tietoa muilta nimipalvelimilta. Tuloksen saatuaan palauttaa se tiedon selaimelle, minkä jälkeen käyttäjä yhdistetään sivustoon.

Ikävä kyllä nimipalvelinjärjestelmää ei rakennettu estämään väärinkäytöksiä, ja se onkin pitkään ollut suojaamattomin osa verkkoliikenteessä. Käyttäjien kannalta merkittävimmät tästä aiheutuneet ongelmat ovat olleet tarkkailu, sensurointi ja nimipalvelintietojen väärentäminen. Verkkosivujen omistajien kannalta suurimmat uhat sen sijaan ovat nimipalvelinten kuormittaminen toimintakyvyn estämiseksi ja niiden tulosten väärentäminen.

DNSSEC & DANE

DNSSEC (Domain Name System Security Extensions) on nimipalvelinjärjestelmän laajennus, joka suunniteltiin suojelemaan Internetin käyttäjiä väärennetyiltä DNS-tiedoilta. Se todentaa nimipalvelinten tarjoaman tiedon salausavaimilla ja auttaa siten rakentamaan luottamuksen nimipalvelinten vastauksiin. Eli nimipalvelinkyselyt ja -vastaukset eivät ole kryptografisesti varmennettuja, vaan itse tieto, jonka palveluntarjoaja on määritellyt. DNSSEC varmistaa siis tiedon eheyden.

Vastauksen saatuaan käyttäjän nimipalvelin varmistaa tiedon oikeellisuuden, ja jos kaikki täsmää, ohjaa se käyttäjän eteenpäin. Jos tiedon allekirjoitus ei täsmää, oletetaan kysymyksessä olevan hyökkäys eikä tietoja siirretä eteenpäin käyttäjälle. Ideaalisessa tilanteessa DNSSEC siis estää valheellisten nimipalvelutietojen siirtymisen käyttäjälle.

Toimiakseen DNSSEC vaatii kuitenkin tuen sekä juuritason nimipalvelimelta että verkkotunnukseen osoittavalta nimipalvelimelta ja lisäksi käyttäjän hyödyntämältä nimipalvelimelta. Käyttöönotto on ollut nihkeätä niin verkkotunnusten kuin myös käyttäjien hyödyntämien nimipalvelinten suhteen. Myöskään kaikki juurinimipalvelimet eivät tue DNSSECiä linkki avautuu uuteen ikkunaan vieläkään. Osasyy tähän on varmasti ollut se, ettei DNSSEC ratkaise suurinta osaa nimipalvelimiin kohdistuvista ongelmista, vaan vain pienen osan niistä. Voit kokeilla tällä työkalulla linkki avautuu uuteen ikkunaan, tarkistaako selaimesi käyttämä nimipalvelin DNSSEC-allekirjoitukset.

DNSSEC:in yhteydessä on hyvä mainita DANE-protokolla (DNS-based Authentication of Named Entities), jonka tarkoituksena on hyödyntää digitaalisia varmenteita verkkotunnuksissa ilman luotettuihin varmentajiin eli CA:han (Certificate Authority) turvautumista. DANE voi täydentää digitaaliseen varmenteeseen luottamista tai se voi toimia ilman niitä. Tämä olisi merkittävä muutos, koska nykyisin tämänkin sivun salauksen ja luottamuksen salauksen laatuun varmentaa CA. Esimerkiksi itse käytämme sivuillamme Let's Encrypt CA:n varmentamaa sertifikaattia, johon selaimet luottavat. Jos joku yrittäisi tehdä hyökkäyksen palvelimemme ja laitteesi yhteyden väliin ja väärentäisi sertifikaatin itse todennetulla varmenteella, ilmoittaisi selain siitä (koska sitä ei ole varmennettu luotettavalla CA:lla) ja varoittaisi menemästä sivulle.

Ongelmana on ollut kuitenkin se, että monet CA:t eivät ole varsinaisesti olleet kovin luotettavia. Toisekseen myös CA:t ovat joutuneet tietomurtojen kohteiksi ja näin ollen aiheuttaneet valtavan vaaratilanteen. CA:n sijaan DANE antaa DNSSEC:illä varmistetun nimipalvelimen todentaa digitaalisen sertifikaatin, jolla palvelimen ja asiakaslaitteen yhteys varmistetaan. Tällöin CA:n merkitys varmentajana vähenisi ellei jopa häviäisi ja sertifikaattiväärennökset olisivat hankalampia toteuttaa. Toistaiseksi DANE ei ole kuitenkaan saanut kunnollista tukea selainten taholta eikä siksi tule merkittäväksi ratkaisuksi ilman tätä. Toisekseen DANE TLSA -nimipalvelutietoja tulisi säännöllisesti päivittää, mikä tuo myös oman taakkansa ja varmasti vähentää osaltaan halukkuutta tämän käyttöön.

CAA & CT

Verkkosivujen sertifikaattien luottamusongelmaan on kehitetty myös kaksi muuta laajemmassa käytössä olevaa ratkaisua. CAA (Certification Authority Authorization) auttaa verkkosivujen omistajia asettamaan nimipalvelintiedon, jolla ilmoitetaan minkä CA:n sertifikaatteihin voidaan luottaa. CA:t joutuvat kunnioittamaan CAA-tietoa eivätkä saa luoda varmentamaansa sertifikaattia verkkotunnukselle, elleivät ne ole listattuna tietueessa. Tämä suojaa huijauksilta, joissa pyritään luomaan luotettu varmenne valesivulle hyväksikäyttämällä jotakin toista CA:ta. Suojaus ei ole kuitenkaan täysin ongelmaton, koska jos jokin CA onnistutaan hakkeroimaan, sertifikaatin luominen voi olla mahdollista CAA-tiedosta huolimatta.

CT (Certificate Transparency) on tietoturvastandardi, jolla pyritään tarkkailemaan ja tuomaan läpinäkyvyyttä siihen, mitä sertifikaatteja kullekin verkkotunnukselle on luotu. Näin ollen CA:t, selaimet sekä verkkotunnusten haltijat voivat nähdä sertifikaatit, jotka joku on luonut vahingossa tai tahallisesti. Tämä puolestaan poistaa sen uhan, ettei verkkotunnuksen haltija voisi tietää, onko hänen tunnukselleen luotu vääriä varmenteita.

Toiminnassa hyödynnetään CT-lokeja, linkki avautuu uuteen ikkunaan joihin tallennetaan reaaliaikaisesti tiedot verkkosivujen CA-varmistetuista varmenteista. Tämä estää tilanteet, joissa väärillä varmenteilla yritetään huijata käyttäjä luottamaan sivuun. Esimerkiksi jos jokin CA joutuisi hyökkäyksen tai huijauksen kohteeksi ja muille verkkosivuille onnistuttaisiin luomaan hyökkääjän kontrolloimia ylimääräisiä varmenteita, jäisi tästä tieto CT-lokeihin ja tilanteeseen voitaisiin reagoida nopeammin.

CT-lokien käyttö määritellään Expect-CT -otsikkotiedolla, ja siksi tämä on hyvä määrittää palvelimen asetuksista tai vaihtoehtoisesti sivusta käsin. Verkkosivujen pitäjän ei tarvitse itse ylläpitää CT-lokeja tai lähettää sertifikaattinsa tietoja niihin, vaan tämä on CA:n vastuulla. Tarkempia tietoja Expect-CT -otsikkotiedon käytöstä löydät artikkelistamme Verkkosivun tietoturvaotsikot.

Hakkeri tietokoneen ruudulla on saanut haltuunsa DNS-tiedon.

DoT | DoH | DNSCrypt

Käyttäjän näkökulmasta katsottuna suuri ongelma DNS-hakujen suhteen on se, että normaalisti kyselyt liikkuvat täysin salaamattomasti verkon yli. Tämä mahdollistaa verkon tarkkailun ja sensuroinnin sekä helpottaa DNS-hakuihin kohdistuvia hyökkäyksiä. DNS-tietojen salaamista varten on kehitetty useita menetelmiä, joista merkittävimmät standardoidut menetelmät ovat DoT (DNS over TLS) ja DoH (DNS over HTTPS). Molempien tapojen ideana on tarjota luottamuksellisuus hyödyntämällä tiedonsiirrossa TLS-protokollan (Transport Layer Security) salausta, mutta hieman eri keinoilla.

DoT lähettää DNS-kyselyt portin 853 yli (normaalin portin 53 sijaan) ja mahdollistaa näin DNS-tietojen liikkumisen seurannan varsinkin ympäristöissä, joissa verkkoliikennettä on tarvetta jollakin tasolla seurata. Kyselyt kuitenkin salataan, eivätkä pyynnöt tällöin liiku selkokielisenä verkossa. DoH puolestaan hyödyntää normaalia HTTPS-porttia 443 sekä HTTP/2:ta yhteyden muodostamiseen. Näin DNS-liikenne piiloutuu normaalin HTTPS-liikenteen sekaan, mikä vaikeuttaa sen seuraamista. Cloudflaren testillä linkki avautuu uuteen ikkunaan voit kokeilla onko DoT tai DoH käytössä selaimessasi.

On hyvä tiedostaa, että kaikissa tapauksissa DNS-tiedot eivät liiku salattuina (DoT:sta/DoH:sta huolimatta) vaan SNI (Server Name Indicator) saattaa paljastaa kyselyn. Kyseinen TLS:n SNI-laajennus tarjoaa mahdollisuuden ylläpitää useita eri varmenteilla suojattuja verkkosivuja saman IP-osoitteen alla, mikä on hyvin yleinen käytäntö. Tämä tieto lähetetään ennen TLS-salauksen muodostamista ja siksi se liikkuu salaamattomana. Siksi salataksesi SNI-tiedon tulee asiakasohjelman hyödyntää salattua SNI:tä. Tämän voi vaihtaa myös selaimen asetuksista. Voit tarkastaa Cloudflaren SNI-testillä linkki avautuu uuteen ikkunaan tilanteesi.

DNSCrypt linkki avautuu uuteen ikkunaan todentaa DNS-asiakasohjelman ja valitun nimipalvelimen välisen yhteyden aitouden kryptografisilla allekirjoituksilla. Käytännössä se estää verkkotunnuksiin viittaavien DNS-tietojen väärennyksen lähiverkosta käsin, koska väärennetyt tiedot voidaan tunnistaa eikä niitä ohjata käyttäjälle. Lisäksi DNSCrypt tarjoaa DNS-tietojen salauksen. DNS-liikenteen tapahtuminen voidaan kuitenkin nähdä verkkoa tarkkailemalla, eli metatietoja DNSCrypt ei yksinään peitä. DNSCrypt-palvelimet voivat kuitenkin tukea DNSSEC:iä ja DoH:ia, jolloin useiden tapojen hyödyt saadaan yhdistettyä.

Mitä verkkosivujen ylläpitäjän ja käyttäjän tulisi tehdä?

Sanomattakin selvää lienee se, että DNS-tietojen hallinta tulisi turvata mahdollisimman hyvin. Tehokkaat salasanat, kaksivaiheinen tunnistautuminen, kirjautumisvaroitukset, verkkotunnuslukitukset ja tarkka pääsynhallinta varmistavat paremman tietoturvan. Jos tunkeutuja pääsee käsiksi organisaation nimipalvelintietojen muutoksiin, se tarkoittaa miltei varmasti pelin loppua. Verkkotunnusten käyttäjät voidaan tämän jälkeen ohjata hyökkääjän palvelimelle, DNS-varmenteiden käyttö voidaan lopettaa ja verkko-osoitteet voidaan pahimmassa tapauksessa siirtää täysin hyökkääjälle. Tämän vuoksi tietoturvasta kannattaa pitää tarkkaan huolta.

Koska DANE ei ole saanut suurta suosiota ja tuntuu enemmänkin häviävän käytöstä, tuo se mieleen nopeasti myös kysymyksen DNSSEC:in tarpeellisuudesta. Toisaalta verkkosivujen turvallisuuden parantamisesta ei ole useimmiten haittaa, kunhan asian vain tekee huolellisesti. DNSSEC tarjoaa lisäturvaa DNS-tietojen eheyteen, kun taas CAA ja CT puolestaan täydentävät toisiaan ja auttavat varmistamaan verkkosivujen varmenteiden luotettavuuden. Nämä kannattaa ottaa käyttöön, jos vain mahdollista.

Verkkosivuja käytettäessä joudutaan kuitenkin hyödyntämään nimipalvelinta, joka tukee haluttuja ominaisuuksia. Osa ihmisistä haluaa sensuurittomuutta, toiset tarkkailemattomuutta, useimmille tietojen varmentaminen on tärkeintä, mutta DNS-tietojen salaus hyödyttää kaikkia käyttäjiä. Nimipalvelintietojen salaaminen vaikeuttaa myös lähiverkosta käsin tehtäviä hyökkäyksiä, joilla uhri voidaan ohjata valesivulle tunnusten kaappaamista tai muuta huijaamista varten. Siksi käyttäjänä kannattaa hyödyntää luotettavaa nimipalvelinta ja DNS-hakuja salaavia menetelmiä, kuten esimerkiksi DNSCryptiä.