3.2. Valg af password

Det er vigtigt at hemmeligholde sine passwords - især sit root password. På en Linux-maskine logger man ind med et bruger-id såsom "tyge" og et tilhørende password. Vi vil se på, hvorfor det er vigtigt, at du beskytter dit password, og hvordan du kan beskytte det. Vi vil se nærmere på, hvad der sker med dit password på Linux-maskinen, og på nogle af de værktøjer, du kan bruge til at højne sikkerheden omkring passwords.

3.2.1. Skriv ikke dit password, hvor andre kan se det

Styrer du en Linux-maskine med et antal brugere, der har hver sin login-konto, så er det vigtigt, at de alle forstår, at de hver især er ansvarlige for deres password. Hvis de skriver det på en lap papir og sætter den på opslagstavlen eller på skærmen, er de med til at bryde sikkerheden. Man kan grine af dette, men det er langt mere udbredt, end man skulle tro. Sagen er, at en vilkårlig anden person, som kender din kombination af login-navn og password, kan logge ind som dig og arbejde som dig, misbruge, ødelægge eller spionere i dit navn. Det skal selvfølgelig undgås.

3.2.2. Hvordan vælger man passwords ?

Ud over at password ikke må skrives, hvor andre kan se det, så er det ikke lige meget, hvordan du vælger dit password og specielt ikke dit root password. Desuden bør man skifte password med passende mellemrum. Passwords kan knækkes ved en kombination af gode gæt og rå beregningskraft. Før vi ser på dette, så lad os se på, hvordan dit password er gemt på på din Linux-maskine.

Dit password og information om dit login-navn og gruppe gemmes i filen /etc/passwd. Hvis du ikke anvender shadow passwords (hvad det er kommer vi ind på senere), så kan en linje i passwd-filen ligne følgende:

tyge:A1$HN1r2zxs$A2rmawluybzv8hkf4Hpzz0:501:501::/home/tyge:/bin/bash

De første to felter er dit login-navn og dit krypterede password. Når du ændrer password (med kommandoen passwd), så vil Linux-maskinen kryptere dit password til noget meget ukendeligt og gemme dette i /etc/passwd. Ideen bag dette er, at man har en algoritme, som hurtigt kan generere noget unikt krypteret tekst ud fra en anden tekst såsom dit password, men at det i praksis er umuligt at gå den anden vej. Det vil sige at der ikke findes en metode, hvor man finde det originale password ud fra det krypterede password. Som et lille matematisk eksempel kan vi nævne, at man nemt kan finde y hvis man kender x, ud fra y = x^3+2*x^2-3*x+2, mens det er langt mere besværligt at finde x ud fra y - i dette eksempel skal man løse en tredie grads ligning. De metoder, man anvender til at kryptere passwords, er meget smartere end bare en trediegradsligning. Metoderne er udviklet, således at man garanterer, at der kun er et password, som svarer til det krypterede password.

Fra den mere muntre afdeling kan vi lige igen vise en stribe fra http://www.userfriendly.org/static

Figur 3-2. User Friendly

3.2.3. DES kryptering af passwords

På det fleste UNIX systemer har det i mange år været standard, at et password måtte være op til otte tegn langt, og ud fra dette blev der gemt 13 krypterede tegn i din password-fil. På Linux har man længe anvendt crypt, som benytter sig af DES (Data Encryption Standard). Læs mere om DES på http://csrc.ncsl.nist.gov/cryptval/des/des.txt.

Funktionen crypt bruger det indtastede password som krypteringsnøgle. Den tekst, der krypteres, er blot en række nuller. Men det er ikke hele passwordet, der bruges som DES-nøgle, den sidste bit i hvert tegn smides væk. Desuden sættes 2 tilfældige tegn ind, det såkaldte "salt", der blot er beregnet til at gøre det sværere at rekonstruere passwordet. Se i øvrigt man crypt.

3.2.4. MD5

I gamle dage, hvor man ikke havde så store computere, var crypt en god løsning til passwords, da den er nærmest umulig at bryde på kort tid. Men i dag har man rå computerkraft nok til, at man ikke behøver at bryde krypteringen. Man kan i stedet sætte sine computere til at prøve sig frem fra en ende af. Derfor er der i dag brug for længere passwords, som er sværere at bryde.

Linux Red Hat 6.0 og senere har en langt mere veludviklet håndtering af passwords end tidligere UNIX systemer, hvis man har valgt at kryptere med MD5-tjeksummer. Man kan nu med MD5 vælge passwords, der har mere end otte tegn, og uanset længden af det man taster ind, gemmes der altid 34 krypterede tegn i password-filen. Det er langt sværere at knække de lange passwords.

Det, vi ønsker med vores avancerede kryptering, er, at der kun er en måde, hvorpå du kan få det ukrypterede password ud fra det krypterede - ved at indtaste det korrekte password. Er du cracker, må du prøve at gætte på passwordet, kryptere alle disse passwords og sammenligne det krypterede gæt med det rigtige krypterede password. Er de to krypterede passwords ens, så er gættet og det rigtige ukrypterede password ens - du kender nu passwordet og kan logge ind på systemet som den pågældende bruger. Derfor bør man vælge et password, der er svært at gætte. Ydermere kan vi igen anbefale, at du bruger shadow passwords, for så har man ikke adgang til det krypterede password.

3.2.5. Jeg knækker dit password

