Tietoturva
Tietoturvassa on monesti kysymys asenteista. Unixin rakenteen (ja siihen liittyvien perinteiden) sekä vapaiden ohjelmien runsauden ansiosta virukset ja "spyware" eivät juurikaan vaivaa Linuxia. Tämä ei kuitenkaan tarkoita, että Linux olisi haittaohjelmille immuuni.
Suurimmat riskit työpöytä-Linuxeissa ovat palvelujen säätö- tai ohjelmointivirheet (varo siis turhien palvelujen avaamista maailmalle) ja selainten tietoturva-aukot. Kannattaa huolehtia järjestelmän tärkeimmät päivitykset ajantasalle: Linuxeja koetelleet madot ovat hyödyntäneet ongelmia, jotka asianmukaisesti ylläpidetyissä asennuksissa oli korjattu aikoja sitten.
Lisävarmuuden tuomiseksi voi myös käyttää Palomuuria (joka helpottaa palvelujen rajaamisen aiotuille käyttäjille), tcpwrappersia (tavallaan palvelukohtainen palomuuri), SELinuxia ja IDSia (hyökkäyksentunnistusjärjestelmiä). Kaksi ensinmainittua ovat helppoja ottaa käyttöön eivätkä vaikuta koneen tavalliseen käyttöön (ellei palomuuria säädä liian tiukaksi).
*NIX-tyylisten järjestelmien vanhimpia tietoturvaetuja on pääkäyttäjän säästeliäs käyttö, jatka tätä perinnettä! Hyvä tapa olisi jättää pääkäyttäjäterminaali kokonaan avaamatta, ja hoitaa pääkäyttäjäoikeuksia vaativat hommat su:n tai sudon avulla.
Käyttöjärjestelmän ja ohjelmien päivittäminen
Kaikista ohjelmistoista löytyy ajoittain ohjelmointivirheitä, jotka heikentävät tietokoneen turvallisuutta. Valmistajat julkaisevat päivityksiä jotka korjaavat ohjelmistojen virheitä, mutta päivitysten asentaminen on käyttäjän vastuulla. GNU/Linuxin tapauksessa tarvittavat toimenpiteet riippuvat jonkin verran siitä, mikä jakeluversio on käytössä.
Kannattaa tarkistaa säännöllisesti (ehkä kerran viikossa) onko uusia päivityksiä saatavilla, ellei muistutuksia tule automaattisesti. Yleensä jokaisella jakelulla on oma sähköpostilista, millä tiedotetaan käyttöjärjestelmän ja ohjelmien tietoturvaan liittyvistä päivityksistä. Päivitykset asentuvat yleensä muutamalla hiiren klikkauksella tai parilla komennolla komentorivillä, kunhan "asennuslähteet" on oikein säädetty.
Jos osa ohjelmista on asennettu muualta kuin jakelun virallisista lähteistä, näiden ohjelmien päivityksistä pitää huolehtia erikseen. Asennuslähteen lisäämisen tai ulkopuolisen ohjelman asentamisen yhteydessä olisi hyvä selvittää, miten päivitykset tai tietoturvatiedotus on hoidettu tämän lähteen tai ohjelman osalta.
Alla on annettu ohjeet yleisimpien jakeluversioiden ja niiden tukemien ohjelmistopakettien päivittämiseen. Mikäli käytössä on niin vanha versio jakelusta että valmistaja ei enää tarjoa siihen tietoturvapäivityksiä, on jakelu syytä päivittää uudempaan versioon.
- Debian GNU/Linux
- Fedora Linux
- Gentoo Linux
- IT Linux, Lineox ja Spectra Linux: Kts. http://www.raimokoski.com
- Mandriva Linux
- Red Hat Linux
- SOT Linux: Päivityksiä ei enää julkaista, käyttäjiä suositellaan vaihtamaan johonkin toiseen jakeluun.
- SUSE Linux
- Ubuntu Linux
- Slackware Linux
Käyttöoikeuksien hallinta
Olennainen osa Linux-tietoturvaa on mahdollisuus rajoittaa käyttäjien oikeuksia tiedostojärjestelmään. Käyttöoikeudet määritetään käyttäjä- ja ryhmäkohtaisesti. Lisäksi Linuxin hakemistorakenteessa määritetään tarkkaan hakemistojen käyttöoikeudet niiden tarkoituksen ja käyttöoikeuksien mukaan. Nämä yhdessä luovat pohjan tietoturvalliselle käyttöjärjestelmälle.
Linuxin tietoturvaa parantaa tavallisen- ja pääkäyttäjän erottaminen toisistaan. Pääkäyttäjällä eli erityisellä root-tunnuksella, on kaikki oikeudet käyttöjärjestelmään ja näin myös suurin riski vahingoittaa käyttöjärjestelmää. Tavallisen käyttäjän oikeudet taas ovat hyvin rajoitetut, mahdollistaen kuitenkin normaalin päivittäisen toiminnan kuten dokumenttien kirjoittamiseen ja musiikin kuuntelemiseen.
Vaikka kotikäyttäjälle kahden käyttäjätunnuksen ja salasanan muistaminen kuulostaa absurdilta, on se ehdottomasti helpoin keino parantaa henkilökohtaista tietoturvaa. Esimerkiksi virusten ja haittaohjelmien levittäminen internetissä on helppoa ja ohjelmien virheiden vuoksi sellainen voi joutua myös omalle koneelle. Käyttämällä aina rajoitettua käyttäjätunnusta vähennät huomattavasti riskiä sotkea koko käyttöjärjestelmää.
Siis ohje yksinkertaistettuna:
- Kirjaudu sisään aina tavallisen "matti"-käyttäjän tunnuksilla, ei root-tunnuksilla!
- Älä lisää normaalille käyttäjätunnukselle oikeuksia, mitä et välttämättä tarvitse
- Käytä root-tunnusta ainoastaan ohjelmien ja järjestelmän asennukseen, kaikkia käyttäjiä koskeviin säätöihin yms. järjestelmän ylläpitoon, ei tavalliseen työhön
- Jos vieras ohjelma vaatii pääkäyttäjän tunnusta tai salasanaa, mieti kahdesti onko ohjelma välttämätön!
Suorittaaksesi ohjelman pääkäyttäjän tunnuksilla sinun ei tarvitse kirjautua ulos järjestelmästä. Voit kirjautua pääkäyttäjäksi eri virtuaalikonsolilla tai pääteikkunassa. Komentoriviltä minkä tahansa yksittäisen ohjelman voi suorittaa pääkäyttäjän oikeuksilla komennoilla su tai sudo. Pelkkä "su" vaihtaa pääkäyttäjän oikeuksiin "exit"-käskyyn saakka.
Useimmista jakeluista löytyy vastaavat ohjelmat myös graafisena. GTK-pohjaisissa ympäristöissä (GNOME, Xfce ym.) käytetään yleensä gksua (tuki sulle ja sudolle) tai gksudoa (tuki sudolle). KDE:ssä käytetään kdesua (tuki sulle, myös sudoa varten muokattuja versioita olemassa). Järjestelmän asetusohjelmien avaaminen tavallisena käyttäjänä aiheuttaa yleensä pääkäyttäjän salasanan kysymisen joko gksu(do)n tai kdesun avulla.
Selaimet
Useimmat www-selaimet ovat hyvin monimutkaisia ja nopeasti kehittyviä ohjelmia ja sen myötä alttiita ohjelmointivirheille. Ne myös käsittelevät monenlaista monimutkaista syötettä (kuten HTML, JavaScript ja Flash), johon on helppo ujuttaa virheitä hyödyntävää koodia.
Selaimet altistavat paitsi haittaohjelmille myös erilaisille huijauksille, kuten salasanojen ja luottokorttinumeroiden kaappaukseen väärennettyjen verkkosivujen avulla (phishing). Yksityisyyttä uhkaa lisäksi evästeiden ja muulta palvelimelta haettujen kuvien käyttö selaamistottumusten seuraamiseen.
Toistaiseksi Linuxin selaimia hyödyntäviä haittaohjelmia ei ole juurikaan esiintynyt, mutta Mozilla-sukuisten selainten yleistyessä haittaohjelmiakin on odotettavissa.
Nettisurffauksessakin tärkein puolustuskeino on ohjelmien (myös kuvankäsittelykirjastojen yms.) pitäminen päivitettyinä, mutta sen lisäksi kannattaa kytkeä JavaScript ym. ylimääräiset toiminnot pois käytöstä, silloin kun niille ei ole tarvetta tai kun käydään epäilyttävillä sivuilla. Mozilla Firefoxille on tehty esimerkiksi NoScript-lisäosa, jolla pystyy nopeasti sallimaan tai estämään sivustojen JavaScriptit.
Käynnistettävät tiedostot ja "autorun"
GNU/Linuxissa sähköpostiohjelmia ei yleensä ole säädetty ajamaan liitteenä tulevia ohjelmia, vaikka liitettä klikattaisiinkin.
Kun tiedosto on tallennettu tiedostojärjestelmään, se, tulkitaanko se ohjelmaksi, määräytyy tiedoston oikeuksiin sisältyvien suoritusoikeusbittien, ei tiedostopäätteen tai edes tiedoston sisällön perusteella. Näin ohjelmaa ei tallennuksen jälkeenkään pääse vahingossa ajamaan. Käyttäjä voi niin halutessaan erikseen asettaa tiedostolle suoritusoikeudet.
Sähköpostiohjelma tai tiedostoselain voidaan toki ohjelmoida niinkin, että ohjelmia pääsee klikkaamalla ajamaan, mutta tämä olisi turhaa tietoturvan vaarantamista.
Sama koskee CD-levyjen ja muitten irrotettavien medioitten autorun-ohjelmia: niitä ei yleensä ajeta ellei käyttäjä erikseen sitä pyydä. Vaikka CD-levyjen kautta ei viruksia juurikaan levitetä niin automaattikäynnistys on helppo tapa tehdä CD:stä Troijan hevonen (katso Sonyn rootkit).
Binäärien ajaminen ja pakettien kautta leviävät virukset
Mitä siis tehdä, jos netistä löytyy (tai sähköpostissa tulee) ohjelma, jonka haluaa ajaa. Jos kyseessä on valmis ajettava tiedosto, riittää että tallettaa sen jonnekin, asettaa suoritusoikeudet ja ajaa sen:
chmod a+x troijan_hevonen ./troijan_hevonen
Ohjelmalla on yleensä kaikki samat oikeudet kuin sen käynnistäjälläkin, eli ellei ohjelmaan luota, se pitää vähintään ajaa tähän tarkoitukseen erikseen luodulla tunnuksella, mieluiten ei ollenkaan.
Etuliite ./ (millä kerrotaan, että ohjelma on työhakemistossa) tarvitaan, jollei ohjelmaa ole asennettu ohjelmille tarkoitettuun hakemistoon (jotka on lueteltu PATH-muuttujassa). Tällä järjestelyllä estetään (pää)käyttäjää vahingossa ajamasta ohjelmaa, jolle on annettu jonkin toisen ohjelman nimi (tai sellaisen väärinkirjoitettu muoto).
Jos ohjelma tulee paketoituna (tar, rpm, deb tms.), paketin asentaminen asentaa tiedostot paketoijan määräämään paikkaan, mahdollisesti ylikirjoittaen muita tiedostoja (varsinkin jos paketin asentaa pääkäyttäjänä) ja asettaen tiedosto-oikeudet kohdalleen. Pakettiin saattaa kuulua myös asennuksessa ajettavia skriptejä. Pakettia ei siis pidä asentaa epämääräisistä lähteistä ja hiukankin epävarmoissa tapauksissa se pitäisi asentaa tarkoitukseen erikseen luodulla tunnuksella (jolle annetaan vain tarvittavat oikeudet asennuksen ajaksi).
SELinux ja GRSecurity
SELinux on patchi ("korjaus") joka mahdollistaa tarkemman auditoinnin ("turvallisuustarkastelut") järjestelmän suorittamien toimenpiteiden suhteen. Lähes kaikille tapahtumille on mahdollista määrittää "turvatasot". NSA on kehittänyt SELinuxin, jonka takia voidaankin olettaa sen täyttävän erittäin korkean turvallisuusluokituksen.
Säädettävyyden mukana tulee vaikeus; kuka jaksaa säätää kaiken pilkkua viilaten? Tämä on SELinuxin suurin ongelma: sen käyttöönotto on erittäin työläs.
SELinux on 2.6-sarjan kernelissä ("ytimessä") mukana ja sen kehitys tapahtuu ytimen ohessa. 2.4-sarjalaisiin tämä on saatavissa erillisenä patch-settinä ("korjaussarjana").
GRSecurity on kilpaileva "tuote" joka ei ole mukana valtavirrassa, mutta se tekijän mukaan mahdollistaa vielä suuremmat tietoturvatason säädöt.
Molemmat tuotteet ovat hyödyllisiä jos niille on tarvetta. Yleensä pärjätään normaaleillakin turva-asetuksilla, mutta vaihtoehdot ovat hyväksi.
TCP-wrapper
TCP-wrapper on käyttöoikeuskirjasto, jolla voidaan määritellä monimutkaisempia sääntöjä, ketkä pääsevät mihinkin verkkopalveluun ottamaan yhteyttä. Komennolla ldd /polku/ohjelmistoon | grep libwrap voi tarkistaa tukeeko palvelinohjelma TCP-wrapperia. Palvelun voi myös jättää tcpd:n käynnistettäväksi yhteyskohtaisesti inetd:n kautta, jolloin tcpd huolehtii rajoituksista.
Säännöt rakentuvat niin, että ensin pitää kieltää kaikki hosts.deny-tiedostossa ja sitten sallia yhteyksiä hosts.allow-tiedostossa (näin siis yleensä kotikoneella).
Esimerkki perussäädöistä, joissa sallitaan yhteydenotto SSHD-palvelinohjelmistoon vain verkkotunnusten omalafka.fi ja jokinlafka.fi alaisista koneista.
/etc/hosts.deny:
ALL: ALL
/etc/hosts.allow:
sshd: .omalafka.fi sshd: .jokinlafka.fi EXCEPT UNKNOWN
Nimien käyttö ip-osoitteiden sijaan aiheuttaa turvallisuusreiän: se, joka itse hallitsee omat nimipalvelimensa, voi asettaa koneen nimen haluamakseen. Ylläolevat säännöt kuitenkin riittävät automaattisten hyökkäysten torjumiseen, ainakin jollei omalafka.fi ole arvattavissa koneen oman nimen tms. perusteella. EXCEPT UNKNOWN suojaa hyökkäysiltä vaatimalla yhteensopivuus ip-osoitteella saadun nimen ja tällä nimellä saadun ip-osoitteen välillä, mutta samalla yhteydet voivat estyä nimipalvelin- tai verkko-ongelmien takia.
Palomuuri
Useimmiten verkkoon liitettävät laitteet on syytä suojata palomuurilla. Linux-palomuureista tietoutta löytyy Palomuurit-artikkelista.
Virustorjunta
Linuxille on tehty todella vähän viruksia, mutta esim. Windows-järjestelmien sähköpostia liikuttavissa palvelimissa tai tiedostosäilöissä voi olla tarpeen käyttää virustorjuntaa. Aiheesta lisää sivulla Virustorjunta.
SSH
Jos ajat SSH-palvelinta, kannattaa tarkistaa että soveltuvat SSH-turvatoimet on tehty. sshd käyttää yleensä sekä omia asetuksiaan, että pam-kirjastoa ja normaaleja unix-salasanoja. Asetusten yhteisvaikutus ei ole intuitiivinen, joten asiaa koskevien varoitusten lukeminen on hyvin suotavaa. Parasta on rajoittaa yhteydet muutamaan luotettavaan ip-osoitteeseen.