DNS

DNS (Domain Name System) on Internetin nimipalvelujärjestelmä, joka muuntaa luettavat ja vertauskuvalliset nimet tietokoneosoitteiksi. Se koostuu useista järjestelmistä, joita kutsutaan nimipalvelimiksi. Nimipalvelujärjestelmää hyödyntävät monet sovellukset, kuten esimerkiksi verkkoselaimet ja sähköpostisovellukset. Sovelluksesta tulee nimipalvelujärjestelmän asiakas silloin, kun se tarvitsee nimen muuntamista. Asiakkaana sovellus lähettää pyynnön nimipalvelimelle, joka etsii vastaavan osoitteen ja palauttaa sen. Jos nimipalvelin ei kykene vastaamaan pyyntöön, muuttuu itse nimipalvelin toisen nimipalvelimen asiakkaaksi, kunnes löytyy pyynnön palauttava palvelin.

Jokainen DNS-tietokantaan tehty kirjaus sisältää kolme kohtaa: verkkotunnuksen eli domain-nimen, tietueen tyypin ja arvon. Tietueen tyyppi kertoo, miten arvo tulee tulkita. Se voi esimerkiksi ilmoittaa, että arvo tarkoittaa IP-osoitetta. Esimerkiksi kirjoitettaessa www.yksityisyydensuoja.fi selaimen osoiteriville hakee tietokoneeseen konfiguroitu nimipalvelin verkkotunnuksen tiedon muilta nimipalvelimilta, jotta löydetään lopulta IP-osoite ja tietokone, joihin kyseessä oleva domainnimi on liitetty. Tässä tapauksessa kyseessä on IP-osoite 146.185.130.206, ja tätä voidaan kokeilla myös toisin päin, eli laittamalla pelkästään 146.185.130.206 selaimen osoiteriville.

Verkkotunnukset ovat hierarkkisia siten, että tärkein osuus nimestä on oikealla. Muut vasemmalla puolella olevat segmentit määrittelevät puolestaan esimerkiksi organisaation yksittäisiä koneita. Nimipalvelujärjestelmä ei määrittele eri segmenttien määrää. Sen sijaan se määrittelee arvot tärkeimmille segmenteille, joita kutsutaan ylätason verkkotunnuksiksi (engl. top-level domain, TLD). Osa ylätason verkkotunnuksista on yleisluontoisia tunnuksia (engl. generic top-level domain, gTLD), mikä tarkoittaa, että ne ovat yleisesti käytettävissä olevia. Osa taas on rajattu erityisille ryhmille tai valtioille. Esimerkiksi yksityisyydensuoja.net on yleisluontoinen tunnus, ja yksityisyydensuoja.fi on Suomen maatunnusta käyttävä verkkotunnus. Verkkotunnusten eteen laitettava www-tunnus tarkoittaa, että tunnuksen omaava tietokone jakaa dokumentteja HTTP-protokollalla eri asiakasohjelmille. Tunnus siis viittaa käytettävään palveluun ja on lähinnä ihmisiä helpottamaan laadittu käytäntö.

Nimipalvelinten merkitys korostuu verkkosivuja ylläpitäessä, mutta yksityisyyden suojan kannalta kotikäyttäjänkin on syytä ymmärtää niiden toiminta. Käyttöjärjestelmät nimittäin sisältävät nimipalvelun asiakasohjelmiston, joka aktivoituu verkko-osoitteita selvittäessä. Asiakasohjelmisto lähettää tällöin nimipalvelukyselyt eteenpäin automaattisesti haetulle tai manuaalisesti lisätylle nimipalvelimelle, joka tekee varsinaiset nimipalveluselvitykset. Normaalisti tällaisena nimipalvelimena toimii käyttäjän Internet-palveluntarjoajan oma nimipalvelin. Tämä merkitsee sitä, että operaattori näkee erikseen myös kaikki nimipalveluselvityspyynnöt, joista voidaan nähdä suoraan millä verkkosivuilla käyttäjä on käynyt. Voit katsoa mitä DNS-palvelimia käytät ja kuinka hyvä suojaus niissä on tekemällä DNS leak testin ja Gibson Research Foundation DNS-testin.

