Petteri Olkinuora Kerberos-käyttäjätunnistusjärjestelmä Tietotekniikan kandidaatintutkielma 11. kesäkuuta 2015 Jyväskylän yliopisto Tietotekniikan laitos
Tekijä: Petteri Olkinuora Yhteystiedot: petteri.olkinuora@jyu.fi Työn nimi: Kerberos-käyttäjätunnistusjärjestelmä Title in English: The Kerberos authentication model Työ: Kandidaatintutkielma Sivumäärä: 21+0 Tiivistelmä: Modernit tietojärjestelmät ovat siirtyneet keskustietokone-arkkitehtuureista hajautettuun malliin, jossa verkon eri palvelut sijaitsevat eri puolilla tietoverkkoa. Verkon eri palvelut vaativat käyttäjän luotettavaa tunnistamista ja tätä varten on jo pitkään kehitetty erilaisia hajautettuja käyttäjätunnistusjärjestelmiä. Kerberos-käyttäjätunnistusjärjestelmä on Massachusetts Institute of Technologyssä kehitetty hajautettu käyttäjän identiteetin tunnistamiseen kehitetty järjestelmä, joka on nk. Project Athenan yksi tuotos. Nykyään mm. Microsoft Windows verkot on rakennettu käyttämään Kerberosta käyttäjätunnistusjärjestelmänä. Avainsanat: Kerberos käyttäjätunnistus, Microsoft Kerberos, MIT Kerberos Abstract: Modern information systems have moved from central computers to a distributed model where different network services are located across the network. Secure network services require user authentication and since the services are distributed across the network user authentication must support this. Kerberos autentication is a distributed user authentication protocoll which was developed in Massachusetts Institute of Technology and Kerberos is one of the results of Project Athena. Nowdays Kerberos is widelly spread because Microsoft Windows Domains use Kerberos as the default user authentication system. Keywords: Kerberos authentication, Microsoft Kerberos, MIT Kerberos i
Termiluettelo Single Sign On Symmetrinen salaus Epäsymmetrinen salaus Windows Domain Active Directory (AD) Single Sign On (SSO) eli suomeksi kertakirjautuminen on menetelmä, jossa käyttäjältä vaaditaan tunnistautumista vain kerran, ja tämän jälkeen jälkeen käyttäjä pääsee käyttämään useita palveluita tunnistautumatta niihin erikseen. Järjestelmän pääajatuksena on helpottaa loppukäyttäjän eri palveluiden käyttöä. Symmetrinen salaus on on informaation salausmenetelmä, jossa informaatio salataan kryptografian avulla salaisuudella, jonka molemmat osapuolet tuntevat. Symmetrisen salaisuuden heikkous verrattuna epäsymmetriseen salaukseen on se, että molempien osapuolten on tunnettava sama salaisuus. Epäsymmetrinen salaus on informaation salausmekanismi, jossa informaation salaukseen käytetään eri salaisuutta, kuin salauksen purkamiseen. Epäsymmetrisessä salauksessa toinen osa salaisuudesta on julkinen ja toinen osa salainen. Purkamisen apuna käytetään monimutkaisia matemaattisia algoritmejä, jotka on kehitetty 70-luvulla. Toisin kuin symmetrisessä salauksessa, epäsymmetrisessä salauksessa salauksen purkamiseen käytetään eri salaisuutta, kuin informaation salaukseen. Windows Domain eli Windows toimialue on joukko Microsoft Windows työasemia ja palvelimia, joita voidaan keskitetysti hallita yhdeltä tai useammalta Windows-palvelimelta. Windows Active Directory on Windows toimialueen (eli Domain) käyttäjätietokanta ja hakemistopalvelu, joka sisältää tiedon kaikista toimialueen käyttäistä, salasanoista, tietokoneista, palveluista ja verkon resurssesta. Windows 2000, Windows 2003, Windows 2008 ja Windows 2012 käyttöjärjestelmät sisältävät Active Directoryn toiminnallisuudet. ii
Kuviot Kuvio 1. Kerberos tunnistuksen vaiheet.... 5 Kuvio 2. Kerberos tiketin uusiminen OS X käyttöjärjestelmässä.... 13 iii
Sisältö 1 JOHDANTO... 1 2 KÄYTTÄJÄTUNNISTUS JA KERBEROS... 3 2.1 Tunnistus ja Kerberos-tiketti... 4 2.2 Tiketin voimassaoloaika ja kello... 6 3 KERBEROITUVAT SOVELLUKSET... 8 3.1 Sisäänkirjautuminen järjestelmään... 8 3.2 Tiedostonjakopalvelu NFS... 8 3.3 Muita sovelluksia... 9 4 KERBEROS-PROTOKOLLAN HAASTEITA... 10 4.1 Haavoittuvainen salasanapalvelin... 10 4.2 Kerberos ei suojaa haitallisia ohjelmia vastaan... 11 4.3 Kerberos-tiketin voimassaoloaika... 11 4.4 Kerberos-tiketin uusiminen... 12 5 YHTEENVETO... 14 LÄHTEET... 15 iv
1 Johdanto Modernit tietojärjestelmät tarjoavat palveluita useille käyttäjille. Tästä syystä eri käyttäjien erottelu toisistaan ja käyttäjien identiteettien varmistaminen toisin sanoen käyttäjän tunnistus on tärkeässä roolissa nykyaikaisia tietojärjestelmiä suunniteltaessa. Järjestelmät ovat nykyään hajautuneet vanhasta keskustietokone-mallista tietoverkkoihin ja nämä verkon eri palvelut voivat fyysisesti sijaita etäällä toisistaan. Keskustietokone-mallissa käyttäjälle luodaan tietokoneeseen käyttäjätunnus ja salasana, joiden avulla käyttäjä pääsee käsiksi omiin tiedostoihinsa ja verkon palveluihin. Hajautetussa mallissa tämä ei toimi, sillä jokaiseen järjestelmään tulisi luoda erikseen käyttäjätunnus ja salasana. Verkon palveluiden määrän kasvaessa kasvaa myös käyttäjätunnusten ja salasanojen määrä. Moderneissa tietojärjestelmissä tulee olla keino jakaa käyttäjätunnus- ja salasanatietoja verkon kaikkien laitteiden kesken turvallisesti. Näin loppukäyttäjän ei tarvitse pitää huolta lukemattomista käyttäjätunnus ja salasana -yhdistelmistä. Eräs tällaisista hajautetuista käyttäjäntunnistusjärjestelmistä on Kerberos. Kerberos on tietoverkkoihin suunniteltu käyttäjätunnistusjärjestelmä, jonka avulla voidaan toteuttaa organisaation sisäinen turvallinen käyttäjätunnistus. Järjestelmä käyttää kryptografiaa ja salaisuuksia (salasanoja) identifioidakseen käyttäjän ilman, että verkon yli lähetetään sellaista informaatiota, jonka avulla hyökkääjä kykenisi varastamaan käyttäjän identiteen, ja käyttämään sitä omiin tarkoituksiinsa ( Neuman ja Ts o 1994). Kerberos on suunniteltu toimimaan avoimissa, turvattomissa verkkoissa ja organisaation palomuurien molemmin puolin ( MIT 2002b). Kerberos-autentikointi perustuu symmetriseen salaukseen ja Kerberosprotokolla käyttää kolmatta osapuolta käyttäjän varmistamiseen ( Garfinkel ja Spafford 1996). Kerberoksen nimi juontaa juurensa kreikan mytologiasta. Kerberos on kolmipäinen koira, joka vartio manalan porttia. Koiran kolme päätä kuvaa Kerberos-käyttäjätunnistusjärjestelmän kolmea osaa: käyttäjää, verkon palvelua, joka vaatii tunnistusta sekä käyttäjätunnistusjärjestelmää. Kerberos on alunperin kehitetty Massachusetts Institute of Technology:ssä eli MIT:ssä. Kerberos-protokollan eri versioita on viisi. Nykyään käytössä olevat toteutukset pohjautuvat MIT:n kerberoksen versioon viisi. Kerberos-protokollan versiot yhdestä neljään sisältävät yleisesti tunnettuja tietoturvaongelmia eikä näitä vanhempia Kerberos-protokollan versioi- 1
ta tästä syystä enää käytetä missään. Kerberos sai laajalti huomiota, kun Microsoft valitsi Kerberos-protokollan käyttäjätunnistusjärjestelmäksi Windows 2000 Domainiin. Kun Microsoft otti Kerberoksen käyttäjätunnistusprotokollaksi Windows 2000 Domainiin, teki Microsoft alkuperäiseen protokollaan tiettyjä laajennuksia. Näillä laajennuksilla Kerberos on varsin käytettävä protokolla käyttäjätunnistukseen ( MSDN 2015b). Ilman näitä laajennuksia Kerberoksen vaatimat turvallisuusseikat ovat usein liian tiukat, jotta protokollaa voisi oikeasti käyttää tehokkaasti hyödyksi organisaation käyttäjätunnistuksen välineenä ( Chappell 2002). Tämä kandidaatintutkielma on kuvaileva kirjallisuuskatsaus Kerberos-autentikointiprotokollasta sekä Microsoftin siihen tekemistä muutoksista. Tämä tutkielma on kahden dokumentaation vertailu käytännön sovellettavuuden näkökulmasta. Olen työssäni havainnut kokemuksen kautta, että Kerberos protokolla on joiltain osin heterogenisessä organisaatiossa liian rajoittava. Microsoftin tekemät muutokset protokollaan tekevät Kerberoksesta sovellettavamman. 2
2 Käyttäjätunnistus ja Kerberos Kerberos on protokolla, jonka tehtävänä on varmistaa identiteettejä suojaamattomissa verkossa ja huolehtia pääsynhallinnasta verkon palveluihin. Tässä luvussa kuvataan Kerberosjärjestelmän toiminnan pääperiaatteet ja käydään läpi keskeiset termit ja selitetään niiden merkitykset. Kerberos-tunnistuksen avulla voidaan varmistua organisaation verkossa jostakin käyttäjästä, palvelusta, tai tietokoneesta. Kerberos on nk. kertakirjausjärjestelmä eli Single Sign On - järjestelmä (SSO). SSO-järjestelmäksi kutsutaan sellaista käyttäjätunnistusjärjestelmää, jossa käyttäjän tunnistus tapahtuu vain kerran ja tämän jälkeen käyttäjä voi käyttää muita saman SSO-järjestelmän yhteydessä olevia verkon palveluita ilman, että käyttäjän pitää uudelleen tunnistautua niihin erikseen. Saman Kerberos-tunnistuksen piirissä olevat palvelut ja ihmiset kuuluvat samaan yhteisöön tai toimialueeseen eli Kerberos REALMiin. REALM yhdistää toimialueen tietokoneet, käyttäjät ja verkon palvelut yhdeksi SSO-kokonaisuudeksi, ja REALMin yhteydessä olevat verkon palvelut nauttivat luottosuhdetta toisiinsa nähden. Kerberos REALM yleensä kirjoitetaan aina isoilla kirjaimilla, jotta Kerberos yhteisön nimeä ei sotkettaisi Internetin domain-nimiin ( MIT 2002b). Kerberos on asiakas palvelin-järjestelmä, jossa asiakas on käyttäjä tai verkon palvelu. Palvelu on puolestaan verkossa sijaitseva palvelu, jonka käyttö edellyttää käyttäjän vahvaa tunnistamista. Kolmantena osapuolena käyttäjätunnistuksessa toimii Kerberos Key Distribution Center (KDC). KDC sisältää tiedon asiakkaista, palvelimista sekä salasanoista suojatussa muodossa ( MIT 2002b). Windows Active Directory Domainissa KDC on Windows Domain Controller. Avoimen lähdekoodin toteutuksissa KDC on palvelin, johon on asennettu avoimeen lähdekoodiin perustuva Kerberos Master Database. Avoimeen lähdekoodiin perustuvia Kerberos-toteutuksia ovat esimerkiksi MIT:ssä kehitetty alkuperäinen Kerberos v.5 ( MIT 2002a) toteutus, alunperin Ruotsissa kehitetty Heimdal Kerberos ( Heimdal 2015) sekä GNU Shishi ( Josefsson 2008). Modernien Linux-jakeluiden mukana yleensä toimitetaan nimenomaan MIT Kerberos-toteutus. 3
2.1 Tunnistus ja Kerberos-tiketti Kerberos-maailmassa käyttäjän tunnistamisesta käytetään yleisnimitystä tiketti tai Kerberostiketti. Tiketti on elektroninen informaatio, eräänlainen sähköinen lupalappu, jonka avulla käyttäjä tunnistetaan Kerberos-maailmassa. Kerberos-tiketti voi olla tallennettuna tiedostoon tai se voi asua tietokoneen keskusmuistissa ( MIT 2002a). Perusperiaate on, että käyttäjätunnistuksen ensimmäisessä vaiheessa (esimerkiksi tietojärjestelmään sisäänkirjautumisen yhteydessä) käyttäjä pyytää käyttäjätunnuksensa ja salasanansa avulla autentikointipalvelimelta Ticket Grainting Ticket (TGT) -nimistä Kerberos tikettiä. Saatuaan TGT:n, käyttäjä voi saada lisää valinnaisia lisätikettejä yksittäisiä verkon palveluita varten. Koska Kerberos on SSO-järjestelmä, käyttäjän täytyy käydä tunnistusprosessi läpi vain kerran saadakseen TGT:n. Sen jälkeen Kerberos huolehtii käyttäjätunnistuksesta muihin verkon palveluihin taustalla. Tunnistuspalveluna toimii KDC. KDC:ssa sijaitsee tieto kaikista käyttäjistä, verkon palveluista sekä salasanoista. Ensimmäisen tiketin (TGT) saa vain, jos käyttäjän tiedot löytyvät KDC:sta. Myös tietokoneet ja verkon palvelut ovat Kerberos-maailmassa käyttäjiä, ja heillä on oma salaisuus, joka on jaettu tunnistuspalvelun ja verkon palvelun välillä ( MIT 2002a) Kerberos-tunnistuspalvelin (KDC) voidaan ajatella koostuvan kahdesta osasta; käyttäjän tunnistuspalvelusta (Authentication Server, AS) sekä tiketin välityspalvelusta (Ticket Granting Server, TGS). Varsinainen Kerberos-tunnistus tapahtuu seuraavasti: 1) Käyttäjän kirjautuessa työasemaan työaseman kirjautumis- eli login-prosessi lähettää Kerberos-autentikointipalvelimen AS-palvelulle pyynnön saada käyttäjälle TGT. Tämä viesti on nimeltään KRB_AS_REQ. Pyyntö sisältää ainakin käyttäjätunnuksen ja aikaleiman. Pyyntö on suojattu käyttäjän salasanalla. Käyttäjän salasanan tietää käyttäjä itse sekä KDC. 2) AS-palvelu varmistaa käyttäjän tiedot käyttäjätietokannasta purkamalla viestin käyttäjän salasanalla. Seuraavaksi AS-palvelu luo vastausviestin, joka sisältää TGT:n ja sessio-avaimen. AS-palvelu salaa TGT:n ja sessio-avaimen sisältämän vastausviestin avaimella, jonka AS-palvelu johtaa käyttäjän salasanatietokannasta löytyneestä salasanasta. Tämän jälkeen AS-palvelu lähettää salatun vastausviestin takaisin työaseman 4
KEY DISTRIBUTION CENTER 1 AS TYÖASEMA 2 3 TGS 4 6 5 VERKON PALVELU KUTEN ESIMERKIKSI - TULOSTUSPALVELU - CIFS/SAMBA - NFS Kuvio 1. Kerberos tunnistuksen vaiheet. login-prosessille. Tämä viesti on nimeltään KRB_AS_REQ. Työaseman login-prosessi purkaa auki käyttäjän salasanan avulla autentikointipalvelimelta saadun viestin. Mikäli salasana on oikea, saa login-prosessi vastausviestin purettua ja käyttäjä saa AS-palvelun lähettämän TGT:n sekä sessio-avaimen. Mikäli loginprosessi ei saa purettua viestiä auki, on käyttäjän salasana väärä ja TGT ei ole käyttökelpoinen. Kun tunnistautuminen on onnistunut, käyttäjä voi TGT:tä käyttäen pyytää pääsyä verkon eri palveluihin. 3) Kun käyttäjä haluaa käyttää jotain verkon palvelua, työaseman sovellus lähettää tästä palvelu-tikettipyynnön TGS-palveluun. Tämä pyyntö sisältää työaseman nimen, Kerberos REALM -nimen sekä aikaleiman. Sovellus todistaa käyttäjän henkilöllisyyden lähettämällä TGS-palveluun käyttäjän tiedot, jotka on suojattu kohdassa 2) saadulla sessio-avaimella. Tämä viesti on nimeltään KRB_TGS_REQ. 4) TGS-palvelu avaa palvelu-tikettipyynnön sessio-avaimella, varmistaa käyttäjän henkilöllisyyden sekä työaseman palvelu-tikettipyynnön ja luo palvelu-tiketin. Palvelutiketti sisältää työaseman nimen, valinnaisesti myös IP-osoitteen, Kerberos REALM -nimen sekä palvelu-tiketin voimassaoloajan. Tämän jälkeen TGS-palvelu palauttaa 5
palvelu-tiketin työasemalle. Paluuviesti sisältää palvelu-tiketin, joka sisältää kaksi kopiota sessio-avaimesta; toisen, joka on suojattu työaseman salasanalla ja toisen, joka on suojattu sen palvelimen salasanalla, johon palvelupyyntö kohdistui. Tämä viesti on nimeltään KRB_TGS_REP. 5) Työaseman sovellus lähettää palvelupyynnön verkon palvelulle. Pyynnön mukana kulkee tiketti, joka on saatu vaiheessa 4). Verkon palvelu tarkistaa palvelupyynnön oikeellisuuden purkamalla kohdassa 4) salatun sessio-avaimen omalla salasanallaan. Verkon palvelu tarkistaa, että tiketti on oikea ja sallii pääsyn palveluun. Tämä viesti on nimeltään KRB_AP_REQ. 6) Mikäli molemminpuolista autentikointia tarvitaan, verkon palvelu vastaa autentikointipyynnöllä. Tämä viesti on nimeltään KRB_AP_REP. Huomattavaa on, että 1) Käyttäjän salasanan tietää vain käyttäjä itse ja KDC. Salasanaa ei koskaan tallenneta työasemalle. 2) Verkon palvelu X tietää oman salasanansa. KDC tietää verkon palvelun X salasanan. 3) Salasanoja ei välitetä verkon yli edes salattuna. Vain lyhytaikaisia palvelun tai käyttäjän salasanalla salattuja sessio-avaimia välitetään verkossa. 4) Kerberos-tiketin varastaminen verkossa ei hyödytä, sillä tiketin auki purkamiseen tarvittaisiin käyttäjän tai palvelun salasana. Näitä hyökkääjällä ei ole tiedossa, sillä salasanoja ei ole missään vaiheessa välitetty verkon yli. 2.2 Tiketin voimassaoloaika ja kello Kerberos-tiketillä on aina voimassaoloaika. Voimassaoloaika liittyy protokollaan turvallisuusominaisuuksiin. Kerberos on suunniteltu toimimaan täysin avoimissa verkoissa, joissa kuka tahansa voi monistaa tai kaapata verkkoliikennettä tai häiritä tai muuttaa liikenteen sisältöä. Kerberos-tiketit on suojattu symmetrisellä salauksella ja tiketeillä on voimassaoloaika, jotta mahdollisesti kaapattua tikettiä ei ehdittäisi purkamaan auki. Protokolla määrittää tiketille voimassaoloajan, joka on RFC:ssä kahdeksan tuntia ( Neuman 2015). Yhtä kahdeksan tunnin tikettiä voi taas uusia seitsemän päivän ajan. Saman tiketin uusiminen ei aiheu- 6
ta uutta salasanakyselyä. Aikavaatimuksen seurauksena myös kaikkien Kerberos REALMin jäsenten tulee jakaa sama yhteinen aika. Protokollan standardissa on määritelty, että REAL- Min jäsenten sisäiset kellot saavat poiketa toisistaan korkeintaan viisi minuuttia. Kerberos REALMissa REALMin jäsenten sisäiset kellot synkronoidaan Internetin aikapalveluilla, kuten esimerkiksi NTP-palvelulla (Network Time Protocol). Microsoft Windows implementaatiossa tiketillä on myös oletuksena kahdeksan tunnin elinaika. Windows työasema uusii käyttäjän Kerberos-tikettiä niin kauan, kun käyttäjä on kirjautuneena sisään ( Chappell 2002). Näitä oletusarvoja voi säätää Active Directory hallintatyökaluilla ( MSDN 2015a). Microsoftin dokumentaatiossa mainitaan, että Windows tallentaa käyttäjän salasanan salatussa muodossa käyttöjärjestelmän sisään paikkaan nimeltä Credential Cache. Windows käyttää käyttäjän tallennettua salasanaa uusiessaan käyttäjän TGT:tä ( MSDN 2015a). Alkuperäisessä MIT:n Kerberos-standardissa Credential Cacheen ei koskaan tallenneta käyttäjän salasanaa ( MIT 2015) vaan pelkästään sessio-avain. Microsoft implementaatiossa Kerberos-protokollasta käyttäjän salasana siis tallennetaan järjestelmään, jotta TGT uusinta ei aiheuttaisi käyttäjälle turhaa salasana-kyselyä. Alkuperäisessä MIT:n Kerberos-protokollan määrittelyssä salasanan tallentaminen työasemaan on kiellettyä. Microsoft ympäristössä TGT:tä voidaan siis uusia niin kauan, kun käyttäjä on kirjautuneena sisään. Näin ei ole järjestelmissä, jotka toteuttavat MIT:n Kerberos-protokollastandardin täydellisesti. Esimerkiksi Linux- ja MAC-järjestelmissä Kerberos-tikettiä ei koskaan uusita automaattisesti, vaan käyttäjän pitää osata huolehtia siitä itse. 7
3 Kerberoituvat sovellukset Tässä luvussa käsitellään Kerberos-järjestelmää käyttäviä loppukäyttäjän sovelluksia. Kerberos on Single Sign On -järjestelmä, jonka avulla käyttäjä tunnistautuu järjestelmään vain kerran. TGT:tä vastaan käyttäjä saa palvelukohtaisesti KDC:lta palvelutiketin, joka oikeuttaa verkossa olevia Kerberos-tunnistusta käyttävien sovellusten käyttöä. Useisiin loppukäyttäjän sovelluksiin on luotu tuki Kerberos-tunnistukselle. Myös sovellusohjelmoija voi rakentaa omaan sovellukseensa tuen Kerberos-tunnistukselle. Useissa moderneissa ohjelmointikielissä on suora tuki Kerberos-tunnistukselle. Sovellusohjelmoija voi myös käyttää valmiita API-rajapintoja, kuten GSS-API for Kerberos ja SASL. Näistä erityisesti GSS-API on hyvin tuettu kaikissa moderneissa käyttöjärjestelmissä (Windows, Linux, UNIX, MAC). 3.1 Sisäänkirjautuminen järjestelmään Tyypillinen toteutus Kerberos-tunnistuksesta on käyttäjän kirjautuminen järjestelmään. Käsitellään tässä yhteydessä käyttäjän kirjautumista työasemaan. Työaseman login-prosessi toimii juuri kuten luvussa kaksi on esitetty. Käyttäjä kirjautuu omalla käyttäjätunnuksellaan ja salasanallaan työasemaan ja KDC palauttaa työasemalle käyttäjälle TGT:n. Työasema tässä voi olla esimerkiksi Windows Active Directoryyn liitetty Windows-, Linux- tai MAC-työasema. Sisäänkirjautuminen voi tarkoittaa myös palvelimeen sisäänkirjautumista Kerberos-tunnuksella tai se voi olla esimerkiksi WWW-sivusto, jonka kirjautumisruutu käyttää taustalla Kerberos-järjestelmää käyttäjän tunnistamiseen. 3.2 Tiedostonjakopalvelu NFS Esimerkki Kerberoidusta sovelluksesta on NFS-tiedostonjakopalvelu. NFS eli Network File System on 80-luvulla Sun Microsystems:n kehittämä verkon yli toimiva tiedostojenjakopalvelu. Perustoimintamallissa NFS-palvelimelle kerrotaan, mihin IP-osoitteisiin, jokin palvelimella sijaitseva hakemistorakenne jaetaan (exportoidaan). Tämän jälkeen työasemalle asennettu NFS-asiakasohjelma voi pyytää tämän NFS-palvelimella sijaitsevan hakemistorakenteen käyttöönsä ja mountata sen osaksi työaseman omaa hakemistopuuta. Näin loppu- 8
käyttäjä pääsee omiin verkossa sijaitseviin tiedostoihinsa käsiksi. NFS-palvelin luottaa työasemaan IP-osoitteen perusteella. NFS-tiedostonjakoprotokolla on tästä syystä altis hyökkäyksille verkossa, eikä NFS-protokollaa yleisesti pidetä tietoturvallisena. NFS-protokollan perusversiota tulisikin käyttää vain suojatuissa sisäverkoissa. Tämän tietoturvaongelman takia NFS-protokollasta on tehty myös Kerberosta tukeva versio. Tämä Kerberoitu NFS-protokolla toimii eri tavalla, kuin perusversio NFS-protokollasta. Kun käyttäjä pyytää NFS-palvelimelta lupaa päästä omiin tiedostoihinsa käsiksi, käyttäjän työasemalla pyörivä NFS-asiakasohjelma ottaa yhteyttä KDC:n TGS-palveluun ja pyytää tiketin NFS-palvelimelle. TGS-palvelu palauttaa palvelutiketin työaseman NFS-asiakasohjelmalle ja vain tätä palvelutikettiä vastaan työaseman NFS-asiakasojelma voi tunnistautua NFS-tiedostonjakopalvelimelle ja vasta tunnistuksen jälkeen käyttäjä pääsee käsiksi omiin tiedostoihinsa NFS-palvelimella. Kerberos luo siis perinteiseen NFS-yhteyteen vahvan käyttäjätunnistuksen, joka on paljon turvallisempi, kuin pelkkä IP-osoitteeseen luottaminen ( Garfinkel ja Spafford 1996). 3.3 Muita sovelluksia Edellisessä kappaleessa käytiin tiivistetysti läpi Kerberoksen SSO-toiminnallisuus tunnistauduttaessa NFS-tiedostonjakopalveluun. Moniin ohjelmistoihin on nykyään lisätty tuki Kerberos-tunnistukselle ja tätä kutsutaan sovelluksen "Kerberoimiseksi". Windows-käyttöjärjestelmään Kerberos on nykyään rakennettu sisään ja esimerkiksi Windowsin tiedostonhallinta Explorer ja Microsoft Internet Explorer WWW-selain kykenevät käyttämään Kerberos-käyttäjätunnistusta. SSH-pääteohjelmista PuTTY ja sen seuraaja KiTTY tukevat Kerberostunnistautumista. Avoimen lähdekoodin Kerberoituja sovelluksia ovat muun muassa Open- SSH Secure Shell, OpenLDAP hakemistopalvelu, smbclient SAMBA/CIFS-tiedostonjakopalvelun asiakasohjelma, mount.nfs, mount.cifs, Nautilus GNOME-työpöytäympäristön tiedostonhallintaohjelma sekä Dolphin KDE-työpöytäympäristön tiedostonhallintaohjelma. 9
4 Kerberos-protokollan haasteita Tässä luvussa käsitellään Kerberos-protokollan erilaisia haasteita. Vaikka järjestelmä on paljon käytetty ja sitä pidetään laajalti turvallisena, liittyy protokollan turvallisuuteen tiettyjä riskejä, joista jokaisen Kerberoksen käyttöä suunnittelevan on syytä olla selvillä. Myös käytettävyyteen liittyy rajoituksia, joita sivutaan tässä luvussa. 4.1 Haavoittuvainen salasanapalvelin Hieman yksinkertaistettuna Kerberos on symmetristen salasanojen tietokanta sekä kokoelma apuohjelmia tämän tietokannan hyödyntämiseen ( Neuman ja Ts o 1994). Kerberosjärjestelmä toimii vain, kun KDC on päällä ja verkossa tavoitettavissa. Käyttäjätunnistusjärjestelmän toiminnan varmistamiseksi KDC-palvelimet pitäisi aina kahdentaa, jotta yhden KDC-palvelimen kaatuminen syystä tai toisesta ei vahingoita koko järjestelmän toimivuutta. Kahdennusta helpottaa se, että itse Kerberos-palvelu on tilaton toisin sanoen Kerberospalvelin ei säilytä tiketeistä tai tunnistautumisista tilatietoja, vaan tällaiset tilatiedot sijaitsevat itse tiketissä. Tämä helpottaa KDC-palvelinten kahdentamista, sillä tällaisia palvelimella asuvia tilatietoja ei tarvitse reaaliaikaisesti synkronoida kaikkien KDC-palvelinten kesken ( Garfinkel ja Spafford 1996). Riittää siis, että kaikki käyttäjät ja salasanat on synkronoitu kaikkien KDC-palvelinten kesken. Toinen haaste Kerberos-järjestelmässä on se, että kaikkien käyttäjien ja palveluiden salasanat asuvat kaikilla KDC-palvelimilla ja nämä salasanat on salattu yhdellä niin kutsutulla Kerberos Master -salasanalla. Tämä Kerberos Master -salasana sijaitsee kaikilla KDC-palvelimilla sillä KDC tarvitsee Master-salasanaa käyttäjien ja palveluiden salasanojen varmentamiseen. Mikäli jokin haitallinen taho pääsee murtautumaan KDC-palvelimelle ja onnistuu saamaan palvelimella pääkäyttäjän oikeudet, hän pääsee käsiksi Kerberos Master -salasanaan. Kerberos Master -salasanan avulla murtautuja pystyy avaamaan salasanatietokannasta kaikkien käyttäjien ja palveluiden salasanat ( Garfinkel ja Spafford 1996). Tämän jälkeen murtautuja voi valehdella verkossa olevansa mikä tahansa Kerberos REALMin käyttäjä tai palvelu. KDC-palvelimet onkin syytä suojata asianmukaisesti verkosta tulevia hyökkäyksiä vastaan. 10
Kerberos Master -salasana on myös syytä pitää hyvässä turvassa esimerkiksi lukittuna organisaation kassakaapissa. 4.2 Kerberos ei suojaa haitallisia ohjelmia vastaan Kerberoksessa ei ole ominaisuutta, jossa työasema tai sovellus autentikoisi itsensä käyttäjälle. Toisin sanoen käyttäjä ei voi olla varma, onko hänen työasemansa turvallinen käyttää ( Garfinkel ja Spafford 1996). Hyökkääjä voi esimerkiksi modifioida työaseman loginprosessia tallentamaan käyttäjän käyttäjätunnuksen ja salasanan tai vaikka lähettämään kaikki näppäinpainallukset verkkoon. Hyökkääjä voi myös asentaa koneelle agentin joka tarkkailee, milloin käyttäjä on onnistuneesti kirjautunut työasemaan. Kun käyttäjä on saanut TGT:n voi hyökkääjä käyttäjän TGT:tä apuna käyttäen autentikoitua käyttäjänä verkon palveluihin ja päästä esimerkiksi käsiksi käyttäjän tiedostoihin tiedostonjakopalvelimella. Kerberos ei siis tuo lisäturvaa työasemalla työskentelyyn. Työasemat kuuluu suojata asianmukaisesti viruksia ja haittaohjelmia vastaan. 4.3 Kerberos-tiketin voimassaoloaika Kerberos-tiketin turvallisuus perustuu symmetriseen vahvaan salaukseen sekä siihen, että tiketillä on voimassaoloaika, jonka umpeuduttua tiketistä tulee käyttäjälleen hyödytön. Protokollan standardissa on määritelty tiketille kahdeksan tunnin voimassaoloaika. Mikäli KDC sallii tiketin uusimisen (standarin mukaan näin on, mutta organisaation tietoturvapolitiikan takia tätä ominaisuutta on voitu rajoittaa), voi tikettiä uusia kahdeksan tunnin sisällä, jolloin käyttäjä saa lisää aikaa uuden kahdeksan tuntia. Protokollan standardi määrittelee, että yhtä tikettiä voi uusia seitsemän päivän ajan. Tiketin uusiminen ei aiheuta salasanakyselyä. Monissa organisaatioissa on voitu rajoittaa tietoturvasyistä esimerkiksi kirjautumisaikoja eli mihin aikaan päivästä käyttäjien oletetaan olevan työasemillaan ja mihin aikaan työaika loppuu eikä käyttäjien ole enää syytä käyttää järjestelmiä. Kerberos soveltuu tällaisiin käyttötarkoituksiin oikein hyvin. Standardin mukaan TGT on voimassa kahdeksan tunnin ajan, eli voidaan ajatella työntekijän tulevan töihin yhdeksään ja lähtevän kello viisi, jolloin hänellä on yhden TGT:n voimassa olon ajan lupa käyttää verkon palveluita ( Garfinkel ja Spafford 11
1996). Organisaatioissa, joissa käyttäjät voivat olla päiväkausia kirjautuneena sisään, seitsemän päivän rajoitus voi tulla vastaan ja rajoittaa työntekoa. Esimerkiksi tutkimuslaitoksissa, joissa käyttäjä ajaa työasemallaan raskasta laskentaan tai vaikkapa tietokonesimulaatioihin liittyviä viikkokausia kestäviä eräajoja, voi protokollan kahdeksan tunnin ja seitsemän päivän rajoitukset tulla vastaan. Kun tiketin voimassaoloaika päättyy, päättyy lupa käyttää verkon palveluita ja eräajo voi tämän vuoksi keskeytyä. Tälllaisiin käyttökohteisiin Kerberos soveltuu huonosti. Yleensä ratkaisuna on eristää pitkät eräajot erillisiin laboratorioympäristöihin, joissa Kerberos-palveluita ei käytetä. 4.4 Kerberos-tiketin uusiminen Kerberos-protokolla ei suoraan määritä, pitäisikö TGT uusia käyttäjän puolesta vai ei. Windows-työasema uusii login-session ajan TGT:tä automaattisesti. Linux-jakeluiden shellit ja työpöytäympäristöt sekä Macintosh OS X käyttöjärjestelmä eivät tätä tee. Organisaatiotasolla voidaan toki määritellä työskentelypolitiikka joka sanelee, että käyttäjän pitää kirjautua päivän päätteeksi työasemaltaan. Tällaisessa tilanteessa tikettiä ei koskaan tarvitsekaan uusia. Tiketti on voimassa työpäivän ajan ja seuraavana päivänä käyttäjä kirjautuu uudelleen työasemaan saaden näin uuden tiketin. Ongelmalliseksi asian tekee, mikäli käyttäjä tekee töitä työasemallaan kauemmin, kuin kahdeksan tuntia kerrallaan. Linux-työasemassa tiketin uusinta voidaan hoitaa esimerkiksi login-session yhteydessä käyttäjän oikeuksilla ajettavalla pienellä skriptillä, joka uusii tikettiä, kunnes seitsemän päivän raja tulee vastaan ja KDC evää uusimispyynnön. Yksinkertainen esimerkki tästä skriptistä on esitetty tässä. Komennolla kinit käyttäjä voi noutaa itselleen salasanaa vastaan KDC:ltä TGT:n. kinit -R puolestaan uusii olemassa olevaa Kerberos TGT:tä. kinit -R ei kysy salasanaa, joten skripti voi pyöriä taustalla käyttäjältä piilossa. Skriptin alussa käytetään toista Kerberos-komentoa klist kertomaan, onko kyseisellä käyttäjällä tikettiä. Jos tiketti on olemassa, yritetään se uusia ja jäädään tunniksi nukkumaan (sleep 3600). Tunnin päästä yritetään tiketin uusintaa jälleen. while-silmukka päättyy, kun klist palauttaa arvon epätosi eli TGT on lakannut olemasta voimassa toisin sanoen se on expiroitunut. kinit ja klist toimi- 12
vat kaikissa käyttöjärjestelmissä, jotka on yhdistetty Kerberos REALMiin ja joissa Kerberoskomentorivityökalut on asennettu. while ( klist &>/dev/null ) do kinit -R &> /dev/null; sleep 3600; done Macintosh OS X käyttöjärjestelmässä Kerberos-tiketille on rakennettu erillinen graafinen sovellus, jonka avulla käyttäjä voi listata omistamiaan tikettejä sekä tiketin sen salliessa uusia niitä. OS X ei Windowsin tavoin kakuta käyttäjän salasanaaa, joten myös OS X käyttöjärjestelmässä tiketin uusinta jää käyttäjän muistettavaksi. Kuvan 2 esimerkissä on käyttäjän hpjuutil Ticket Granting Ticket Kerberos REALMissa AD.JYU.FI. Kuvio 2. Kerberos tiketin uusiminen OS X käyttöjärjestelmässä. 13
5 Yhteenveto Tutkielman tavoitteena oli selvittää Kerberos-käyttäjätunnistusjärjestelmän toiminnalliset periaatteet sekä arvioida Kerberos-järjestelmän toimivuutta organisaation tunnistusjärjestelmänä. Tutkielmassa sivuttiin myös Microsoftin tekemiin laajennoksiin alkuperäisestä Projekti Athenan Kerberos viisi toteutuksesta. Tutkielmassa käytiin lyhyesti läpi myös Kerberosjärjestelmän turvallisuutta ja haasteita järjestelmän ylläpitäjän näkökulmasta. Kerberos-tikettijärjestelmä mahdollistaa turvallisen verkon yli tapahtuvan käyttäjätunnistuksen sekä Single Sign On -kertakirjaustoiminnallisuuden verkon eri palveluihin. Kerberosprotokolla on suunniteltu toimimaan avoimissa verkoissa ja sen turvallisuuden kulmakiviä ovat aikasidonnaisuus, tiedon salaus kryptografian keinoin, tiedon väliaikaisuus ja se, ettei salasanoja välitetä koskaan verkossa. Kerberos on laajalti tuettu järjestelmä ja Kerberosta tukee useat modernit ohjelmistot. Modernit Windows-, Linux-, UNIX- ja MAC-käyttöjärjestelmät tukevat Kerberos-käyttäjätunnistusta ja osaavat hyödyntää monipuolisesti Kerberos-tikettejä. 14
Lähteet Chappell, David. 2002. Exploring Kerberos, the Protocol for Distributed Security in Windows 2000. Saatavilla WWW-muodossa, http://www.microsoft.com/msj/0899/ Kerberos/Kerberos.aspx, viitattu 17.3.2015. Garfinkel, Simson, ja Gene Spafford. 1996. Practical Unix & Internet Security. Luku RPC, NIS, NIS+ and Kerberos, toimittanut Deborah Russel. O Reilly / Associates, Inc. Heimdal. 2015. The Heimdal Kerberos 5, PKIX, CMS, GSS-API, SPNEGO, NTLM, Digest- MD5 and, SASL implementation. Saatavilla WWW-muodossa, http://www.h5l.org/, viitattu 21.4.2015. Josefsson, Simon. 2008. GNU Shishi. Saatavilla WWW-muodossa, https://www.gnu. org/software/shishi/, viitattu 21.4.2015. MIT. 2002a. Kerberos V5 System Administrator s Guide. Saatavilla WWW-muodossa, http: //web.mit.edu/kerberos/krb5-1.3/krb5-1.3.5/doc/krb5- admin. html, viitattu 16.2.2015.. 2002b. Kerberos V5 UNIX User s Guide. Saatavilla WWW-muodossa, http:// web. mit. edu / kerberos / www / krb5-1. 2 / krb5-1. 2. 6 / doc / user - guide.html, viitattu 17.3.2015.. 2015. Credential cache. Saatavilla WWW-muodossa, http://web.mit.edu/ kerberos/krb5-1.12/doc/basic/ccache_def.html, viitattu 22.4.2015. MSDN. 2015a. How the Kerberos Version 5 Authentication Protocol Works. Saatavilla WWWmuodossa, https://technet.microsoft.com/en-us/library/cc772815(v= ws.10).aspx, viitattu 22.4.2015.. 2015b. Microsoft Kerberos. Saatavilla WWW-muodossa, https://msdn.microsoft. com/en-us/library/aa378747(v=vs.85).aspx, viitattu 16.2.2015. Neuman, C. 2015. The Kerberos Authentication Service. Saatavilla WWW-muodossa, http: //www.ietf.org/rfc/rfc4120.txt, viitattu 16.2.2015. 15
Neuman, C, ja T Ts o. 1994. Kerberos: An Authentication Service for Computer Networks. IEEE Communications Magazine 9:33 38. 16