Tietoturva

Linux.fista
Versio hetkellä 18. lokakuuta 2007 kello 14.50 – tehnyt 130.232.213.59 (keskustelu) (pari sanaa lisää päivittämisestä ja säädöistä roottina; muokattu rootiksi kirjautumista)
Siirry navigaatioon Siirry hakuun

Rant

Tietoturvassa on monesti kysymys asenteista, tosin onneksi Linuxille on erittäin vähän viruksia ja spywarea. Kannattaa silti huolehtia järjestelmän tärkeimmät päivitykset ajantasalle. Lisävarmuuden tuomiseksi voi myös käyttää palomuuria, tcp-wrapperia, SELinuxia ja IDSia (eli hyökkäyksentunnistusjärjestelmiä). *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 päivittäminen

Kaikista käyttöjärjestelmistä löytyy ajoittain ohjelmointivirheitä, jotka heikentävät koneen turvallisuutta. Valmistajat julkaisevat päivityksiä jotka korjaavat virheet, mutta päivitysten asentaminen on käyttäjän vastuulla. Linuxin tapauksessa tarvittavat toimenpiteet riippuvat jonkin verran siitä, minkä valmistajan jakelupaketti on käytössä.

Kannattaa tarkistaa säännöllisesti (ehkä kerran viikossa) joko uusia turvapäivityksiä olisi saatavilla, ellei muistutuksia tule automaattisesti. Yleensä linux-jakelulla on myös sähköpostilista, millä tiedotetaan tietoturvaan liittyvistä päivityksistä yms. Tietoturvapäivitykset asentuvat yleensä muutamalla klikkauksella tai parilla komennolla, kunhan "asennuslähteet" on oikein säädetty.

Alla on annettu ohjeet yleisimpien jakeluiden päivittämiseen. Mikäli käytössäsi niin vanha jakelu että valmistajalta ei enää saa siihen tietoturvapäivityksiä lainkaan, on koko järjestelmä syytä päivittää uudempaan versioon.

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:

  1. Kirjaudu sisään aina tavallisen "matti"-käyttäjän tunnuksilla, ei root-tunnuksilla!
  2. Älä lisää normaalille käyttäjätunnukselle oikeuksia, mitä et välttämättä tarvitse
  3. Käytä root-tunnusta ainoastaan ohjelmien ja järjestelmän asennukseen ja kaikkia käyttäjiä koskeviin säätöihin, ei mihinkään muuhun
  4. 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.

Työpöytäympäristöistä löytyy vastaavat ohjelmat myös graafisena. GNOMEssa sudo-komentoa vastaa gksudo ja KDE:ssä ksud. Esimerkiksi Ubuntussa Synaptic-paketinhallinnan käynnistäminen kysyy pääkäyttäjän salasanan automaattisesti, käyttäen kyseistä gksudo-ohjelmaa.

Käynnistettävät tiedostot ja "autorun"

GNU/Linux on myös suojautunut tehokkaasti muilta ehkä hieman perinteisemmiltä virusten levitystavoilta. Hyvinä esimerkkinä toimivat ns. piilotetut tiedostoformaatit ja oletusformaatit käynnistettäville tiedostoille. MS Windows käyttöjärjestelmät pitävät oletuksena kaikkia .exe, .bat, .com, .pif, .vbs sekä .scr tiedostoja käynnistyvinä, tämä tarkoittaa sitä että käyttäjä voi suoraan käynnistää ohjelman vain tuplaklikkaamalla. GNU/Linux käyttöjärjestelmä taas käsittelee kaikkia tiedostoja suoraan tekstitiedotoina ja niille täytyy ensin antaa käynnistysoikeus ennen kuin ne pystytään ajamaan. Tämä käytännössä lisää yhden kynnyksen lisää tiedostojen käynnistämiseen hieman tottakai vaikeuttaen tiedostojen käynnistämistä, mutta antaen käynnistäjälle harkinta-aikaa ja miettimistä sen suhteen että onko ohjelma varmasti oikein käynnistettävä. Tottakai paketeissa voidaan toimittaa jo valmiita binääripaketteja jotka ovat käynnistettävissä, mutta jos joku lähettää sinulle sähköpostissa .exe-tiedoston, et voi sitä ajaa ennen kuin olet antanut sille ajo-oikeudet.

Muita GNU/Linuxissa huomioituja ongelmia tiedostoihin liittyen ovat mm. tunnettujen tiedostojen piilotetut päätteet. Esimerkkinä ottakaamme tästä vaikka virus.jpg.exe-tiedosto, jossa on kaksiosainen tiedostopääte. Jos MS Windows-käyttöjärjestelmässä on päällä "piilota tunnetut tiedostomuodot" niin käyttäjälle näkyviin jää vain virus.jpg. Tämä monelle peruskäyttäjälle kertoo sen että kyseessä on pelkkä kuvatiedosto vaikka todellisuudessa sen käynnistyttyä lähtisi virus leviämään. Todellisuudessahan tiedosto on .exe-tiedosto, mutta Windows piilottaa loppuosan tiedostomuodosta. GNU/Linuxissa ei automaattista tiedostomuotojen tunnistusta ole viety näin pitkälle, joten voimme katsoa puutteen vain omaksi eduksemme. Ongelmaa ei myöskään ole CD-levyjen automaattikäynnistyksen kanssa, joka mahdollistaa useiden ohjelmien ajamisen kysymättä käyttäjältä mitään. Vaikka CD-levyjen kautta ei viruksia juurikaan levitetä niin on silti tärkeää että käyttäjältä edes kysyttäisi että ajetaanko pyydetyt ohjelmat automaattisesti.


Binäärien ajaminen ja pakettien kautta leviävät virukset

Entä jos lataat jostain paketin jossa on sisällä haittaohjelma nimeltä "su", sama millä kirjaudutaan sisään toisella käyttäjällä. Purat paketin kotihakemistoon jonka jälkeen siellä löytyy käynnistettävä ohjelma nimeltä "su", teet normaalit lähdekoodin kääntämiseen liittyvät "./configure && make" toiminnot ja kun olet asentamassa pakettia järjestelmään ja vaihtamassa root-käyttäjäksi komennolla "su"... Mitä tapahtuu ? Vastaus on yksinkertainen, GNU/Linux järjestelmä ajaa binäärit oletuksena PATH-ympäristömuuttujan sisältämistä hakemistopoluista. Käytännössä tämä tarkoittaa sitä että jos pitää ajaa erillinen tiedosto tietystä hakemistosta pitää siihen eteen liittää merkintä "./", jos siis meidän su-viruksemme kirjoittaja haluaisi ohejlmansa tulevan ajetuksi niin se tulisi ajaa komennolla "./su" eikä "su". Komento "su" ajetaan ennaltamääritellyistä binääripolkujen sisältämistä paikoista – riippumatta siitä olisiko samanniminen ohjelma käynnistyksen aikaisessa hakemistossa.


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.

Säännöt rakentuvat niin, että ensin pitää kieltää kaikki hosts.deny tiedostossa ja sitten sallia yhteyksiä hosts.allow tiedostossa.

Esimerkki perussäädöistä, joissa sallitaan vain .fi verkko-osoitteiden yhteydenotto SSHD-palvelinohjelmistoon.

/etc/hosts.deny:

SSHD: ALL

/etc/hosts.allow:

SSHD: .fi

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.

Katso myös

Langattoman verkon tietoturva