16.2. Konfigurace PAM pro sshd

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.3. Výchozí konfigurace pro account sekci


account required        pam_unix2.so

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.