DNS.WATCH nimipalvelimet: 84.200.69.80 / 2001:1608:10:25::1c04:b12f ja 84.200.70.40 / 2001:1608:10:25::9249:d69b
CensurfriDNS DNSSEC-tuetut nimipalvelimet: 89.233.43.71 / 2002:d596:2a92:1:71:53:: ja 91.239.100.100 / 2001:67c:28a4::
Swiss Privacy Foundation nimipalvelimet: 77.109.148.136 / 2001:1620:2078:136:: ja 77.109.148.137 / 2001:1620:2078:137::
Digitalcourage e.V. nimipalvelin: 85.214.20.141
Chaos Computer Club nimipalvelin: 213.73.91.35

Sensuurivapaita nimipalvelimia tarjoavat mm. DNS.WATCH, CensurfriDNS, Swiss Privacy Foundation, Digitalcourage e.V. ja Chaos Computer Club. Näiden lisäksi OpenNIC ja CloudNS tarjoavat omia sensuurivapaita nimipalvelimiaan, joiden osoitteet löytyvät kyseisiltä verkkosivuilta. Sensuurivapaiden DNS-palveluiden käyttö on suositeltavaa, koska niitä ylläpitävät aktiivisesti tietoturvasta ja yksityisyydensuojasta kiinnostuneet henkilöt. Myös kaupallisia VPN-palveluita käytettäessä on hyvä vaihtaa nimipalvelimet joihinkin edellä mainituista, yksityiskohtaista logia pitämättömistä nimipalvelimista, ellei VPN-palveluntarjoaja tarjoa omia julkisia nimipalvelimiaan.

Käyttöjärjestelmät käyttävät lisäksi hosts-nimistä tekstitiedostoa DNS-hakujensa tukena. DNS-asiakasohjelmat lukevat hosts-tiedoston sisällön käynnistyessään ja käyttävät sen merkintöjä hyödykseen. Kyseisen tiedoston avulla voidaan estää haluttujen verkkotunnuksien käyttö ohjaamalla ne reitittymään takaisin käytettävään laitteeseen eli IP-osoitteeseen 127.0.0.1 (localhost). Windows-käyttöjärjestelmistä hosts-tiedosto löytyy tiedostojärjestelmän osoitteesta %SystemRoot%\system32\drivers\etc\hosts, macOS-käyttöjärjestelmistä polusta /private/etc/hosts ja Unixin kaltaisista käyttöjärjestelmistä /etc/hosts tai /etc/hosts.deny. Tiedostoon voisi lisätä esimerkiksi 127.0.0.1 yksityisyydensuoja.fi, jolloin osoitteeseen menevät pyynnöt ohjautuisivat takaisin omaan koneeseen, eikä tällöin tietoja lähetetä kyseiseen osoitteeseen. Käytännössä tämä siis merkitsee sitä, että yksityisyydensuoja.fi-verkkosivulle ei enää päästä. Tällä tavoin voidaan estää mm. kohdennettuja mainoksia tarjoavia tai haittaohjelmia levittäviä sivustoja. Hyvän mainoksia blokkaavan hosts-listauksen tarjoaa esim. MVPS HOSTS.

DNS-asetusten vaihtaminen

DNS-asiakasohjelmiston nimipalvelimet voidaan asettaa ja vaihtaa joko reitittimen tai käyttöjärjestelmän verkkoyhteyden määrityksistä. Graafista käyttöliittymää hyödyntävät ohjeet DNS-palvelinten vaihtamiseen reitittimille, Windowsille, Linuxille ja macOS:lle tarjoaa mm. Comodo ja OpenNIC. Asetukset voidaan kuitenkin vaihtaa myös komentoriviltä käsin.

Windows

