PAM

From EIK wiki

Sissejuhatus

PAM ehk Pluggable authentication modules on mehhanism, kus on mitu madala-taseme autentimise skeemi integreeritud ühte kõrgeima taseme API’sse. Sellega saavad audentimist nõudmavad rakendused kasutada PAM API’t , sõltumata sellest missugused autentimise mehhanismid on PAM’i taga. PAM töötati välja SUN Microsystems’i poolt. See ilmus esimesena RFC-s (Open Software Foundation Request for Comments’is) 1995.aasta oktoobris. PAM on adapteeritud Common Desktop Enviroment’i autentimisraamistikus. Omaette infrastruktuurina, Ilmus PAM avatud lähtekoodiga, Linuxi-PAM’ina,(arendatud Red Hat Linux 3.0.4 ’i poolt) augustis 1996. PAM on praegu toetatud AIX operatsioonisüsteemide DragonFly BSD’e,FreeBSD’e, HP-UX’i, Linux’i, Mac OS X’i, NetBSD’e ja Solaris’e poolt. Standartiseeritud X/OPEN UNIX standartiseerimise projekti raames. Viimase tulemusena on saanud ametliku nimetuse “X/Open Single Sign-on standart”. PAM-i toetab ka Mac OS X.

Tehnilised faktid

o PAM kasutab dünaamiliselt seotud koodi.

o Juhul kui dünaamiline algorütm ei tööta , siis rakendatakse PAM’is tagavara staatiline linkimise algorütm.

o PAM-i realisatsioonid ei tööta sarnaselt – nt. Linux’i ja NetBSD PAM’id on suhteliselt erinevad.

o Standartse Linux’i autentimise skeem kasutab PAM’i juurdepääsu õiguste kontrollimiseks.

o Vaikimisi konfiguratsiooni failid asuvad /etc/pam.d ja /etc/security .

o /ETC/PAM.D on kataloog, kus saab iga rakenduse kohta ära määrate PAM-i moodulite kasutamise ehk siis teiste sõnadega ära määrata autentimise skeemi.

o Näiteks paigutades mingi faili /etc/pam.d kataloogi, siis võib määrata et alguses klient autentib parooliga, kui see klappib siis tema rühma ja kasutaja nime kontrollitakse access_list mooduli kaudu, siis kontrollitakse kas IP aadress (kui on) klapib sellele kasutajale lubatud ligipääsu õigustega. Juhul kui tingimused pole täidetud, siis ligipääsu andmisest keeldutakse. Õnnestumise puhul võite kirjeldada ka edaspidiste kontrollimiste algorütmi – nt. pam_time mooduli järgi kontrollimine: s.t. Kontroll kas just sel päeval ja kellaajal on kasutajal õigus ligipääsemiseks.

o Kõikide kontrollide õnnestumise puhul saab kasutaja ligipääsu, aga kui vähemalt üks tingimustest ei ole kooskõlas, siis süsteem keeldub ligipääsu andmast, vaatamata sellele kas parool on õige või vale.

PAM

Paljude programmide kasutamine algab kasutajanime ja parooli sisestamisega. Traditsiooniliselt sisaldasid sellised programmid ise kõike vajalikku kasutaja autentimiseks. Teine võimalus on kirjutada programm ilma, et seal sisalduks autentimist toimetav osa, kuid vajadusel pöördub ta standardse välise autentimist korraldava mehhanismi poole, milleks on PAM. Programmi seisukohalt pole oluline, millist autentimismehhanismi kasutatakse või kas seda üldse kasutatakse. PAM lihtsalt teatab programmile, kas kasutaja autenditi või mitte. Tarkvara kompileerimisel on võimalik näidata, kas soovitakse saada PAMi toetust või mitte.

Kui PAM ei ole Linuxi distributsiooni osaks vaikimisi, siis tuleks kaaluda uuendamist uuemale distributsioonile. PAM-i kasutamine mitte ainult ei saa muuta süsteemi turvalisemaks, vaid see võib aidata ka lahendada hulgaliselt ebamugavaid ühilduvuse konflikte turvalisuse vajaduste vahel näiteks nagu shadow ja MD5 ja teenuseid, mida on vaja failidesse pääsemiseks. PAM’i toetust süsteemis saab kontrollida nimetatud kataloogide ja failide olemasoluga:

• / etc / pam.conf

• / etc / pam.d /

• / lib / libpam.so .*

• / usr / lib / libpam.so .*

Kui mõni neist on olemas, oled ilmselt heas suhtes PAM-enabled autentimine teenustega. Ärge eksige: Siin pole peaaegu mõtet kasutada variparoole ilma PAM paigalduseta ja shadowm on rohkem kui hädavajalik turvaline süsteem.

ldd

Kui klientprogrammiga pöördutakse serveri poole, siis peab PAMi moodulitega oskama suhelda mitte autentimisega seotud klientprogramm, vaid vastav server, näiteks sshd, gdm, vsftpd. Kas see on nii, võib järele vaadata programmiga ldd :

   bash# ldd /usr/bin/passwd   
libdl.so.2 => /lib/libdl.so.2 (0x40019000) 
libpam.so.0 => /lib/libpam.so.0 (0x4001d000) 
libpam_misc.so.0 => /lib/libpam_misc.so.0 (0x40025000) 
libpwdb.so.0 => /lib/libpwdb.so.0 (0x40028000) 
libc.so.6 => /lib/libc.so.6 (0x40071000) 
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000) 
libcrypt.so.1 => /lib/libcrypt.so.1 (0x40164000) 
libnsl.so.1 => /lib/libnsl.so.1 (0x40191000)

