< Linux

PAM

Szerző: Sallai András

Copyright © 2011, Sallai András

Szerkesztve: 2011, 2012, 2013

Licenc: CC BY-SA 4.0

Web: https://szit.hu

Bevezetés

A PAM a Pluggable Authentication Modules rövidítése.

1990-ben a Sun Microsystems' SunSoft fejlesztőcsoportja hozza létre.

Egy hozzáférési metódus jelszavak, smartkártyák, biometrikus azonosításhoz, egy egységes felületet nyújtva a programozók számára.

Beállítás

A szolgáltatások

Eredetileg egyetlen konfigurációs állomány volt, melynek tartalma:

szolgáltatás-típus	module-típusa	kontroll	modul-útvonal	argumentumok

A szolgáltatás típusa általában a következő fájlból egy:

/etc/services

Ilyeneket kell keresni mint:login, su, sshd vagy xdm, stb.

A Debian a Lenny óta az alábbi könyvtárat használja:

/etc/pam.d/

A könyvtár a szolgáltatás nevével megegyező néven létrehozunk egy szolgáltatást leíró állományt, amelynek a szintaxisa a következő:

modul-típusa	kontroll	modul-útvonal	argumentumok

Modul-típusa

Négy különböző típus adható meg:

auth	Azonosítás, engedély. Azonosítás felhasználónév, jelszóval. Visszatérés sikeres vagy sikertlene. Garantálva csoport tagság és más privilégiumok
account	Számla (Account) kezelés. Gyakran előfordul korlátozás. Például: a nap bizonyos időszakában, vagy csak bizonyos erőforrásokat használva léphet be, stb.
password	Jelszókezelés. Szükséges a jelszóazonosító frissítése. Általában kérés válasz alapú hitelesítés
session	Munkamenet-kezelés. Elvégzi a szükséges feladatokat, például naplózás, csatolás, stb.

Ha egy modul hiányzik, akkor a hiba naplózva lesz, például syslog démon által. Ha a konfigurációs állomány sorát egy kötőjel vezeti be akkor a naplózás elmarad. Például a fingerprint azonosítás nem áll rendelkezésre, de ha lesz ilyen használni akarjuk.

-auth sufficient pam_fingerprintd.so

Kontroll

A kontrollmező megadja, mit történjen, ha az adott PAM modul sikertelenül teljesít. Kétféle szintaktika ismeretes: az egyik amikor magában leírom a direktívát, és amikor érték=akció párost használunk.

Egyszerű direktívák

required

Az egész sikertelen, ha modul nem teljesít, de csak az egész folyamat végén

requisite

Ugyanaz, kivéve, hogy ha sikertelen modul visszatér az alkalmazásra. Gyakran használják extra biztonsági intézkedésre.

sufficient

Ha sikertelen, a következő szabályra lép

optional

Ez a modul csak akkor fontos, ha ez az egyetlen.

Változó értékpár

Általános alak [érték1=tevékenység1 érték2=tevékenység2 …]

A következő változók a modulok visszatérési kódjai:

abort - Kritikus hiba (a modul sikertelen „fail now”).

acct_expired - A felhasználói hozzáférés lejárt.

auth_err - Azonosítás sikertlen.

authinfo_unavail - Az azonosítás alapjául szolgáló információ elérhetetlen.

authtok_disable_aging - Az azonosító bejegyzés elavult, nincs engedélyezve.

authtok_err - Azonosító bejegyzés manipulációs hiba.

authtok_expired - Az azonosító bejegyzés lejárt.

authtok_lock_busy - Az azonosító bejegyzés foglalt.

authtok_recover_err - Az azonítási információ nem állítható vissza.

bad_item - A pam_*_item() rész rossz.

buf_err - Memória buffer hiba.

conv_again - A párbeszéd funkció esemény vezérelt, és az adatok még nem állnak rendelkezésre.

conv_err - Párbeszéd hiba.

cred_err - Sikertelen a felhasználó megbízás beállítása.

cred_expired - A felhasználó megbízása lejárt.

cred_insufficient - Nem lehet hozzáférni a megbízáshoz, a hitelesítési adatok elégtelensége miatt.

cred_unavail - A felhasználó megbízás nem hozzáférhető; Az alapul szolgáló hitelesítési szolgáltatás nem tudja letölteni.

default - Az összes érték

ignore - Figyelmen kívül hagyja a modult függetlenül attól, hogy a kontroll résznél mi lett beállítva. Például: opcionális, vagy elégséges.

incomplete - Újra próbálkozunk a hitelesítéssel, majd újra ellenőrizzük.

maxtries - Az újrapróbálkozások elérték a maximális lehetőséget. Nincs több lehetőség.

module_unknown - A modul ismeretlen.

new_authtok_reqd - Új azonosítóbejegyzés szükséges. Ez normális, ha megköveteljük a jelszócserét, vagy a jelszó NULL.

no_module_data - Nincs a modulnak megfelelő adat jelen.

open_err - A modult nem tudom betölteni.

perm_denied - Engedély megtagadva.

service_err - Hiba a szolgáltatómodulban.

session_err - Cannot make or remove an entry for the specified session.

success - Sikeres függvényvisszatérés.

symbol_err - A szimbólum nem található.

system_err - Rendszerhiba.

try_again - Előzetes jelszavas ellenőrzés.

user_unknown - A felhasználó ismeretlen az alapazonosító modul számára.

Tevékenységek előjel nélküli egészek, amelyek a következők lehetnek:

ignore − A modul nincs hatással más modulokra.

bad − A modul sikertelen. Ha ez az első hiba a többi modul ezt az értéket felhasználja.

die − Ugyanaz, kivéve, hogy nincs több ellenőrzés, a végeredmény sikertelen.

ok − Az előző sikeres visszatérési kód felülírva.

done − Ugyanaz, kivéve, hogy több ellenőrzés nincs.

reset − Törli a memóriát és a verem következő moduljával folytatjuk.

Néhány példa

required	=	[	success=ok	new_authtok_reqd=ok	ignore=ignore	default=bad	]
requisite	=	[	success=ok	new_authtok_reqd=ok	ignore=ignore	default=die	]
sufficient	=	[	success=done	new_authtok_reqd=done	default=ignore	]
optional	=	[	success=ok	new_authtok_reqd=ok	default=ignore	]

Modul útvonal

Teljes elérési út a modul fájlnevével, kiterjesztésével együtt. A modulokk a /lib/security/ könyvtárban találhatók a Debian lenny óta. A modulok fájlnevei így épülnek fel:

pam_<név>.so

A Linux-PAM System Administrator's Guide tartalmazza az alapmodulok leírását.

Irodalom

Kézikönyv

man pam_unix

Linkek

http://www.rjsystems.nl/en/2100-pam-debian.php

http://www.freedesktop.org/software/systemd/man/pam_systemd.html

http://content.hccfl.edu/pollock/AUnix2/PAM-Help.htm

https://unixlinux.tmit.bme.hu/PAM