PAM - správa autentizačních mechanismů

Boleslav Bobčík 19. 9. 2000

Systém PAM (Pluggable Authentication Modules) dává administrátorům počítačových systémů do ruky nástroj, který jim citelně usnadní řešení jejich problémů s přidělováním přístupových práv uživatelům. V tomto článku prozkoumáme základní principy PAM z hlediska správců.

V nedávných dobách žádný univerzální autentizační systém neexistoval. Aplikace, která poskytovala zneužitelné služby, musela provést kontrolu identity sama. Například login prověřil záznam v souboru /etc/passwd a rozhodl, jestli uživateli povolí přihlášení. Slabinou tohoto přístupu je spor s filozofií unixových systémů, aby každý program dělal jednu věc, ale dělal ji dobře. Některé služby totiž své bezpečnostní mechanismy měly velmi slabé, protože programátoři nebyli odborníci na zabezpečení.

Další vada na kráse zabudovaných kontrol identity se jmenuje nemožnost rozšiřování. Při přechodu na systém stíněných hesel, kdy jsou hesla uchována ve zvláštním, běžným uživatelům nepřístupném souboru (/etc/shadow), bylo nutné upravit zdrojové kódy programu login a všech podobných aplikací, které využívaly /etc/passwd. Každého napadne, že taková věc není maličkost. Především musí být zdrojové kódy všech takových programů dostupné, což je sice (alespoň pod Linuxem) běžné, ale výjimky se najdou.

Tím se dostáváme k myšlence PAM: zajistit, aby programy byly nezávislé na konkrétních autentizačních postupech. Aplikace chce obvykle vědět, zda má službu poskytnout nebo ne, ale nezajímá ji, jestli bude kontrola realizovaná heslem, magnetickou kartou nebo scanováním oční sítnice.

Základem systému PAM jsou připojovatelné autentizační moduly. Jedná se o sdílené objektové soubory a podle konvence je najdeme v adresáři /lib/security. Samy od sebe pochopitelně moduly nevykonávají žádnou činnost. Aplikace k nim obvykle přistupuje přes dvě vrstvy. První vrstvou je systémová knihovna připojená k programu; tím aplikace dostává k dispozici autentizační služby. Druhou, nejvýznamnější vrstvou je systémová konfigurace. Zde administrátor určuje, co všechno musí uživatel splnit, aby mu byla služba aplikace poskytnuta.

Způsob konfigurace systému PAM si ukážeme na běžném příkladu, už zmíněném programu login. Podle ukázky pak prozkoumáme důležité vlastnosti celého PAMu.

#%PAM-1.0
# This is /etc/pam.d/login
auth        requisite   pam_securetty.so
auth        required    pam_pwdb.so    shadow nullok
auth        required    pam_nologin.so
account     required    pam_pwdb.so
session     required    pam_pwdb.so
session     optional    pam_console.so
password    required    pam_cracklib.so
password    required    pam_pwdb.so    nullok use_authtok md5 shadow

Vidíme, že každý řádek konfiguračního souboru (pochopitelně kromě komentářů) se skládá alespoň ze tří položek. První z nich je funkční oblast, druhý sloupec nazveme kontrolní příznak, třetí položka je samotné jméno PAM modulu, za kterým mohou následovat parametry.

PAM se angažuje ve čtyřech funkčních oblastech. Jde o autentizaci uživatele, kontrolu účtu, správu relace a změnu hesla. V těchto oblastech pak různé moduly provádí kontrolní nebo výkonné funkce.

Během autentizace (auth) se ověřuje identita uživatele. Může proběhnout kontrola hesla, připojení k serveru Kerberos, nebo jiná kontrolní činnost.

Kontrola účtu (account) provádí další ověřování, které nemá přímou souvislost s identitou uživatele. Příkladem je povolení přístupu jen během určité doby nebo omezení počtu současně přihlášených uživatelů.

Správa relace (session) se aktivuje před a po provedení služby. Obvykle nastavuje proměnné prostředí (environment) a omezuje systémové prostředky. Mezi další možnosti patří „uvěznění“ procesu pomocí chroot, připojení dalších souborových systémů nebo protokolování.

Konečně změna hesla (password) je oblast, jejíž moduly se starají o aktualizaci hesel a podobných uživatelských informací. Obvykle zde najdeme kontrolu délky a kvality hesla (např. pomocí knihovny cracklib), nebo například zápis hesla do databáze.

Zajímavou vlastností je, že v každé oblasti může být zapojen libovolný počet modulů. Administrátor má možnost jednoduše naprogramovat své požadavky na bezpečnost systému v podobě postupného volání modulů. Během autentizace podle ukázkové konfigurace se nejprve zkontroluje, jestli se superuživatel přihlašuje z bezpečného terminálu (netýká se ostatních uživatelů). Pak se provede běžná kontrola hesla podle /etc/shadow. Na závěr se zjistí, zda existuje soubor /etc/nologin; pokud ano, má přístup povolen jedině superuživatel, ostatním je vypsán obsah tohoto souboru a relace je ukončena.

Dalším prvkem ve schématu zabezpečení je kontrolní příznak. Ten určuje, jak s modulem zacházet. Možné hodnoty jsou required (povinný), requisite (bezpodmínečný), sufficient (postačující) a optional (nepovinný).