Avaa komentokehote järjestelmänvalvojana (paina Windows-näppäintä, kirjoita cmd, paina ctrl + alt + enter). Seuraavissa esimerkeissä käytetään Swiss Privacy Foundationin nimipalvelimia. Voit vaihtaa ne haluamiksesi esim. ylempänä olevan listauksen mukaan.

Listaa verkkoyhteydet nähdäksesi mille lisäys tehdään: netsh interface ip show config
Lisää nimipalvelin verkkoyhteydelle (vaihda tarvittaessa Local Area Connection): netsh interface ip set dns “Local Area Connection” static 77.109.148.136
Lisää seuraava nimipalvelin verkkoyhteydelle: netsh interface ip add dns “Local Area Connection” 77.109.148.137

macOS

Etsi käytettävän verkkoyhteyden nimi: sudo networksetup –listallnetworkservices
Korvaa verkkoyhteys omalla nimellään sekä haluamillasi DNS-palvelimilla: sudo networksetup -setdnsservers <verkkoyhteys> DNS1 DNS2
Esimerkiksi: sudo networksetup -setdnsservers Wi-Fi 77.109.148.136 77.109.148.137

Linux

sudo nano /etc/resolv.conf
Lisää esimerkiksi:
nameserver 77.109.148.136
nameserver
77.109.148.137
Estä tiedoston muuttuminen uudelleenkäynnistymisessä: sudo chattr +i /etc/resolv.conf
(Tarvittaessa saat asetuksen palautettua: sudo chattr -i /etc/resolv.conf)

tai voit muuttaa DHCP-asiakasohjelmiston konfiguraatiota:
sudo nano /etc/dhcp/dhclient.conf
lisää esimerkiksi: prepend domain-name-servers 77.109.148.136, 77.109.148.137;

 

DNS-välimuistin tyhjentäminen

Jos koneen nimipalvelimia tai hosts-tiedostoa muuttaa, niin on hyvä huomioida, etteivät muutokset tapahdu yleensä automaattisesti. Osa käyttöjärjestelmistä tallentaa DNS-tietoja paikallisesti ja tällöin tietokoneen DNS-välimuisti pitää tyhjentää, jotta muutokset toimivat. Tämän lisäksi selaimet saattavat varastoida DNS-tietoja, jonka vuoksi nämä on myös hyvä tyhjentää. DNS-välimuistin tyhjennys onnistuu eri käyttöjärjestelmissä ilman koneen uudelleen käynnistämistä hieman eri tavoin.

Windows

Valitse käynnistysvalikosta Suorita ja kirjoita cmd ja enter (Windows-näppäin + R -> cmd). Kirjoita avautuneeseen komentorivikehotteeseen ipconfig /flushdns, jolloin DNS-välimuisti päivittyy. Tämän jälkeen DNS-palvelimien tiedot voidaan tarkistaa esimerkiksi komennolla nslookup localhost. Vastaukseksi pitäisi saada tällöin muutetut palvelimet.

macOS

Avaa pääte ja kirjoita komento käyttöjärjestelmän version mukaan. Sulje selaimet ja tarpeen vaatiessa tyhjennä selainten välimuistit ja evästetiedostot.

OS X 10.10.4 tai 10.11 (Yosemite, El Capitan): sudo killall -HUP mDNSResponder
OS X 10.10-10.10.3 (Yosemite): sudo discoveryutil mdnsflushcache
OS X 10.9 (Mavericks): dscacheutil -flushcache;sudo killall -HUP mDNSResponder
OS X 10.7 tai 10.8 (Mountain Lion, Lion): sudo killall -HUP mDNSResponder
OS X 10.5 tai 10.6 (Leopard, Snow Leopard): dscacheutil -flushcache
OS X 10.4 (Tiger) tai vanhempi: lookup -flushcache

Linux

Useimmat Linuxit eivät oletusarvoisesti tallenna DNS-tietoja välimuistiin ja sen vuoksi tämä yleensä vaatii käyttäjältä erillisen ohjelmistopaketin asentamista tai päälle kytkemistä. Toisin sanoen, jos et ole asentanut erillistä nimipalvelinsovellusta, niin todennäköisesti DNS-välimuistia ei ole olemassa eikä siksi tarvitse tyhjentääkään. Muista kuitenkin poistaa selaimen tallentamat tiedot.

