Salasana

Linux.fista
Versio hetkellä 20. marraskuuta 2008 kello 19.26 – tehnyt Pb (keskustelu | muokkaukset) (linkitystä ym)
Siirry navigaatioon Siirry hakuun

Tavallisesti Unix/Linux-koneelle kirjaudutaan antamalla käyttäjätunnus ja salasana. Näin käyttäjä saa käyttöön omat asetuksensa ja tiedostonsa ja varmistetaan, että tiedostoja eivät pääse katsomaan muut kuin ne joille on annettu siihen lupa.

Jos koneella on palvelinohjelmistoja joita saatetaan päästä käyttämään verkon kautta, on hyvän salasanan valinta ehdottoman tärkeää, jollei käyttöä ole rajattu muilla tavoin. On tavallista, että esimerkiksi SSH-palvelun kautta yritetään päästä koneelle kokeilemalla yksinkertaisia salasanoja.

Vaikka konetta ei olisikaan tarkoitettu ajamaan palvelinohjelmistoja, saatetaan jakelussa oletuksena käynnistää jokin verkkoa kuunteleva palvelin, tai sellainen saattaa käynnistyä asennettaessa tiettyjä ohjelmia. Palomuuri voi toki toimia osittaisena suojana.

Jos kirjautuminen koneella tapahtuu vain joko paikallisesti ilman salasanaa (kotikone, jolla muille ei ole pääsyä) tai ssh-avaimilla, salasanalla kirjautuminen voidaan estää kokonaan.

Hyvä salasana

Nykyisillä konetehoilla miljoonien eri salasanavaihtoehtojen kokeilu on helppoa. Näin ollen hyökkääjä joka pääsee rajoituksetta kokeilemaan eri salasanoja pystyy kokeilemaan usean kielen kaikkia sanoja monella muunnelmalla ynnä muita "todennäköisiä" salasanoja.

Salasana on siis valittava niin, ettei se ole helposti johdettavissa mistään sanasta, nimestä tai käyttäjästä johdettavasta muusta tiedosta (puolison syntymäaika tms.). Eräs usein ehdotettu tapa on pitää mielessä sopiva lause tai loru, jonka joka sanasta käyttää esimerkiksi kolmannen kirjaimen. Tämä lause tai loru ei saa olla yleinen tai käyttäjään helposti yhdistettävä, vaan mielellään itse keskitty: "Enpä jaksa tällä hetkellä keksiä rumaa salasanaa" -> pkltk*l

Salasanaan on hyvä sekoittaa isoja ja pieniä kirjaimia, numeroita sekä mahdollisesti erikoismerkkejä (pkLtk3*l). Ääkkösistä usein poistetaan kahdeksas bitti, joten ne eivät auta mutta saattavat toimia epäluotettavasti. Erikoismerkeistä kannattaa huomata, että ne ovat eri paikoissa US-näppäimistössä, jota saattaa joutua käyttämään erikoistilanteissa. Niitä ei siis välttämättä kannata käyttää ainakaan pääkäyttäjän (tai sudo-oikeudet omaavan käyttäjän) salasanoissa.

Perinteisesti Unix-salasanasta on käytetty korkeintaan 8 merkkiä, mikä nykyään alkaa olla vähän. Pidempiä salasanoja käytettäessä pitää muistaa, että pituus auttaa melko vähän, jos salasana on muuten huono: tavallisessa lauseessa on vain noin kolme bitiä "satunnaisuutta" merkkiä kohden, joten 16 merkin huono salasana on merkittävästi huonompi kuin 8 merkin hyvä salasana. Alle 6 merkin salasana on aina huono.

Monen käyttäjän järjestelmissä on yleensä aina joukossa huonoja salasanoja. Jos koneella on useampia käyttäjiä kannattaa sallia kirjautuminen verkosta vain niille, jotka sitä ominaisuutta tarvitsevat (/etc/sshd_config-asetustiedostossa: AllowUsers, AllowGroup ja vastaava muille palvelimille) sekä ajaa jokin salasanojen murto-ohjelma, kuten crack.

Vaihtoehdot

Kotikoneella ei välttämättä haluta käyttää salasanoja. Tällöin salasanalla kirjautumisen voi estää "*"-merkillä salasanakentässä ja työpöytäympäristön kirjautumisohjelman asettaa hyväksymään salasanattomat kirjautumiset tietyille käyttäjätunnuksille, mahdollisesti niin että tunnuksen voi valita ohjelman esittämästä listasta.