Modul, který je povinný a při kontrole neuspěje, sice způsobí zamítnutí přístupu, ale až po provedení ostatních modulů ze stejné oblasti. Bezpodmínečný modul se liší okamžitým oznámením neúspěchu. Můžeme si představit, že takový modul zjistí pokus o přihlášení přes nějaké nespolehlivé médium (třeba nezašifrované spojení). Díky včasnému odmítnutí přístupu zabrání, aby uživatel poslal přes toto médium heslo, které by mohl zachytit každý nadanější hacker.

Modul s příznakem postačující může okamžitě ukončit kontroly s výsledkem ‚úspěch‘, ale jedině za předpokladu, že tento modul uspěl a žádný z předchozích modulů nezamítnul přístup. Jinak je modul ignorován a přechází se na další kontrolu. Obvyklým využitím je přeskočení všech zdlouhavých kontrol, pokud aplikaci spouští superuživatel.

Úspěch či neúspěch nepovinných modulů se nezahrnuje do celkového výsledku. Jistě bychom nechtěli, aby byl uživatelům zakázán přístup jen proto, že dočasně není možné připojit souborový systém (např. CDROM).

V distribuci RedHat a jí podobných se konfigurace systému PAM uchovává v adresáři /etc/pam.d. Názvy souborů musí odpovídat jménům služeb, takže najdeme soubory login, su a další. Speciální význam má soubor other. Ten nastavuje zabezpečení pro služby, které nemají vlastní konfigurační soubor. Je dobrým zvykem vše, co není výslovně povoleno, jednoduše zakázat:

#%PAM-1.0
# This is /etc/pam.d/other
auth        required    pam_deny.so
account     required    pam_deny.so
session     required    pam_deny.so
password    required    pam_deny.so

S takovou bezpečnostní politikou, obvykle nazývanou racionální, si můžeme být jistí, že zapomenuté zabezpečení některé služby nikomu neposkytne cestu do systému. Na druhou stranu, pokud bychom v takové situaci omylem smazali nebo poškodili konfiguraci (PAM netoleruje chyby syntaxe) pro login, pak se do systému dostaneme jen v záchranném jednouživatelském režimu po restartu. Je mnohem bezpečnější experimentovat s konfigurací např. programu xscreensaver – následky nějaké chyby se odstraňují přece jen rychleji.

Na závěr je nutné poznamenat, že k tomu, aby systém byl bezpečný a spolehlivý, musí správce systému chápat nejen principy PAM, ale musí znát i funkci všech použitých modulů. Dokumentaci k nim najdeme na obvyklých místech: v manuálových stránkách nebo dokumentaci dodávané s operačním systémem nebo na Internetu. Tam také najdeme i odkazy na další moduly, které se nedodávají v běžných Linuxových distribucích.

Našli jste v článku chybu?
Podnikatel.cz: Eseróčko vs. živnost. Co vyhrává?

Eseróčko vs. živnost. Co vyhrává?

120na80.cz: Cestovní nevolnost. Co pomůže?

Cestovní nevolnost. Co pomůže?

DigiZone.cz: ČT veze bronz z klání televizní grafiky

ČT veze bronz z klání televizní grafiky

Podnikatel.cz: "Okurku" vyřeší slevové servery. Už jim věřte

"Okurku" vyřeší slevové servery. Už jim věřte

DigiZone.cz: Krajské televize na okraji zájmu?

Krajské televize na okraji zájmu?

Měšec.cz: Udali ho na nelegální software a přišla Policie

Udali ho na nelegální software a přišla Policie

DigiZone.cz: Náhrada za nevrácená zařízení?

Náhrada za nevrácená zařízení?

DigiZone.cz: Euro 2016: HbbTV na ČT opět kvalitní

Euro 2016: HbbTV na ČT opět kvalitní

120na80.cz: Krémy, nebo spreje na opalování?

Krémy, nebo spreje na opalování?

Vitalia.cz: Margit Slimáková nesnáší rajskou, Petr Fořt pizzu

Margit Slimáková nesnáší rajskou, Petr Fořt pizzu

DigiZone.cz: Kanály Novy na Slovensku oficiálně?

Kanály Novy na Slovensku oficiálně?

Lupa.cz: Text umírá, na webu zbude jen video

Text umírá, na webu zbude jen video

Vitalia.cz: Jeďte do lázní, to je holistika

Jeďte do lázní, to je holistika

Lupa.cz: U Chomutova vyroste dotované datacentrum

U Chomutova vyroste dotované datacentrum

Podnikatel.cz: Babiš představil daňovou revoluci Moje daně

Babiš představil daňovou revoluci Moje daně

DigiZone.cz: Noxon iRadio 1 W bude za pár měsíců

Noxon iRadio 1 W bude za pár měsíců

DigiZone.cz: Soud zakázal šíření TV Markíza v ČR

Soud zakázal šíření TV Markíza v ČR

Měšec.cz: Rusové platí mobilem. Funguje to i v Česku

Rusové platí mobilem. Funguje to i v Česku

Lupa.cz: Vzali věc, která fungovala, a přidali internet

Vzali věc, která fungovala, a přidali internet

DigiZone.cz: Kritické poznámky k DVB-T2

Kritické poznámky k DVB-T2