Hosts-tiedoston muuttamisen jälkeen (vaihda eth0 tarvittaessa):
ifconfig eth0 down && ifconfig eth0 up
Nscd: sudo service nscd restart tai sudo /etc/init.d/nscd restart
Dnsmasq: sudo service dnsmasq restart tai sudo /etc/init.d/dnsmasq restart
BIND: sudo rndc restart tai sudo /etc/init.d/named restart

 

DNSSEC

DNSSEC (Domain Name System Security Extensions) on nimipalvelinjärjestelmän laajennus, joka suunniteltiin suojelemaan Internetin käyttäjiä väärennetyltä DNS-tiedolta. Se todentaa nimipalvelimet salausavaimilla ja auttaa siten rakentamaan luottamuksen nimipalvelimen vastauksiin. Esimerkiksi ilman DNSSEC-laajennusta Internet-operaattorin nimipalvelin voitaisiin kaapata ohjaamaan verkkopankin kävijät hyökkääjän luomalle näennäissivustolle. Tällä tavoin käyttäjä ei todennäköisesti huomaisi mitään eroa, ja hyökkääjä voisi varastaa kaiken käyttäjän syöttämän tiedon ja hyödyntää niitä samanaikaisesti esimerkiksi tyhjentämällä käyttäjän pankkitilin.

DNSSEC allekirjoittaa digitaalisesti DNS-kyselyiden tiedot käyttämällä julkisen avaimen salausta. Verkkotunnusten haltijat luovat omat salausavaimensa, antavat julkiset avaimensa domain-rekisterinpitäjälleen, joka vuorostaan siirtää ne vyöhykeoperaattorille julkaistavaksi. Tämän lisäksi verkkosivuilla vierailevan käyttäjän on käytettävä DNSSEC-tukevaa nimipalvelinta, joka pystyy lukemaan salausavaimet. Vaikka DNSSEC tarjoaa tehokasta suojaa ja toimii hyvin normaalin DNS-käytön lomassa, on sen ongelmana sen suppea käyttö. Vain harvat verkkosivustot ja nimipalvelinten ylläpitäjät tarjoavat DNSSEC-ominaisuutta, eikä käyttäjä voi yksin tehdä asialle mitään. Silti on parempi vaihtaa omat nimipalvelimet DNSSECiä tukeviksi, koska tällöin estetään uhat edes niissä verkkosivuissa, jotka tarjoavat tämän mahdollisuuden. Voit kokeilla, onko käytössäsi DNSSEC-tukeva nimipalvelin Viestintäviraston testillä tai Verisignin testillä. Viestintävirasto tarjoaa myös testin, jolla voidaan katsoa, tukeeko verkkosivu DNSSECiä. Voit myös asentaa DNSSEC Validator -laajennuksen selaimeen, jolloin näet heti sivuilla käydessäsi, tukeeko sivu DNSSECiä.

 

DNSCrypt

DNSCrypt on asiakkaana toimivan laitteen ja resolverina toimivan nimipalvelimen yhteyden salaamisen mahdollistava työkalu. Yksinkertaisemmin sanottuna se salaa DNS-kyselyt lähiverkon ja nimipalvelimen välillä. Tämän vuoksi se estää käyttäjän vierailemien www-osoitteiden vakoilua ja MITM-hyökkäyksiä. DNSCrypt ei korvaa DNSSECiä, vaan ne huolehtivat tietoturvan eri osa-alueista ja täydentävät toisiaan. Yksinkertaistettuna: DNSSEC pitää huolen siitä, ettei käyttäjää voida huijata huomaamatta väärälle sivustolle, ja DNSCrypt pitää huolen siitä, etteivät ulkopuoliset näe, mitä sivustoja käyttäjä kirjoittaa selaimensa osoitepalkkiin. Kumpikaan näistä ei myöskään korvaa HTTPS-yhteyksiä tai salaa kokonaisvaltaisesti verkkoliikennettä tarkkailulta. Yksityisyyttään varjeleva joutuukin käyttämään eri asioita samanaikaisesti, ja DNSCrypt kuuluu olennaisena osana siihen. Listauksen vapaasti käytettävistä, DNSCryptiä tukevista palvelimista löydät täältä.

