Následující praktický příklad ukazuje konfiguraci PAM pro sshd:
Příklad 16.1. Konfigurace PAM pro sshd
#%PAM-1.0 auth include common-auth auth required pam_nologin.so account include common-account password include common-password session include common-session # Enable the following line to get resmgr support for # ssh sessions (see /usr/share/doc/packages/resmgr/README.SuSE) #session optional pam_resmgr.so fake_ttyname
Typická PAM konfigurace aplikace (v našem případě sshd) obsahuje čtyři
vkládací příkazy (include) odkazující na konfigurační
soubory čtyř typů modulů:
common-auth,
common-account,
common-password a
common-session.
Tyto čtyři soubory obsahují výchozí konfiguraci pro každý typ modulů.
Toto vkládání zajišťuje automatické použití aktuálního výchozího
nastavení. Dříve bylo třeba všechny konfigurační soubory pro všechny
aplikace upravit ručně, kdykoli došlo k aktualizaci PAM. Nyní existuje
centrální konfigurace; jsou-li v ní provedeny změny, automaticky se dědí
PAM konfiguracemi jednotlivých služeb.
První vkládaný soubor (common-auth) volá dva moduly
typu auth: pam_env a
pam_unix2. Viz 16.2 – „Výchozí konfigurace pro auth sekci“.
Příklad 16.2. Výchozí konfigurace pro auth sekci
auth required pam_env.so auth required pam_unix2.so
První z nich, pam_env, nahraje soubor
/etc/security/pam_env.conf a nastaví proměnné
prostředí specifikované v tomto souboru. To lze využít k nastavení
proměnné DISPLAY na správnou hodnotu, neboť modul
pam_env zná místo, ze kterého probíhá přihlašování.
Druhý, pam_unix2, zkontroluje přihlašovací jméno a
heslo podle /etc/passwd a
/etc/shadow.
Po úspěšném zavolání modulů z common-auth zkontroluje
třetí modul, pam_nologin, zda existuje soubor
/etc/nologin. Pokud existuje, nesmí se přihlásit nikdo
kromě superuživatele root.
Všechny auth moduly jsou zpracovány dříve než sshd
dostane informaci o výsledku přihlašování. Protože všechny
auth moduly mají příznak required,
musí být všechny úspěšně zpracovány před tím, než sshd dostane zprávu
o výsledku autentizace. Pokud některý z modulů selže, stejně musí být
zpracována celá sada, a teprve potom sshd dostane zprávu o negativním
výsledku.
Jakmile jsou všechny auth moduly úspěšně zpracovány,
přijde na řadu další vkládací (include) příkaz,
tentokrát ten, který je uvedený v 16.3 – „Výchozí konfigurace pro account sekci“.
Soubor common-account obsahuje jen jeden modul,
pam_unix2. Pokud pam_unix2 zjistí,
že uživatel existuje, dostane sshd zprávu o úspěchu a je zpracována další
sada modulů (password) – viz
16.4 – „Výchozí konfigurace pro password sekci“.
Příklad 16.4. Výchozí konfigurace pro password sekci
password required pam_pwcheck.so nullok password required pam_unix2.so nullok use_first_pass use_authtok #password required pam_make.so /var/yp
PAM konfigurace sshd zahrnuje pouze vkládací (include)
příkaz odkazující na výchozí konfiguraci password modulů
v souboru common-password. Tyto moduly se musí úspěšně
zpracovat (příznak required) kdykoliv aplikace vyžaduje
změnu autentizačního tokenu. Změna hesla či jiného tokenu vyžaduje
bezpečnostní kontrolu. Tu zajišťuje modul pam_pwcheck.
Po něm použitý modul pam_unix2 přenáší hesla z modulu
pam_pwcheck, takže se uživatel nemusí znovu
autentizovat. Také tím znemožňuje obejít kontroly prováděné modulem
pam_pwcheck. Moduly typu password
by měly být používány vždy, když jsou moduly account
či auth nakonfigurovány tak, aby upozorňovaly na
vypršení hesla.
Příklad 16.5. Výchozí konfigurace pro session sekci
session required pam_limits.so session required pam_unix2.so
Jako poslední krok jsou volány moduly typu session
z common-session, jejichž úkolem je nastavit relaci
pro konkrétního uživatele. Opětovné použití modulu
pam_unix2 nemá žádné praktické důsledky, neboť je
volán s parametrem none, který je nastaven v konfiguračním
souboru tohoto modulu (pam_unix2.conf). Modul
pam_limits zpracovává soubor
/etc/security/limits.conf, ve kterém mohou být
definována omezení pro využívaní určitých systémových zdrojů. Moduly
typu session jsou volány podruhé při odhlášení
uživatele.