Tietokoneverkot / Pasi Ranne

Etätehtävä 20 / 21.10.1998

esitys : Marika Lappi

opponointi : Kristiina Vahtera

 

 

Domain Name System (DNS) eli

Internetin aluenimijärjestelmä

 

1. Lyhyt historia

 

Aikaisemmin Internet-osoitteita lisätietoineen talletettiin yksittäisiin HOSTS.TXT tiedostoihin. Tätä tiedostoa ylläpiti "verkkojen tietokeskus" Network Information Center (NIC). Kun HOSTS -tiedosto siirrettiin jonkin alueen pääserveriin, se piti asentaa myös kaikkiin siihen liittyviin koneisiin.

Ongelmia ilmaantui kun verkko kasvoi; isojen HOSTS -tiedostojen latausajat hallintokuluineen kasvoivat ylisuuriksi. Tämän lisäksi kaikki Internet-nimet piti rekisteröidä NIC:iin, joka tarkisti, ettei jokin nimi esiintynyt kahta kertaa - räjähdysmäisesti kasvavat www-palvelut hidastivat nimien tarkistusta ja niiden käyttöönottoa.

Siksi vuonna 1984 hyväksyttiin uudeksi Internet -nimien tarkistusjärjestelmäksi Paul Mockapertisin suunnittelema Domain Name System ja näin saatiin järjestelmä, joka kykeni poistamaan molemmat ongelmat samalla kertaa. (Andrew Anderson)

 

 

2. Aluenimijärjestelmä ja nimipalvelimet

 

Hierarkkinen nimeämismalli yksilöi koneen Internetissä. Aluenimi on ainutkertainen, kahdella koneella ei voi olla Internetissä samaa nimeä. Nimeämismalli kuvaa myös tietokoneen suhdetta muihin verkon koneisiin ja verkkoalueisiin, toisin kuin IP-osoite (194.100.34.1), jonka perusteella koneen fyysistä sijaintia ei voi päätellä. Ylimpänä aluenimijärjestelmän hierarkiassa on nimetön juuri, jonka alapuolella on kolme seuraavan tason aluetta; ARPA, yleiset alueet ja maaryhmät. Ylemmän tason alla ovat alemman tason verkkoalueet (com, edu, gov, int, mil, net ja org) ja lopulta yksittäiset isäntäkoneet.

Koska ohjelmistot ja tietokoneet toimivat 32-bittisillä numero-osoitteilla (100010001010101..), kehitettiin IP-osoitteen pistemerkintä (192.199.35.2). Useimmat www-osoitteet ilmaistaan nykyään kuitenkin palvelinkoneen nimellä. Tämä nimijärjestelmä, aluenimi (domain name), on kehitetty juuri ihmisiä varten, sillä nimet (pcuf.fi) on paljon helpompi muistaa kuin moninumeroinen lukusarja tai 32-numeroa ykkösinä ja nollina. Koska koneet kuitenkin tarvitsivat toimiakseen numeerisen osoitteen, tarvittiin järjestelmä, joka osasi muuttaa nimet IP-osoitteiksi ja päinvastoin. Tämän muunnoksen suorittaa siis Domain Name System (DNS) eli Internetin aluenimijärjestelmä.

 

Nimipalvelimessa (DNS server) on käännösohjelmisto (resolver), joka kääntää aluenimet IP-osoitteiksi. Ohjelmisto on yleensä asennettu sille erikseen varattuun tietokoneeseen, jota hallinnoi luvan saanut järjestö (jolla on vähintään kaksi koko Internet-verkosta tavoitettavaa nimipalvelinta). Jokaisella aluenimen vyöhykkeellä on yksi ensisijainen ja yksi tai useampia toissijaisia nimipalvelimia.

Toissijaiset palvelimet voivat toimia varmistuksena ylikuormitustilanteissa tai ensisijaisen palvelimen kaatuessa. Nimipalvelin voi toimia myös "valepalvelimena" reunapalvelimissa.

 

Paikalliselle nimipalvelimelle on talletettu tieto mistä osoitteesta löytyy seuraava nimipalvelin ja mistä ylemmän tason nimipalvelin eli nk. juuripalvelin (root nameserver). Juuripalvelimet tietävät minkä nimisiä alemman tason nimipalvelimia toimii hierarkkisesti niiden "alla". Rakenteeltaan aluenimijärjestelmä on valtava hajautettu tietokanta, jonka tiedot sijaitsevat fyysisesti pitkin Internetiä sijoitetuissa aluenimipalvelimissa. Ohjelmistoille (asiakkaille) tiedon fyysinen sijainti on yhdentekevää, ohjelmistot käsittelevät hajautettua tietokantaa yhtenä suurena tietokantana.

 

 

3. DNS:n päätehtävät

 

