PAM

Z Varhoo
Přejít na: navigace, hledání

V dřívějších dobách si autentifikaci uživatelů přistupujících k dané aplikaci musela obstarat aplikace sama. Tento přístup má několik nevýhod: nejen že to je zcela proti filozofii unixových systému (kde každý program děla jednu věc, ale dělá ji dobře), ale hlavně nedovoluje jednoduchou změnu autentizačních mechanizmů. Linux-PAM (Pluggable Authentication Modules for Linux) je systém modulů dovolující aplikacím nezávislost na autentizačních mechanizmech, které jsou plně pod správou systému PAM. Aplikace pak samotný proces autentizace (realizovaný heslem, biometrikami, čipovými kartami, ...) přenechává na knihovně libpam. Důležitou součástí systému PAM jsou autentizační moduly (dynamické objektové soubory) umístěné v adresáři /lib/security/ nebo /usr/lib/security/.

Konfigurace

Konfigurační soubory Ve starších verzích byl konfigurační soubor /etc/pam.conf, novější verze má pro každou aplikaci (schopnou pracovat s PAM) zvláštní konfigurační soubor nacházející se v adresáři /etc/pam.d/ (např. /etc/pam.d/reboot). Soubor /etc/pam.conf se pak bere na vědomí jen v případě, že adresář /etc/pam.d/ neexistuje.

Struktura /etc/pam.conf je:

service-name    module-type    control-flag    module-path    args

Struktura /etc/pam.d/<service-name> je:

module-type    control-flag    module-path    args

Kde: service-name

   Jméno služby/aplikace.
   Speciální service-name OTHER je rezervovaný pro defaultní autentifikační mechanismus. Zde je dobrým zvykem zakázat vše, co není vysloveně povoleno:

    #%PAM-1.0
    # This is /etc/pam.d/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

module-type

   Jeden ze čtyř možných typů modulu:
   auth
       autentizace uživatele (heslem, biometrikami, ...);
   account
       provádí se další ověřování přístupu k službě, které však nemá nic společného s ověřováním identity uživatele (např. přístup jen v určitou dobu,...);
   session
       provádí se před a po skončení služby. Stará se o správu sezení. Může např. nastavovat proměnné prostředí, omezovat systémové prostředky, chroot, logovaní, ...
   password
       provádí aktualizaci uživatelských autentizačních tokenů (heslo, otisk prstu, ...). Obvykle také umožňuje kontrolu "kvality" hesla (délka, odolnost proti slovníkovému útoku).

control-flag

   používá se k definici reakce na (ne)úspěšné ukončení modulu. Moduly stejného typu se spouštějí v sérii (jeden po druhém). Kontrolní příznaky pak určují reakci při skončení modulu. Aplikace se ale nedozví jak skončil který modul, místo toho obdrží jen celkovou odpověď success/fail. Od Linux-PAM v0.60 lze kontrolní příznak definovat jedním ze dvou způsobů:
   pomocí jednoho z klíčových slov:
   required
       jeho neúspěch způsobí zamítnutí, ale až po provedení ostatních modulů ze stejné oblasti.
   requisite
       liší se od required okamžitým oznámením neúspěchu.
       Např. při přihlašování přes nespolehlivý kanál nám nedovolí zadávat heslo.
   sufficient
       modul s tímto příznakem může okamžitě ukončit kontroly s výsledkem success, pokud tento modul uspěl a žádný z předchozích modulů nezamítl přístup. Jinak je modul ignorován a pokračuje se dál v kontrole.
       Využívá se převážně pro přeskočeni zdlouhavých kontrol, pokud službu požaduje superuživatel.
   optional
       (ne)úspěch těchto modulů se nezahrnuje do celkového výsledku. 
   Nebo pomocí propracovanější syntaxe, ve které je kontrolní příznak tvaru:
      [value1=action1 value2=action2, ...]

module-path

   cesta k modulům. Implicitně (pokud není zadána cesta absolutní) se hledá v /usr/lib/security/ (/lib/security/). 

args

   argumenty předávané modulu při jeho spuštění.

Příklad modulu

pam_localuser

  • vyžaduje uživatele uvedeného v /etc/passwd

pam_krb5

  • autentizace přes Kerberos 5

pam_succeed_if

  • úspěch tohoto modulu závisí na širší charakteristice uživatelova účtu (LOGIN,UID,GID,SHELL,HOME).

pam_cracklib

  • kontrola odolnosti hesla.

pam_limits

  • nastavování limitu (/etc/security/limits.conf).

pam_time

  • přístup jen v určitou dobu (/etc/security/time.conf).

pam_warn

  • slouží pro zápis do syslogu.

Příklad konfiguračního souboru /etc/pam.d/login

 #%PAM-1.0
 auth       required     pam_securetty.so
 #kontrola, zda pristupujeme pres bezpecny kanal
 auth       required     pam_stack.so service=system-auth
 #vyhodnoce se ulozi na zasobnik
 auth       required     pam_nologin.so
 #kontrola zda neexistuje soubor /etc/nologin
 account    required     pam_stack.so service=system-auth
 password   required     pam_stack.so service=system-auth
 session    required     pam_stack.so service=system-auth
 session    optional     pam_console.so


Odkazy

Osobní nástroje