Weekend Prosjekt: engangspassord for Extra Linux Security


Har du tar din sikkerhet ekstra på alvor? Har du avviser all ukryptert e-post og bruke en 15 360-bit RSA nøkkel når du logger inn over SSH? Vel det er ganske
bra, men det fortsatt ikke beskytter deg fra alle slags angrep.

Tenk på dette: OpenSSH kan opprette en sikker kommunikasjonskanal mellom Linux-boksen hjemme og PC i Internet cafe, men noen " ugjernings " kan fortsatt installere et tastetrykk-logger som registrerer passord som du skriver det - eller rett og slett blikk over skulderen. På å stoppe det tomt, trenger du et passord som er bare bra for en enkelt påloggingsforsøk. Heldigvis støtter Linux engangspassordordninger gjennom standardPluggAble Authentication Modules (PAM) rammeverk. Alt du trenger å sette den opp er litt tid, en kommandolinje, og en skriver (kappen og dolk valgfritt). Det er faktisk to engangs-passord pakker lett tilgjengelig for Linux. Begge følger samme generelle ordningen. Først du beregne en liste over passordene på forhånd på maskinen i spørsmålet. Brukeren skriver ut en fysisk kopi av listen, men det er ikke lagret på maskinen; bare en distinkt " verifiseringskode " av en eller annen form er lagret på harddisken, hindrer tyver fra gripe passord lokalt. Når brukeren logger inn, utsteder påloggingen en utfordring som bare har ett riktig svar fra listen. Hvis brukeren svarer riktig, er han eller hun er logget inn, og passordet som brukes er merket av, aldri å bli ansett som gyldige igjen. Den Alternatives Sammenlignet den eldre system kalles Opie, som står for engangspassord i alt. Opie bruker S /KEY algoritme (RFC 1760) oppfunnet av Leslie Lamport (av LaTeX berømmelse), mens på Bellcore på 1980-tallet. I forberedelsesstadiet, genererer Opie en liste over passordene som hver består av en rekke vanlige korte ord, for eksempel OUST Pels føll MUG NEBB TOTE. Listen har den egenskapen at hver n
th passord er en hash av passord (n -1).
Første passord på listen er lagret på datamaskinen og riper ut av brukerens liste; på hver påfølgende innlogging, går bruker neste passord, datamaskinen hasher passordet den har lagret lokalt, og hvis de stemmer, er påloggings vellykket og det nye passordet er lagret lokalt i stedet for den gamle. OTPW (for One Time Password) er den nyere system, og det forbedrer på Opie i noen viktige områder. Først blir ordene brukt tilfeldig, ikke sekvensielt, noe som gjør analyse vanskeligere. For det andre bruker OTPW tilfeldige strenger i stedet for korte, vanlige ord, slik at passordene mye vanskeligere for en angriper å memorere av listen på et øyeblikk. For det tredje er det trykte listen over passordene kombinert med en memorert passord som bare er kjent for brukeren, noe som gjør listen ubrukelig på egen hånd. Endelig omfatter systemet innebygde tiltak for å hindre en angriper som logger tastetrykk og forsøker å kopiere påloggingsøkten ved å spille det før brukeren har en sjanse til å treffe ". ENTER " Installasjon Du kan laste ned den siste kilden OTPW skaperen Markus Kuhn nettsted. Din distro kan omfatte en pakke, men de fleste som ser ut til å stoppe på 1,3 utgivelse - den " snapshot " pakken tilgjengelig på Kuhn nettsted legger til flere nye funksjoner, og er internt kalt 1.4, selv om en offisiell utgivelse ikke har blitt annonsert. Du må installere utvikling pakker for PAM for å kompilere OTPW, men det har ingen andre spesielle avhengigheter. Bare pakk arkivet, kjør make og make install. Pakken gir to verktøy: en PAM modul heter pam_otpw, og et passord generasjon verktøy kalt otpw-gen. Linux-distribusjoner som pakke OTPW (slik som Debian) har en tendens til å dele disse opp i to separate pakker, otpw-bin for passord-generasjons verktøy, og pam-otpw for PAM-modulen. Hvis du installerer via en pakkesystem, installere begge. Oppsett Du generere passord ved å kjøre otpw-gen på kommandolinjen. Programmet ber deg om å velge en " prefiks passord " - Gjenbrukbare hemmelige delen at du lærer - skriver deretter ut en ASCII-formatert liste med nummererte passord til stdout. Som standard oppretter otpw-gen 60 linjer igjen av passord; Dette er laget for å passe fint inn på et A4-ark. Du kan spesifisere et annet antall linjer og kolonner ved å legge de -H og-w brytere på kommandolinjen; hvor mange passer på en side kan ta litt prøving og feiling. Det er maksimalt 1000 passordene på en gang, men fordi OTPW bruker tresifrede tall i sin liste. Passordene på listen er generert ved hjelp av tilfeldige entropi fra systemet - samlet fra klokken, system filtilgang ganger, og andre uforutsigbare kilder. I listen, har hver passordet sitt eget nummer, etterfulgt av åtte-tegns passord selv. Hver er faktisk en base64-koding av en binær streng, men for å unngå tvetydighet, det er vanskelig å lese tegn " 0 " (null), " en " (en), og " l " (små bokstaver L) er erstattet av tegnsetting. For eksempel: 001 ase4 5 = XK 002 m8Hm G: f o 003 rF6z iDhC ... 042 Sf9r 3NgY ... Ideen er at du skal skrive ut denne listen ut på papir - umiddelbart - og aldri, aldri lagre den hvor som helst på datamaskinen. Bære med deg hele tiden, aldri la det gå synet ditt, og du vil være i god form. Når listen er generert, skaper otpw-gen også en fil som heter .otpw i brukerens hjemmekatalog; hver linje inni den lister opp et passord tall etterfulgt av RIPEMD-160 hash
av selve passord og brukerens hemmelighet (aldri lagres eller skrives ut) passord. Det gjør .otpw filen crack-bevis på egen hånd, og fordi det er lagret i brukerens hjemmekatalog, er ikke noe system-wide state nødvendig. Når et passord er brukt, Til OTPW system blanks ut den aktuelle linjen i ~ /.otpw begynne å bruke OTPW for pålogging, må du redigere PAM konfigurasjonsfil for den tjenesten du ønsker å sikre. I de fleste tilfeller vil dette være SSH, så åpen (som root) den /etc/pam.d/sshd filen. De relevante linjer begynner med " auth " (som bestemmer hvilke godkjenningsmodulen vil bli brukt til å få tilgang SSH-tjenesten), og og " sesjon, " (som angir andre handlinger systemet må ta ved innlogging). Kommentar ut den gamle " auth " linje, og legge til følgende: auth required pam_otpw.so Nedenfor dette, legg til følgende linje: session nødvendig pam_otpw.so Den første linjen sier å lansere OTPW modulen som autentiseringsmetode, og den andre kjører en OTPW påminnelse etter innlogging fortelle deg hvor mange passord forbli (ikke kjører ut er veldig viktig). Endelig åpner SSH konfigurasjonsfilen /etc /ssh /sshd_config og endre verdien av ChallengeResponseAuthentication til ja
. Dette forteller OpenSSH å bruke PAM for autentisering i stedet for standardnøkkelutvekslingsprotokoll. On Your Mark, ferdig, gå! Du er nå klar til å teste OTPW system! Restart sshd med sudo /etc/init.d/ssh restart, og deretter prøve å logge inn (enten fra en terminal eller fra en annen datamaskin, bare ikke logge ut av din desktop system helt i tilfelle du trenger å feilsøke). SSH login prompt spør du først om brukernavn; etter at du skriver det, vil den spørre deg om et bestemt passord etter antall
eksempel: Logge inn.: < em > Nate < /em > Passord 042: Antallet OTPW spør om (42) ble valgt tilfeldig blant de ubrukte passord. Ved ledeteksten skriver du din hemmelige " passord prefiks, " umiddelbart etterfulgt av figurene fra passord som nr 42 på den utskrevne liste (ingen mellomrom eller returnerer mellom noen av dem). For eksempel, hvis passordet prefikset du valgte var mYpAssPORT, ville du skriver mYpAssPORTSf9r3NgY. OTPW vil hash resultatet, sammenligne det til ~ /.otpw, og logge deg inn, blanking ut oppføringen for passord 42 i ~ /.otpw. Du er i! Mark ut linje 042 på passordlisten (eller brenne den med syre, klippe det ut og svelge det, hva gjør du føler deg mest komfortabel). Når listen er endelig oppbrukt, kan du generere en ny en, som erstatter ~ /.otpw helt, og du kan velge et nytt hemmelig passord prefiks. Extra Credit, Extra Paranoia Hvis du ønsker å se OTPW hyper-sikkerhetsfunksjonene i aksjon, kan du prøve å sette i gang to login sesjoner samtidig. Det du finner er at den andre innloggingen blir bedt om ikke bare én, men tre
passord. Dette er for å hindre angripere som forsøker å rase du til mål, og sender passordet du skriver i brøkdels sekund mellom når du skriver det siste tegnet, og når du trykker på Enter. Først gjenkjenner OTPW to innloggingsforsøk til samme konto, og ber dem for forskjellige passord. For det andre, hvis du er den andre påloggingsforsøk, vil du legge merke til at forespørselen om for tre passord og bli varslet om at noe er galt. Naturligvis, den enkleste måten foul opp denne ellers industriell styrke sikkerhetstiltaket er å miste den viktige stykke papir med listen nummerert passord. Kuhn anbefaler at du enten skrive den ut direkte fra kommandolinjen ved rykende utgangen av otpw-gen til lpr, eller ved å kjøre det gjennom en Postscript-omformer. Uansett, hvis du arbeider i en delt datamiljø, ikke la det sitte i skriveren skuffen (som går dobbelt for delte datamiljøer der skriveren fungerer som en kopimaskin). Hvis du er virkelig bekymret, bør du vurdere å investere i noen vanntett og /eller rive-proof papir for å sørge for at utskriften selv ikke blir skadet. Ikke engang tenke på å skrive inn brukernavn og passord prefikset på det, heller. Engangs-passord legge en veldig spesifikk sikkerhetsfunksjon (på bekostning av kompleksitet og " papir ledelse ") som du sannsynligvis ikke trenger til daglig bruk; men hvis du så ønsket, du kan
krok OTPW inn din stasjonære Linux-maskin konsollen innlogging, sudo, eller en rekke andre PAM-aktivert system verktøy. Kanskje en mer interessant eksperiment ville være å prøve og finne en elektronisk måte å sikre passord liste - en som tilbys den samme portabilitet og " luftspalte " sikkerheten til den trykte variasjon, men er ikke enkelt å avsløre. Det finnes kommersielle engangs-passord systemer som bruker en fysisk token for å generere en liste passord, men de er like lett å miste som et papirark. I den andre enden av spekteret, selvfølgelig, kan du få et radioaktivt implantat i armen som Russell Crowe i " A Beautiful Mind " ... Selv om du kanskje har litt problemer med debugging det alternativet.