3.1 Palvelintietojen keräys

 

DNS toimii myös Internetissä yleisesti hyväksyttynä tapana tallettaa ja jakaa tietoja palvelimista. Esimerkiksi jos palvelin ei voi jostain syystä vastaanottaa postia, niin DNS:n MX-tietue kertoo mikä toinen palvelin tekee sen tämän puolesta.

Pääpiirteittäin mikä tahansa kone voi toimia DNS-asiakkaana, jos se käyttää yleisiä verkkopalveluita kuten Telnetiä, SMTP:tä tai FTP:tä. DNS on suunniteltu lähettämään viestejä eteenpäin asiakkaiden ja muiden palvelinten välillä, joten tämä kyky on syytä pitää mielessä kun rakennetaan turvallista palomuuria, joka hoitaa samalla DNS palveluita.

 

3.2 Vastata asiakkaan kyselyihin

 

DNS:n toisena tehtävänä on kääntää asiakkaan kyselemät aluenimet (hostnames) IP-osoitteiksi ja päinvastoin. Kun käyttäjä haluaa ottaa yhteyttä haluamaansa IP-osoitteeseen, selain joutuu selvittämään annetun aluenimen numeerisen osoitteen. Asiakaskone kysyy ensiksi paikalliselta nimipalvelimelta tätä osoitetta ja paikallinen nimipalvelin tarkistaa oman muistinsa josko siellä olisi tallessa asiakkaan kysymä osoite. Jos osoitetta ei löydy, nimipalvelin laittaa kyselyn eteenpäin seuraavalle nimipalvelimelle (esim. samassa verkossa). Kysely kiertää niin monella nimipalvelimella kunnes osoite löytyy tai kaikki mahdolliset palvelimet on käyty läpi. Kun ensimmäinen nimipalvelin saa lopulta asiakkaan pyytämän osoitteen (tai tiedon että osoitetta ei löydy) se tallentaa tiedon omaan muistiinsa ja lähettää IP-osoitetiedon sitten asiakaskoneen selaimelle. Asiakas ei siten tiedä löytyikö osoite lähimmästä nimipalvelimesta vaiko kauempaa Internetistä. Selain jatkaa yhteyden muodostamista HTTP-pyynnöllä.

 

 

4. Pakettien lähettäminen ja protokollat

 

DNS lähettää paketteja (kyselyitä) kahdessa tapauksessa:

      1. IP-osoitteiden haut (lookups)
      2. aluetietosiirrot (zone transfer)

 

IP-osoitteiden haut käynnistyvät DNS-asiakkaiden toimesta kun halutaan saada tietylle aluenimelle vastaava IP-osoite. Haut suoritetaan yleensä UDP-kyselyillä, mutta UDP-paketin "kadotessa" uusintahaku suoritetaan TCP-protokollalla. Poikkeuksena esim. IBM:n AIX joka käyttää aina TCP:tä.

 

Aluetietosiirrot käynnistyvät, kun toissijainen nimipalvelin pyytää tietoja ensisijaisen nimipalvelimen aluenimistön puusta eli juuresta (tämä tapahtuu vain saman alueen palvelinten kesken). Siirtoja ei tapahdu jatkuvasti, vaan vain silloin kuin se katsotaan tarpeelliseksi. Toissijainen palvelin lähettelee tasaisin väliajoin kyselyitä ensisijaiselle palvelimelle saadakseen tietää, koska sen kannattaa aloittaa aluetietosiirto. Joskus myös ihmiset voivat tehdä aluetietohakuja, jos tarvitaan esim. tilastotietoa siitä, mikä on ollut kaikkein suosituin Internet-sivu. Aluetietosiirrot tapahtuvat aina TCP-protokollan avulla.

 

 

5. DNS -taulun tiedot

 

Koska DNS on puumainen tietokanta, jolla on useita alatasoja levitettynä ympäri Internetiä, palvelimessa on oltava tieto siitä, minkä tyyppisiä tietoja puun tietyissä tietueessa on.

 

Tiedon tyyppi Käyttö

A Kääntää aluenimen IP-osoitteeksi

PTR Kääntää IP-osoitteen aluenimeksi

CNAME Kääntää viittauksen (aliaksen) palvelimen nimeen aluenimeksi

HINFO Antaa tietoja palvelimen tyypistä ja ohjelmista (Intel-486 BSDI)

NS Ohjaa alueen DNS-puun toiselle palvelimelle (myy.helia.fi)

SOA Aluetietosiirron pyyntömerkki (lähettäjänä toissijainen palvelin)

TXT Rakentamaton tekstitietue

MX Palvelin, joka toimii varapalvelimena tämän ollessa epäkunnossa

 

6. DNS:n turvallisuusongelmia

 

