Hlavní navigace

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

Boleslav Bobčík

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?

19. 9. 2000 19:49

Boleslav Bobcik (neregistrovaný)

Wow, bod od Yenyi potesi. Dam si ho do ramecku (ke kolokviim z predmetu UNIX -- programovani a sprava systemu :)

19. 9. 2000 15:28

LenON (neregistrovaný)

Suhlasim s kolegom, dost dlho mi trvalo kym som z tej dokumentacie pochopil ze to co chcem urobit, sa neda :), anyway je nejaky kratky PAM draft tusim.
Co som chcel urobit na RH 6.2 : pouzit iny subor s heslami na autentifikaciu pre nekryptovane sluzby, konkretne ftp a pop3, toto sa standartne s PAM robit neda, dokaze overovat iba hesla zo passwd/shadow. Na stranke modulov http://www.kernel.org/pub/linux/libs/pam/modules.html , je vsak modul pam_pwdfile, hp http://cpbotha.net/pam_pwdfile.html, k…

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Jmenuje se Janina a žije bez cukru

Jmenuje se Janina a žije bez cukru

DigiZone.cz: Test Philips 24PFS5231 s Bluetooth repro

Test Philips 24PFS5231 s Bluetooth repro

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Vitalia.cz: Taky věříte na pravidlo 5 sekund?

Taky věříte na pravidlo 5 sekund?

Vitalia.cz: 9 největších mýtů o mase

9 největších mýtů o mase

120na80.cz: Co všechno ovlivňuje ženskou plodnost?

Co všechno ovlivňuje ženskou plodnost?

Podnikatel.cz: Chtějte údaje k dani z nemovitostí do mailu

Chtějte údaje k dani z nemovitostí do mailu

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Snížení DPH na 15 % se netýká všech

Snížení DPH na 15 % se netýká všech

Podnikatel.cz: Udávání kvůli EET začalo

Udávání kvůli EET začalo

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Podnikatel.cz: Zavře krám u #EET Malá pokladna a Teeta?

Zavře krám u #EET Malá pokladna a Teeta?

Vitalia.cz: Proč vás každý zubař posílá na dentální hygienu

Proč vás každý zubař posílá na dentální hygienu

Měšec.cz: Zdravotní a sociální pojištění 2017: Připlatíte

Zdravotní a sociální pojištění 2017: Připlatíte

Vitalia.cz: „Připluly“ z Německa a možná obsahují jed

„Připluly“ z Německa a možná obsahují jed