Bedre sikkerhed med Linux-PAM, del 1.

Hvad er PAM?

PAM står for Pluggable Authentication Modules, og blev udviklet af Sun Microsystems i midten af halvfemserne, til deres Solaris/SunOS Unix Operativ System. Senere er PAM porteret (oversat) til både Linux, *BSD, Mac OSX og flere andre Unix leverandører.

Med PAM er det muligt at koble nye moduler ind i forskellige validerings og sikkerheds processer uden at oversætte eller gen-installere de programmer, der benytter sig af PAM. Traditionelt bruger Linux sig af shadow password filen, når brugere skal valideres, men med PAM er det hurtigt og nemt at skifte valideringen til f.eks. en Radius eller LDAP server.

Adgangskoder

Et af de nemmeste tiltag for bedre sikkerhed, er at sikre sig, at alle brugere har fornuftige adgangskoder. Lader man det være op til brugeren selv, at bestemme sin adgangskode, kan man næsten være sikker på, at de vælger en kode der er nem at huske. Koder der er nemme at huske, er sjældent særligt sikre.

Kodeord der er baseret helt eller delvist på ord fra ordbøger, er særligt sårbare overfor dictionary attacks. Det vil sige, at en cracker kan benytte sig af et program, der læser en ordbog, og derefter prøver at logge ind med et nyt ord, indtil der er held. Denne metode er tidskrævende og mange systemer har indbygget forsinkelser mellem hvert login forsøg, for netop at besværliggøre gætterier.

Længden af kodeordet har også stor betydning, da korte adgangskoder nemmere kan brute forces. Det vil sige, at et program systematisk prøver sig frem med forskellige kombinationer af bogstaver, tal og tegn. Denne metode vil selvfølgelig også være langsommelig og nok umulig, med mindre man er i besiddelse af en fil med de krypterede adgangskoder. Har man sådan en fil, eller er man på anden måde kommet i besiddelse af en krypteret adgangskode (ved f.eks. at lytte på netværket), så skal der en del flere kombinations forsøg til at gætte adgangskoden “[l9Jbds2$z” i modsætning til koden “6734”.

Vi er altså klar over, at det er vigtigt at vælge en “svær” adgangskode. Heldigvis har PAM et modul, pam_cracklib.so, der kan “kigge med” når man skifter kodeord. Med nogle regler kan vi fortælle modulet f.eks. hvor langt koden minimum skal være og hvor mange tal og tegn den skal indeholde.

En typisk konfiguration, der siger, at vi har tre forsøg til at skifte koden, at kodeordet minimum skal være 6 tegn langt og at den nye kode skal være forskellig fra vores gamle med minimum 3 tegn:

password required pam_cracklib.so retry=3 minlen=6 difok=3
password required pam_unix.so     md5 use_authtok

I næste del vil jeg kigge nærmere på historik og login forsøg.