6.1 DNS-kyselyn saa väärän vastauksen (bogus answers)

 

Ensimmäinen turvallisuusaukko piilee DNS-palvelimen ja kyselyn tehneen asiakkaan välillä. Monet järjestelmät niin asiakkaan kuin nimipalvelimenkin puolella eivät tee tarkistuksia siihen mitä tulee vastauksen oikeellisuuteen; onko vastaus oikea kyselyyn nähden tai tuleeko vastaus edes siitä paikasta mistä esim. selain kuvittelee sen tulevan. Näin hakkerit voivat päästää verkkoon virheellisiä aluenimien osoitteita, jotka tallettuvat moniin nimipalvelimiin kyselyn matkan varrella, jos niiden oikeellisuutta ei missään vaiheessa tarkisteta. Tämä voi johtaa siihen, että selain luulee keskustelevansa oikean palvelimen kanssa vaikka todellisuudessa keskusteleekin hakkerin koneen kanssa. Koska käyttäjä ei voi tietää tätä, hän naputtelee luottavaisin mielin käyttäjätunnuksensa ja salasanansa hakkerille, jonka kone ilmoitta vain "Access denied - try again later" ja hakkeri pääsee näin oikealle palvelimelle saadulla käyttäjätunnuksella.

Tämän ongelman korjaa uudemmat varmistuskyselyt (double-reverse lookup), joita asiakasohjelma/selain voi tehdä.

 

6.2 Kelvoton tieto aluenimien ja IP-osoitteiden puussa

 

Kohdistuu hakkerin välittämään väärään tietoon edellisessä kohdassa.

Asiakas tai selain voi tehdä (tässä tapauksessa hakkerin) IP-osoitteen saatuaan kyselyn vastahaulla (reverse lookup) eli hakee palvelinta IP-osoitteen mukaan tarkistaakseen sen oikeellisuuden. Palvelin löytyy ja luullaan että se on edelleen se "oikea". Jos tehdään tuplavarmennus (a double-reverse lookup) eli kun IP-osoitetta haetaan vielä kerran annetulla palvelimen nimellä huomataan, että IP-osoite ei vastaakaan aluenimeä eli se on väärä. Viimeistään tällaisen virheilmoituksen tulisi herättää epäilys, että kaikki ei ole tiedonsiirrossa nyt kohdallaan. Jos näitä tarkistuksia ei tehdä joko käyttäjän tai selaimen toimesta, on väärän tiedon jakaminen pitkin verkon palvelimia juuri hakkerin toivoma tapahtumaketju. Siksi tärkeitä tietoja (esim. käyttäjätunnusta) verkkoon antavan on hyvä tietää miten tämä vastapuolen todentaminen on järjestetty.

 

Esimerkiksi Internetin pankkipalvelut on todennettu monilla salausjärjestelmillä, jossa selain vahvistaa mm. käyttäjältä saamallaan avaimella (käyttäjätunnus ja vaihtuva pin-koodi) yhteyden päätepankkiin ja todentaa pankin julkisen avaimen avulla keskustelevansa juuri oikean pankin palvelimen kanssa.

 

 

6.3 Liian tiedon paljastaminen hakkerille (revealing)

 

Monet yritykset saattavat pitävät sisäisessä verkossa olevissa palvelimissa liian paljastavia nimiä. Kirjanpito tai Lab2000 voivat paljastaa hakkerille missä ja minkä nimisissä palvelimissa pidetään tarkeitä tietoja. Hakkeri voi tietäessään tarpeeksi palvelimesta (IP-osoitteen ja nimen) esittäytyä puhelimessa järjestelmänvalvojaksi ja pyytää työntekijältä ylläpitoa varten käyttäjätunnuksen ja salasanan ko. palvelimeen. Työntekijä ei välttämättä isossa talossa kysy kyselijän henkilöllisyyttä - tietäähän tämä palvelimen tietoja jo näinkin paljon- vaan auttaa auliisti hakkeria.

 

Myös osa nimipalvelimen DNS-taulun tiedoista saattaa paljastaa sisäisen verkon koneesta arkaluontoisia tietoja. Tällaisia kenttiä ovat mm. HINFO ja TXT. Hakkeri voi myös taulun tietojen avulla lähettää aluetietopyynnön (ensisijaisen palvelimen DNS-taulusta) huijaamalla olevansa alueen yksi toissijainen palvelin ja näin käyttää tietoja hyväkseen murtautuessaan yrityksen verkkoon. Joten, miksi antaa tärkeitä tietoja tarjottimella hakkerille?

 

 

7. Valepalvelin näkymättömin DNS-tiedoin

 

Valepalvelin voi tulla ajankohtaiseksi siinä vaiheessa, kun halutaan saada turvallinen yhteys Internetiin tai halutaan pystyttää oma www-palvelin tiedon jakamista varten.

