PAM

Allikas: Kuutõrvaja
Redaktsioon seisuga 19. august 2006, kell 17:20 kasutajalt Jj (arutelu | kaastöö)
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)

PAM

PAM
Moodulid
PAMi konfigureerimine

PAM

Mõne programmi kasutamine algab kasutajanime ja parooli sisestamisega. Traditsiooniliselt sisaldasid sellised programmid ise kõike vajalikku kasutaja autentimiseks. Skeemil kujutatakse, kuidas selline programm, näiteks passwd suhtleb otse andmebaasiga, milleks on tavaliselt fail /etc/passwd

      _____________                ______________
     | autentimist | ----->------ | kasutajate   |
     |  kasutav    |              |  andmebaas   |
     |   programm  | -----<------ |______________|
     |_____________|


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 (ingl. k. Pluggable Authentication Modules)

                                                    ______________
                                        ___>______ | /etc/passwd  |
                                       |  ___<____ |______________|
                                       | |
     _____________              _______|_|_         ______________
    | autentimist | ----->---- | PAMi      | --->--| Kerberos     |
    |  kasutav    |            |  moodulid | ---<--|______________|
    |   programm  | -----<---- |___________|
    |_____________|                                   ...........
                                                       .....


Programmi seisukohalt pole oluline, millist autentimismehhanismi kasutatakse või kas seda üldse kasutatakse. PAM lihtsalt teatab programmile, kas kasutaja autenditi või mitte.

Kui klientprogrammiga pöördutakse serveri poole, siis peab PAMi moodulitega oskama suhelda mitte autentimisega seotud klientprogramm, vaid vastav server, näiteks sshd, xdm, ftpd. 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)

Tarkvara kompileerimisel on võimalik näidata, kas soovitakse saada PAMi toetust või mitte.

Moodulid

Erinevate autentimissüsteemide kasutamiseks on vaja kasutada vastavaid PAMi mooduleid. Näiteks selleks, et autentimist teostaks Kerberos, peab olema olemas PAMi kerberose moodul.

Lisaks on spetsiaalsed moodulid, mis võimaldavad näiteks:

   * 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 

Tavaliselt asuvad moodulid kataloogis /lib/security.

PAMi konfigureerimine

PAMi konfigureerimine toimub vaikimisi kataloogis /etc/pam.d sisalduvate failide redigeerimisel. Tavaliselt pöördub autentimist vajav programm 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 programmi jaoks õnnestumise või ebaõnnestumisega. Õnnestumine tähendab, et kasutaja autentimine õnnestus ja ta saab programmi kasutada. Konfiguratsioonifaili süntaks

Selgitame PAMi toimimist toodud näite varal. Konfiguratsioonifaili süntaks on selline

moodulitüüp   kontrollvõti   mooduli-fail   argumendid
  1. Moodulitüüp PAMis on neli erinevat moodulitüüpi. Iga moodulitüübi kontroll lõpeb õnnestumisega või ebaõnnestumisega. Moodulitüübid:
         * auth - autendib kasutaja ja annab talle nt tema grupist tulenevad õigused
         * account - otsustab, kas kasutajat teenindada nt kellaaja, kust süsteemi sisenetakse või seda teenust hetkel kasutavate kasutajate arvu järgi.
         * session - asjad, mis on vaja teha peale sisselogimist, nt logisse kirjutamine
         * password - korraldab parooli muutmist 
     Iga teenuse puhul ei pruugi olla kõik moodulitüübid kasutatud.
  2. Kontrollvõti Sama moodulitüüp võib olla kirjeldatud mitmel järjestikusel real (nt password) moodustades pinu. PAMi moodulitüübi õnnestumise määrab moodulitüübi pinu kogutulemus, mis on määratud kontrollvõtmetega:
         * 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 
  3. Moodulifail Näitab kus asub PAMi moodulile vastav fail.
  4. Argumendid Moodulit kontrollivad argumendid. 

Ülaltoodud näites tuleb seatud tingimustest aru saada selliselt:

   * auth - moodulifail pam_pwdb.so viitab sellele, et kasutatakse traditsioonilist UNIXi autentimisskeemi, see tähendab /etc/passwd faili; shadow viitab, et tegu on varjatud paroolidega; nullok aga, et lubatud on ka tühiparool. auth teostatakse passwd progrmmi käivitamise järel, kui kasutajalt tema vana parooli küsitakse.
   * account - kasutatakse faili /etc/passwd sisu veendumaks, et kasutaja, kuigi sisestanud õige parooli, ikka tohib käesoleval ajal süsteemi siseneda
   * password - see teostatakse uue parooli sisestamisel; nimelt kontrollib cracklib, et uus parooli liiga lihtne ei saaks, andes kolm katset; peale selle, uus parool talletatakse traditsioonilise skeemi kohaselt, parooli krüptitakse MD5ga ja hoitakse varjatult. See moodulitüüp moodustab pinu; kui üks või enam pinu rida ebaõnnestub, siis programmi ei käivitata, st kasutaja parooli ei vahetata. 

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 juhutma, 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 tradistsioonilisele UNIXi autentimisskeemile.

Turvalisus

Kui te ei karda ise 'ukse taha jääda', siis soovitatakse teha sellise sisuga teenus other

auth      required   pam_deny.so 
auth      required   pam_warn.so 
account   required   pam_deny.so 
account   required   pam_warn.so 
password  required   pam_deny.so 
password  required   pam_warn.so 
session   required   pam_deny.so 
session   required   pam_warn.so

See tähendab, et teenuseid, mida pole konfigureeritud, ei lubata kasutada, kuid katsed seda teha lähevad süsteemi logisse.

© EENet 2000