Az sshd PAM-konfigurációjaAz sshd PAM-konfigurációja

A PAM működésének illusztrálására tekintsük át az sshd PAM-konfigurációját gyakorlati példaként:

24.1. példa - Az sshd PAM-konfigurációja

#%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

Egy alkalmazás (a jelen esetben az sshd) tipikus PAM-konfigurációja négy include utasítást tartalmaz, amelyek a négy modultípus konfigurációs fájljaira utalnak: common-auth, common-account, common-password, és common-session. Ez a négy fájl tartalmazza az egyes modultípusok alapértelmezett konfigurációját. Ha beágyazva használja őket az egyes modulok PAM-alkalmazásonkénti külön-külön meghívása helyett, akkor automatikusan frissítésre kerül a PAM-konfiguráció, ha a rendszergazda módosítja az alapértelmezett értékeket. Régebben kézzel kellett módosítani minden alkalmazás konfigurációs fájlját, ha a PAM-ban változások történtek, vagy egy új alkalmazás lett telepítve. Most már a PAM-konfiguráció és az összes módosítása öröklődik az alapértelmezett konfigurációs fájlokon keresztül.

Az első beágyazott fájl (a common-auth) két auth típusú modult hív meg: a pam_env és a pam_unix2 modulokat. Lásd: 24.2. példa - Az auth szakasz alapértelmezett konfigurációja

24.2. példa - Az auth szakasz alapértelmezett konfigurációja

auth    required        pam_env.so
auth    required        pam_unix2.so

Az első, a pam_env az /etc/security/pam_env.conf fájlt tölti be a fájlban megadott környezeti változók beállításához. Így például beállítható a DISPLAY változó a helyes értékre, mivel a pam_env modul tudja, hogy a bejelentkezés honnan történik. A második, a pam_unix2 összeveti a felhasználó bejelentkezési azonosítóját és jelszavát az /etc/passwd és az /etc/shadow fájlokban tároltakkal.

A common-auth részben megadott fájlok sikeres meghívása után egy harmadik, pam_nologin nevű modul ellenőrzi, hogy az /etc/nologin létezik-e. Ha igen, akkor csak a root felhasználó jelentkezhet be. Az összes auth modul feldolgozásra kerül, mielőtt az sshd bármilyen visszajelzést kapna arról, hogy a bejelentkezés sikerült-e. Figyelembe véve, hogy az összes modul required vezérlő jelzővel rendelkezik, ahhoz, hogy az sshd pozitív eredményt kapjon vissza, mindegyikük feldolgozásának sikeresen végbe kell mennie. Ha a modulok közül csak egy is sikertelen, az összes modul feldolgozásra kerül, majd ezután kap értesítést az sshd a negatív eredményről.

Miután az összes auth típusú modul sikeresen feldolgozásra került, egy újabb beágyazási (include) utasítás következik, amint azt az ábra (24.3. példa - Az account szakasz alapértelmezett konfigurációja) mutatja. A common-account csak egy modult tartalmaz, ez a pam_unix2. Ha a pam_unix2 azt az eredményt adja vissza, hogy a felhasználó létezik, az sshd kap egy üzenetet a sikerről, és a következő modulköteg (password) kerül feldolgozásra: 24.4. példa - A password szakasz alapértelmezett konfigurációja.

24.3. példa - Az account szakasz alapértelmezett konfigurációja

account required        pam_unix2.so

24.4. példa - A password szakasz alapértelmezett konfigurációja

password required       pam_pwcheck.so  nullok
password required       pam_unix2.so    nullok use_first_pass use_authtok
#password required      pam_make.so     /var/yp

Az sshd PAM-konfigurációja megint csupán egy include utasítást tartalmaz, amely a password moduloknak a common-password helyen található alapértelmezett konfigurációjára hivatkozik. Ezeknek a moduloknak sikeresen végbe kell menniük (required vezérlő jelző) minden alkalommal, ha az alkalmazás a hitelesítési token módosítását kéri. A jelszó vagy valamilyen más hitelesítési token megváltoztatása biztonsági ellenőrzést igényel. Ezt a pam_pwcheck modul végzi. Az utána használt pam_unix2 modul áthoz minden régi és új jelszót a pam_pwcheck modulból, így a felhasználónak nem kell újra hitelesítenie magát. Ez továbbá lehetetlenné teszi a pam_pwcheck által végzett ellenőrzések megkerülését is. A password típusú modulokat akkor kell használni, ha az előző, account vagy auth típusok be vannak állítva, hogy jelezzék a lejárt jelszavakat.

24.5. példa - A session szakasz alapértelmezett konfigurációja

session required        pam_limits.so
session required        pam_unix2.so
session optional        pam_umask.so

Utolsó lépésként a session típusú modulok (ezek a common-session fájlba vannak beágyazva) kerülnek meghívásra a munkamenet beállítására az adott felhasználónak megfelelően. Bár a pam_unix2 modul ismét feldolgozásra kerül, ennek nincs gyakorlati következménye, mivel a modul vonatkozó konfigurációs fájljában (pam_unix2.conf a none paraméter van megadva. A pam_limits modul betölti az /etc/security/limits.conf fájlt, amely korlátokat szabhat meg bizonyos rendszererőforrások használatával kapcsolatban. A session modulok a felhasználó kijelentkezésekor másodszor is meghívódnak.