Valepalvelimeksi voidaan nimetä esimerkiksi kone (reunapalvelin eli bastion host), jossa toimii myös varsinainen palomuuriohjelmisto. Valepalvelimesta muodostetaan ensisijainen palvelin ja verkon muut koneet asetetaan toissijaisiksi. Valepalvelin tietää minkä nimisiä palvelimia sen verkossa on, mutta DNS-taulussa on vain niiden IP-osoitteet ja aluenimet - ei muita tietoja. Näin toimii myös DNS ns. proxypalvelimena niin sisään kuin ulospäinkin - yhteydenottaja näkee vain proxy-palvelimen osoitteen ja keskustelee sen kautta.

 

 

8. Sisäisen verkon DNS palvelin ja edelleenlähettäminen (forwarding)

 

Myös sisäisen verkon koneet tarvitsevat DNS-järjestelmää ja tietoja alueen palvelimista. Sisäisen verkon nimipalvelin voidaan muokata siten, että siihen on talletettu tiedot sisäisen verkon palvelimista ja yhdestä reitittimen takana olevasta reunapalvelimesta.

DNS on rakennettu niin, että palvelinohjelmisto käyttäytyy proxyn eli eräänlaisen välimuistin tavoin. Asiakas luulee keskustelevansa kohdepalvelimen kanssa vaikka todellisuudessa keskusteleekin nimipalvelimen kanssa. Aluenimiärjestelmässä on myös mahdollista käyttää edelleenlähetys (forwarding) -ominaisuutta, jolloin nimipalvelin toimii proxynä esim. talon sisäisessä verkossa. Verkon ulkopuolelle suuntautuvat kyselyt tiedetään ohjata reunapalvelimelle nimipalvelimeen asetetulla asennustiedostolla /etc/named.boot .

 

Joten kun tulee ulkoinen kysely, vaikkapa sähköpostiosoitteen tarkistus, sisäisen verkon nimipalvelin lähettää kyselyn reunapalvelimelle. Tämä palvelin toimii Internetin DNS-palvelimena ja pystyy siten kyselemään tietoja Internetistä ulkoisen reitittimen kautta. Reunapalvelin palauttaa saamansa vastauksen sisäisen reitittimen kautta sisäisen verkon nimipalvelimelle, joka lähettää sen edelleen asiakkaalle. Näin pakettien suodatuksen tasoa ei tarvitse välttämättä muuttaa sisäisessä verkossa, koska kaikki ulkopuolinen liikenne hoidetaan reunapalvelimen kautta.

 

Reunapalvelimen ja sisäisen verkon nimipalvelimen DNS-asetukset ovat erillisiä.

 

 

9. Sisäinen verkko kytkettynä reunakoneeseen ilman tiedon salausta

 

Jos verkkoon ei ole kytketty arkoja palvelimia/koneita, voi Internetiin kytkeytymistä helpottaa yksinkertaisemmallakin järjestelmällä. Turvallisuutta edistää kuitenkin reunakone, joka toimii palomuurin lisäksi toissijaisena palvelimena ja DNS-asiakkaana. Varsinaista nimipalvelinta ei tässä järjestelmässä ole, joten liikennettä lisää DNS-kyselyt Internetin nimipalvelimiin.

 

 

10. Yhteenveto DNS:n suosituksista

 

    1. Asenna DNS-palvelin reunapalvelimeen, jos sisäisestä verkosta on tarkoitus päästä Internetiin, turvallisesti.
    2. Älä aseta HINFO-tietueita ulkopuolisten saataville; poista ne joko kokonaan käytöstä tai toimi valepalvelimen avulla.
    3. Käytä päivitettyä BIND-toteutusta ja IP-osoitteen tuplavarmistusta välttääksesi tulemasta huijatuksi.
    4. Harkitse sisäisen DNS-tiedon salausta ja Internet kyselyn edelleenlähetyksen (forwarding) käyttämistä.
    5. Estä aluetietokyselyt muilta kuin oman alueesi toissijaisilta palvelimilta käyttämällä pakettien suodatusta.

 

 

"Näillä ohjeilla voit ainakin vaikeuttaa ja hidastaa hyökkääjän/hakkerin toimia."

 

 

 

Esitelmän pohjana on käytetty seuraavia lähdemateriaaleja:

 

Chapman, B. - Zwicky, E.D. 1995. Building Internet Firewalls. O’Reilly & Associates, Inc.278-296.

 

Sirola, H. - Linjama, T. 1996. INTERNET tuottajan paketti. 1. painos. Teknolit Oy. Gummerus Kirjapaino, 50 - 66.

 

Http:/www.dc.turkuamk.fi/LDP/LDP/nag/ by Andrew Anderson