Etäkirjautumiset SSH:n kautta voi hoitaa avainpareilla: ssh-keygen luo avainparin tiedostoihin ~/.ssh/id_rsa ja id_rsa.pub. Edellinen kopioidaan (luotetuille) koneille, joista haluaa ottaa yhteyttä, jälkimmäinen tiedostoon ~/.ssh/authorized_keys koneella, johon haluaa ottaa yhteyttä.

PAM mahdollistaa myös muita vaihtoehtoja, kuten älykortin käyttämisen.

Taustaa

Unix-salasanan salattu versio säilytetään tiedostossa /etc/passwd tai /etc/shadow. Tunnus suljetaan kirjoittamalla salasanakenttään jotakin, joka ei ole minkään mahdollisen salasanan salattu muoto, yleensä "x", "*" tai "!". Eri merkinnöillä on eri erikoismerkityksiä.

Perinteinen Unix-salasana on enintään 8 merkin pituinen. Se ja satunnaisesti valittava "suola" käytetään salakirjoittamaan tietty bittijono (yleensä pelkkiä nollia) muunnellulla DES-algoritmillä (DES). Käytetty suola ja tuloksena saatu salasanatiiviste kirjoitetaan salasanatiedostoon. Salauksen purku ei onnistu, vaan tietty salasana todetaan oikeaksi toistamalla operaatio samalla suolalla ja vertaamalla tulosta salasanakenttään. Suolan käyttö estää "sanakirjahyökkäykset": sama salasana eri suolalla antaa eri tulokset.

Unixin alkuaikoina salasanojen murtaminen arvaamalla olisi vaatinut suurta konetehoa, jolloin salasanat voitiin pitää kaikkien luettavissa. Nykyään ne pidetään yleensä vain pääkäyttäjän luettavissa shadow-tiedostossa. Näin järjestelmä voi rajoittaa salasanan arvailua, eikä niitä voi kokeilla sillä nopeudella mitä oman koneen laskuteho sallisi.

Salasanatiedosto saattaa kuitenkin vuotaa. Tässä tapauksessa perinteinen DES-algoritmi ei riitä, koska kaikki mahdolliset salasanat kaikilla eri suolavaihtoehdoilla on mahdollista käydä läpi kutakuinkin järjellisessä ajassa, ainakin jos olettaa salasanat valituiksi jonkin säännön mukaan (ei erikoismerkkejä ja korkeintaan yksi numero tms.).

Nykyään käytössä on tavallisesti MD5-algoritmiin perustuvaa algoritmiä, joka sallii pidemmät salasanat ja siten estää kaikkien mahdollisten salasanojen kokeilemisen. Pidempi salasana ei kuitenkaan auta, jos se on huonosti valittu: tavallinen lause sisältää "satunnaisuutta" vain noin kolme bittiä merkkiä kohden, jolloin 16-merkkinen huono salasana on merkittävästi huonompi kuin 8-merkkinen hyvä salasana.

Myös muita salasanatiivisteitä on käytössä, esimerkiksi SHA- tai Blowfish-algoritmeihin perustuvia.

Merkinnät salasanakentässä

Salasanakenttä muodostuu perinteisen DES-salasanan tapauksessa kahden merkin suolasta sekä salasanatiivisteestä. MD5-algoritmin tapauksessa kenttä alkaa merkkijonolla "$1$", jonka jälkeen tulee suola, "$" ja salasanatiiviste. passwd-tiedoston salasanakentässä on yleensä "x", jolloin käytetään shadow-tiedostoa.

Pelkkä "*" salasanakentässä tarkoittaa, että käyttäjä ei voi kirjautua salasanalla.

Tyhjä salasanakenttä tarkoittaa, että käyttäjältä ei kysytä salasanaa. Yleensä tällainen järjestely kannattaa hoitaa muulla tavalla, esimerkiksi graafisen kirjautumisohjelman (gdm, kdm, xdm tms.) asetuksilla. PAM voidaan asettaa olemaan hyväksymättä salasanatonta kirjautumista.

Tyhjä salasana käsitellään eri tavalla kuin tyhjä salasanakenttää. Sekään on harvoin hyvä vaihtoehto.

Lukitun tunnuksen merkintä vaihtelee. Linuxeissa käytetään usein "!"-merkkiä salasanan edessä, jolloin tunnus voidaan ottaa käyttöön samalla salasanalla poistamalla tämä merkki. Yleensä toimenpide kannattaa hoitaa usermod- tai passwd-ohjelmalla, jolloin merkintätapa on varmasti oikea.

Katso myös

Aiheesta muualla