Moodulid

Erinevate autentimissüsteemide kasutamiseks on vaja kasutada vastavaid PAMi mooduleid. Moodulid asuvad kataloogis /lib/security.

Mõningad tähtsamad PAM moodulid:

•pam_access – ligipääsu map kasutaja/rühm vs. Lokaal ligipääs või IP aadress.

•pam_cracklib – parooli tugevuse kontrollskeem.

•pam_deny – blacklist kasutajatest, kellele on ligipääs keelatud.

•pam_securetty – nimekiri konsoolidest kust root’ile on lubatud ligipääs.

•pam_limits – võimalik limiteerida kasutajatele ligipääsu resurssidele.


Spetsiaalsed moodulid, mis võimaldavad:

•pam_time.so - reguleerida programmi kasutamist ajaliselt.

•pam_cracklib.so - tagada, et paroolivahetamisel ei valita liiga lihtsat parooli.

•pam_console.so - määrata millisest terminalist saab programmi käivitada.

•pam_deny.so - programmi ei saa käivitada.

•pam_permit.so - programmi lubatakse käivitada alati.


PAMJoonis.jpg

PAMi konfigureerimine

PAMi konfigureerimine toimub vaikimisi kataloogis /etc/pam.d sisalduvate failide redigeerimisel. Autentimist vajav programm pöördub omanimelise teenuse konfiguratsioonifaili poole. Näiteks programmile passwd vastav PAMi konfiguratsioonifaili /etc/pam.d/passwd sisu võiks olla selline:

auth       required	/lib/security/pam_pwdb.so shadow nullok
account    required	/lib/security/pam_pwdb.so
password   required	/lib/security/pam_cracklib.so retry=3
password   required	/lib/security/pam_pwdb.so use_authtok nullok md5 shadow

PAMi teenuse poole pöördumine lõppeb, kui kasutaja autentime õnnestus või ei õnnestunud.

Konfiguratsioonifaili süntaks on selline:

    moodulitüüp   kontrollvõti   mooduli-fail   [argumendid]


• Moodulitüüp - Iga moodulitüübi kontroll lõpeb õnnestumisega või ebaõnnestumisega. Iga teenuse puhul ei pruugi olla kõik moodulitüübid kasutatud.

Moodulitüübid:
auth - autendib kasutaja ja annab talle nt tema grupist tulenevad õigused.
account - otsustab, kas kasutajat teenindada.
session - asjad, mis on vaja teha peale sisselogimist.
password - korraldab parooli muutmist. 


• Kontrollvõti - sama moodulitüüp võib olla kirjeldatud mitmel järjestikusel moodustades pinu. PAMi moodulitüübi õnnestumise määrab moodulitüübi pinu kogutulemus, mis on määratud kontrollvõtmetega:

Kontrollvõtmed:
required - moodulitüübi õnnestumiseks peavad kõik read õnnestuma. Kui pinu rida ei õnnestu, liigutakse pinus siiski edasi, pinu lõpus teatatakse kasutajale õnnestumisest või ebaõnnestumisest.
requisite - moodulitüübi mitteõnnestumiseks peab selle võtmega rida õnnestuma. Kui rida ei õnnestu antakse kontroll otsekohe koos veateatega teenust väljakutsuvale programmile.
sufficient - selle võtmega rea õnnestumine toob kaasa moodulitüübi õnnestumise juhul, kui varasemad required on õnnestunud; järgnevad required ei loe.
optional - suva, kasutatakse näiteks logiks.


• Moodulifail - näitab kus asub PAMi moodulile vastav fail.

• Argumendid - moodulit kontrollivad argumendid.


Terminaliaknas:

Graafik.jpg

Vaikimisi PAMi teenus other

Kui te hooletult või lihtsalt teadmatusest PAMi konfigureerimisel vea teete, siis on võimalik, et te ei saa oma süsteemi ise ka enam sisse logida. Kui tõesti nii peaks juhtuma, siis bootige single user mode'i ja looge omale ainuke PAMi konfiguratsiooni fail /etc/pam.d/other

   auth     required       pam_unix_auth.so
   account  required       pam_unix_acct.so
   password required       pam_unix_passwd.so
   session  required       pam_unix_session.so

other on PAMi teenus, mida kasutatakse, kui kliendi poolt nõutavale pole vastavat konfiguratsioonifaili. Toodud fail vastab traditsioonilisele UNIXi autentimisskeemile.

Veel PAM-i installeerimise ja konfiguratsiooni kohta:

http://www.linuxfromscratch.org/blfs/view/svn/postlfs/linux-pam.html

Kasutatud kirjandus:

http://www.linuxjournal.com/magazine/pammdashsecuring-linux-boxes-everywhere?page=0,0

http://www.kesoftware.com/emu-32-installupgrade-notes/unix-setup-pam.html

http://compute.cnr.berkeley.edu/cgi-bin/man-cgi?pam.conf+4

http://www.informit.com/articles/article.aspx?p=20968

http://www.ibm.com/developerworks/linux/library/l-pam/

http://kuutorvaja.eenet.ee/wiki/PAM


Iti Liivik A22 2011 sügis

--Iliivik 19:32, 19 November 2011 (EET)


Lingid

http://www.linuxjournal.com/article/10278