Monenlaisia palvelimia
Tietokoneiden tehon ja ennen muuta Internet-yhteyksien parantuessa on ruvettu pystyttämään palvelimia (servers) jopa henkilökohtaisiin kotitietokoneisiin. Tavallisinta on ehkä asentaa kotikoneeseen Web-palvelin (HTTP-palvelin). Palvelimia ovat Web-palvelimien lisäksi esimerkiksi FTP-palvelimet, Irc-palvelimet, sähköpostipalvelimet ja ns. news-palvelimet (NNTP servers).
Yhteydentarjoajan sopimusehdot tai määräykset voivat kieltää palvelimien asentamisen. Tämä johtuu muun muassa siitä, että palvelin voi aiheuttaa paljon sellaista verkkoliikennettä, johon ei ole varauduttu.
Usein pettävän helppoa
Palvelimen asentamisen pystyy usein tekemään melko vähinkin tiedoin; kohtalainen kyky lukea ja noudattaa asennusohjeita voi riittää. Tässä onkin perusongelma: sen voi tehdä ymmärtämättä, mitä oikeastaan tulee tehneeksi.
Palvelin omassa koneessa on usein mielenkiintoinen mahdollisuus, mutta siihen liittyy myös riskejä. Palvelin nimittäin antaa tietokoneesi muiden käyttöön verkon yli. Tarkoituksena on antaa se tarkoin rajattuun käyttöön, mutta tässä voi monta asiaa mennä pieleen. On syytä varautua jopa siihen, että lähtötilanteessa rajoituksia ei ole kytketty toimintaan. Lisäksi ne saattavat pettää.
Monet vahinkoa tekevät ohjelmat pyrkivät erityisesti etsimään ja käyttämään hyväksi Web-palvelinohjelmistojen turva-aukkoja. Usein ne siinä myös onnistuvat.
"Asiakkaat" ja palvelimet
Aluksi hiukan käsitteiden selvennystä. Web-selain kuten Internet Explorer tai Netscape on ohjelma, joka ottaa yhteyksiä eri puolilla oleviin tietokoneisiin, Web-palvelimiin, ja hakee niistä tietoja sekä voi mahdollisesti tallentaakin tietoa niihin eli muuttaa palvelimessa olevia tiedostoja. Vaikka selaimeen liittyy monenlaisia turvariskejä, niin selain ei normaalisti anna koko Internetin luettavaksi sen koneen tiedostoja, jossa selain toimii. Sen sijaan Web-palvelimen keskeinen tarkoitus ja idea on juuri sellainen avoimeen käyttöön saattaminen. Tosin sen pitäisi antaa vain määrätty osa koneen tiedostoista maailman saataville.
Vastaavasti on yleisemmin erotettava toisistaan "tavalliset" ohjelmat, jotka toimivat vain "asiakkaina" (asiakasohjelmina, client, user agent), ja palvelimet (servers), jotka vastaavat "asiakkaiden" esittämiin pyyntöihin. Pyyntö voi olla esimerkiksi "annapa tiedosto se-ja-se" tai "tallennapa tämä tieto sen-ja-sen nimiseen tiedostoon" tai "päivitä tietokantaasi näin-ja-näin" tai "laukaise ydinohjus maaliin se-ja-se", esitettynä erityisellä koodikielellä ("protokollalla"). - Viimeksi mainittu esimerkki ei (toivottavasti) vastaa todellisuutta, mutta se on mukana korostamassa sitä, että palvelin voidaan ohjelmoida ohjaamaan tosiaikaisesti todellista järjestelmää, muutakin kuin "vain" tietojenkäsittelyä.
Normaalisti "asiakkaat" on etenkin nykyisin tehty helppokäyttöisiksi niin, että käyttäjä ei näe, mitä teknisellä tasolla, koodikielellä, tapahtuu. Käyttäjä vain esimerkiksi kirjoittaa Web-selaimensa osoitekenttään www.ficora.fi/suomi/tietoturva/ ja painaa Enteriä; selain, joka siis toimii "asiakkaana", tällöin ottaa yhteyden palvelimeen www.ficora.fi lähettäen sille esim. koodikielisen pyynnön GET /suomi/tietoturva/ HTTP/1.0. Tähän palvelin normaalisti vastaa hakemalla omasta tiedostojärjestelmästään tiedoston, jonka osoite vastaa pyyntöä, ja lähettämällä kopion sen sisällöstä selaimelle, joka sitten sitten näyttää sen ikkunassaan.
Palvelin kotona
Aiemmin tilanne oli sellainen, että palvelimia toimi vain keskustietokoneissa tai erikseen palvelinkäyttöön varatuissa tietokoneissa. Nykyisin siis tavallinen työ- tai kotikäytössä oleva henkilökohtainen tietokonekin voi toimia muun ohessa palvelimena. Tämä saattaa esimerkiksi mahdollistaa sen, että tietokoneen käyttäjä hakee siitä tietoja tai tallentaa siihen jotain verkon kautta vaikkapa ollessaan matkoilla Australiassa. Ja vaarana sitten on, että joku muu kuin tietokoneen laillinen käyttäjä voi tehdä saman, jos onnistuu murtautumaan salasana- ja muiden suojausten läpi. Ja kuten edellä on kuvailtu, murtamiseen ei ehkä tarvita sen kummempaa kuin että joku katsoo olkasi yli, kun kirjoitat salasanaasi.
Aina valmiina! Mutta mihin?
Mutta palvelimeen liittyy myös erityisiä ongelmia sen takia, että palvelinohjelmiston luonteensa takia pitää olla avoin ottamaan vastaan pyyntöjä. Mitä tapahtuukaan, kun joku tekee ohjelman, joka lähettää palvelimelle pyynnön esimerkiksi tuhat kertaa sekunnissa jatkuvasti? Kone, jossa palvelin toimii, voi täysin hyytyä tällaiseen ns. palvelunestohyökkäykseen (Denial of Service).
Lisäksi voidaan tehdä ohjelmia, jotka lähettävät palvelimelle koodikielisiä pyyntöjä, jotka käyttävät hyväkseen turvallisuusaukkoja. Tyypillisesti ne ujuttavat palvelinohjelmiston suoritettavaksi pienen ohjelmanpätkän. Palvelinohjelmiston on toimittava tietokoneessa melko laajoin valtuuksin, ja siksi on olennaista, ettei se ota vastaan käskyjä mistä vain. Mutta rajoitusten toteuttamisessa on siis usein aukkoja.
Ensimmäiseksi lue ohjeet
On siis tärkeää perehtyä palvelinohjelmiston dokumentaatioon huolellisesti etenkin turvallisuuteen liittyvien asioiden osalta. Siinä voi olla vaikeita asioita, mutta silloin on syytä hankkia perustietoja, ennen kuin jatkaa. Voit tarvita yleisiä oppikirjoja, kursseja jne. etenkin tietoliikenteen ja koneesi käyttöjärjestelmän osalta. Yksittäisten vaikeiden kohtien selvittämisessä voi olla apua melko yleistajuisesta englanninkielisestä Webopedia-tietosanakirjasta ja muista verkossa olevista tietotekniikan sanastoista. <http://www.cs.tut.fi/~jkorpela/dt.html8>
Palvelinohjelmiston asetuksissa (konfiguroinnissa) voidaan yleensä rajoittaa sitä, mistä kaikkialta palvelin ottaa pyyntöjä vastaan, mitä kaikkea se saa koneessa tehdä jne. Asetukset on syytä käydä huolella läpi, luottamatta siihen, että oletusasetukset olisivat sopivat.
Toiseksi lue lisää ohjeita: seuraa uutisia
On myös syytä seurata jotakin tiedotus- ja keskustelukanavaa, josta saa tietoja kyseisessä palvelinohjelmistossa ilmenevistä turva-aukoista ja niiden tukkimisesta. Tällainen kanava, joka voi olla esimerkiksi Web-sivu tai sähköpostin kautta toimiva jakelulista (mailing list) toivottavasti mainitaan ohjelmiston asennus- ja käyttöohjeissa. Jos ei, on syytä ruveta epäluuloiseksi. Muutenkin dokumentaation puutteellisuus on aina huolestuttavaa; vaikka ohjelman ehkä saisikin jotenkin toimimaan arvailun, yrityksen ja erehdyksen menetelmällä, tulos ei ehkä ole kovin turvallinen!
Tuki turva-aukot
Ilmenevät turva-aukot pitää tietysti tukkia niin pian kuin mahdollista. Usein on syytä harkita palvelun välitöntä sulkemista (palvelinohjelmiston pysäyttämistä), kun merkittävä sitä koskeva turvaongelma on tullut tietoon. Väärinkäyttöä yrittävät saavat usein hyvin nopeasti tiedon turvaongelmista, ja "pommitus" on tavallisesti suurinta heti aukon tultua tietoon. Siksi on parempi aluksi sulkea palvelu ja odottaa ehkä muutama päivä, että luotettava korjaus löytyy ja ehditään toteuttaa. Mutta jos kyseessä on merkittävä julkinen tai kaupallinen palvelu, on syytä asiantuntijoiden arvioida tilannetta; muuten hätiköinnillä helposti aiheutetaan varma haitta, joka on suhteeton riskiin nähden eikä ehkä edes lainkaan auta vaaran torjumisessa.
Tapahtumatiedot talteen, mutta turvallisesti
Tyypillisesti palvelinohjelmisto tarjoaa mahdollisuuden kerätä tapahtumatiedostoa eli lokitiedostoa (log file), joka sisältää ehkä hyvinkin yksityiskohtaisen tiedon kaikesta, mitä jokin "asiakas" on palvelimelta pyytänyt ja miten palvelin on siihen vastannut. Tästä voi olla suurta apua ongelmien havaitsemisessa ja selvittelemisessä.
Mutta toisaalta on huomattava, että lokitiedostot usein kasvavat hyvin isokokoisiksi. Ne voivat huomaamattasi täyttää koko kovalevysi (ja siten aiheuttaa pahoja ongelmia) varsinkin, jos kone joutuu palvelunestohyökkäyksen kohteeksi! Tarkista siis, voidaanko ohjelmiston asetuksissa asettaa rajoja tiedostojen koolle ja missä määrin tietojen keruun laajuutta voidaan ja kannattaa rajoittaa. Mahdollisesti joudut aika ajoin "käsin" poistamaan vanhoja lokitietoja.
Asiantuntijaksi kasvaminen
Kaiken kaikkiaan sinun on syytä siirtyä peruskäyttäjän tasolta tehokäyttäjän ja teknisen asiantuntijankin tasolle, jos aiot ottaa käyttöön palvelimen. Tällöin Site Security Handbook (RFC 2196) on hyödyllistä peruslukemista, vaikka onkin jo melko vanha. <http://asg.web.cmu.edu/rfc/rfc2196.html>
Englannin kieli pitää käytännössä osata aika hyvin, koska mitä enemmän mennään turva-asioiden tekniikkaan, sitä enemmän niistä puhutaan vain englanniksi.
Tämän oppaan lopussa olevien linkkien kautta löytyy lisää aineistoa.
|