Windows

DNSCryptin käyttöönottaminen onnistuu helpoiten asentamalla joko Simple DNSCrypt-ohjelman tai DNSCrypt Windows Service Manager-ohjelman. Molemmat ovat helppokäyttöisiä sovelluksia, joissa valitaan vain käytettävät verkkosovittimet ja halutut DNSCrypt-palvelimet. DNS-palvelinten vaihtaminen onnistuu myös helposti ja tällainen tarve tulee kyseeseen erityisesti silloin, kun määritelty palvelin on alhaalla eikä siksi verkkosivujen selvityspyynnöt onnistu.

Ohjelmissa valitse ensin käytettävä verkkosovitin. Jos et tiedä tai osaa etsiä sitä, voit täpätä kaikki mahdolliset. Tämän jälkeen valitse haluamasi DNSCrypt-tarjoaja listasta. Protokollana käytetään normaalisti UDP:ta. Joissain tapauksissa kuitenkin palomuuri tai operaattorin asetukset saattavat estää UDP-protokollan käytön ja tällöin yhteys ei toimi. Siinä tapauksessa vaihda prokolla hitaampaan TCP:hen. Lopuksi tarkasta, että DNSCrypt toimii tekemällä DNS Leak Test.

macOS

MacOS:lle on tehty oma DNSCrypt proxy –asiakasohjelmansa, joka toimii OS X 10.8 (Mountain Lion)-, OS X 10.9 (Mavericks), OS X 10.10 (Yosemite) ja OS X 10.11 (El Capitan) ja macOS 10.12 (Sierra) -versioilla. Ohjelman voit ladata täältä.

Linux

Tarvittaessa asenna kääntäjät: apt-get install build-essential
Lataa uusin Libsodium.
Katso ladatun tiedoston tarkistussumma: openssl dgst -sha256 libsodium-0.5.0.tar.gz
Lataa tarkistussumma ja vertaa: dig +dnssec +short txt libsodium-0.5.0.tar.gz.download.libsodium.org
tar -zxvf libsodium-*.tar.gz
cd libsodium*
sudo ./configure && make
sudo make install

Lataa uusin dnscrypt-proxy täältä.
Katso tarkistussumma: openssl dgst -sha256 dnscrypt-proxy-1.4.0.tar.gz
Ota arvo palvelimelta ja vertaa: dig +short +dnssec TXT dnscrypt-proxy-1.4.0.tar.gz.download.dnscrypt.org
tar -zxvf dnscrypt-proxy*.tar.gz
cd dnscrypt-proxy*
sudo ./configure && make && make install
Tarvittaessa suorita: sudo ldconfig
Vaihda käytettävä nimipalvelin 127.0.0.2: sudo nano /etc/resolv.conf -> nameserver=127.0.0.2
DNSCryptin manuaalin näet komennolla: man dnscrypt-proxy
Listan käytettävissä olevista DNSCryptiä tukevista resolvereista löytyy täältä.
Tämän jälkeen DNSCryptin voi käynnistää esimerkiksi komennolla: sudo dnscrypt-proxy -a 127.0.0.2 –e 4096 –p /run/dnscryptroxy.pid –u dnscrypt -R dnscrypt.eu-dk

Käynnistyskomentoon voi lisätä lisäksi -d tai --daemonize arvon, jolloin prosessi suoritetaan taustalla eikä päätettä tarvitse pitää auki. Tämän lisäksi sen voi lisätä myös /etc/rc.local -tiedostoon, jolloin se suoritetaan automaattisesti käynnistymisen yhteydessä.