Der findes programmer, som kan bruges til at knække passwords effektivt. Man kan måske mene, at det er med til at svække sikkerhed generelt, at der ligger programmer frit tilgængeligt på internettet, som gør det nemt at cracke passwords. Vi mener, at det er for enkelt at tænke sådan. Enhver kan i princippet skrive et program til at knække passwords, og derfor bør man måske selv lade sit password komme igennem sådan et program. Hvis det ikke er knækket indenfor en måned, er det ikke så ringe... Men så er det alligevel på tide at skifte det ud. Et udbredt program til at knække passwords er John the Ripper, der kan findes på http://www.false.com/security/john/. Man kan finde programmer, som er en del hurtigere til blindt at knække passwords fra en ende af, men John the Ripper har nogle spændende aspekter. Nedenfor er vist, hvordan programmet knækker passwords for brugeren "tyge" i med tre forskellige passwords, hhv. "a", "ab" og "qsw". Udskriften stammer fra en 300 MHz PII, og det viser, at et bogstav knækkes på få sekunder, mens to og tre tilfældige bogstaver kan knækkes på 5 hhv. 8 minutter. Generelt så bliver det meget langsommere at knække et passwords for hver gang at der kommer et tegn mere i passwordet. Derfor bør man altid vælge passwords med mere end syv tegn.

Loaded 1 password (FreeBSD MD5 [32/32])
a                (tyge)
guesses: 1  time: 0:00:00:06 100% (2)  c/s: 746  trying: a

Loaded 1 password (FreeBSD MD5 [32/32])
ab               (tyge)
guesses: 1  time: 0:00:05:12 (3)  c/s: 665  trying: ab

Loaded 1 password (FreeBSD MD5 [32/32])
qsw              (tyge)
guesses: 1  time: 0:00:08:08 (3)  c/s: 669  trying: qsw

John the Ripper er lidt langsom til de "tilfældige" passwords ovenfor, fordi det er programmeret ud fra, hvordan mange brugere i praksis vælger password. Man vælger ofte kærestens navn, måske koblet med en fødselsdag, et sted man er glad for, eller andre ting man kan huske. Det er ikke klogt, fordi det er for nemt at gætte, hvilket følgende viser. Først har vi ladet brugeren "tyge" have password "abc" som står i alle ordbøger. Det koster kun 4 sekunder, før det er fundet. Dernæst er vist, at fem bogstaver som i ordet "apple" findes på 3 sekunder, og endelig gentagelsen "appleapple" med 10 bogstaver som kun tager 19 sekunder at knække - skræmmende, ikke sandt? Ordbøger findes til alle sprog, så vælg altid passwords som ikke står i en ordbog - bland tal ind i ord og lav et underligt system, andre ikke har en chance for at gætte. Brug f.eks. forbogstaver fra en sætning eller en sang, og flet specialtegn og numre med ind. Vær dog lidt varsom med specialtegn i passwords - specialtegnenes placering på tastaturet kan variere alt efter hvilket land, tastaturet er sat op til. Man kan f.eks. komme ud for et dansk tastatur, som er sat op som et amerikansk, hvor det kan det være ret svært at finde specialtegnene. Jo længere password du vælger des bedre - og altid på mere end syv tegn. Root passwordet skal helst være endnu længere og vælges med særlig omhu. I øvrigt bør du med jævne mellemrum ændre password, men sørg for at dette sker enten på selve maskinen eller via en krypteret adgang til maskinen såsom ssh (secure shell).

Loaded 1 password (FreeBSD MD5 [32/32])
abc              (tyge)
guesses: 1  time: 0:00:00:04 100% (2)  c/s: 837  trying: abc

Loaded 1 password (FreeBSD MD5 [32/32])
apple            (tyge)
guesses: 1  time: 0:00:00:03 100% (2)  c/s: 891  trying: apple

Loaded 1 password (FreeBSD MD5 [32/32])
appleapple       (tyge)
guesses: 1  time: 0:00:00:19 100% (2)  c/s: 710  trying: appleapple

3.2.6. Shadow files

Den almindelige password-fil, /etc/passwd, kan læses af alle. Dette er nødvendigt, da en del programmer bruger filen til at koble en brugers bruger-id (tredie felt i password-filen) med det tilhørende brugernavn. At alle kan læse filen betyder imidlertid også, at alle kan se dit krypterede password. Derfra kan man cracke dit password, og som vi har beskrevet, så kan det gøres hurtigt, hvis du har valgt et svagt password. Med flere Linux distributioner bl.a. Red Hat 6.2 bliver du ved installationen spurgt, om du vil anvende shadow passwords, hvilket du bør svare ja til. Når du har installeret dette, så vil du se, at der står et "x" i /etc/passwd, hvor dit krypterede password før ville have stået:

tyge:x:501:501::/home/tyge:/bin/bash

Dit krypterede password er nu flyttet til /etc/shadow, som kun kan læses af root - dvs., ingen almindelig bruger på maskinen nu kan læse dit krypterede password. Hvis du har installeret Linux, men ikke har shadow passwords slået til, kan det gøres med kommandoen /usr/sbin/pwconv, som skal køres som root. Den laver shadow filen ud fra password filen og tilsvarende laves en shadow gruppe-fil /etc/gshadow ud fra /etc/group med programmet /usr/sbin/grpconv. For at dette virker, skal dine Linuxprogrammer være oversat til at kunne håndtere dette - tidligere var dette ikke altid tilfældet. Læs manualsiden for pwconv for detaljer.

I det ovenstående, hvor vi skriver, at alle kan læse password-filen, går vi ud fra, at det er brugere med lokal adgang. Hvordan får en cracker udefra adgang til min password-fil, så han kan se mit krypterede password? Ofte er det CGI-scripts på en web-server, som pga. simple programmeringsfejl eller pga. fejl i de anvendte programmeringsssprog kan lokkes til at vise de krypterede passwords fra password-filen. Dygtige crackere finder fra tid til anden nye metoder til at gøre dette. Normalt findes tilsvarende rettelser til disse huller - hold derfor altid din maskine opdateret.