V předchozím článku jsem popsal tok aplikace, která volá knihovny PAM za účelem ověření na velmi vysoké úrovni. V tomto článku si projdeme konfigurační soubory pro místní sudo
příkaz.
Při použití sudo
, přepneme uživatele a něco uděláme. Tato změna oprávnění vyžaduje ověření, že jsme tím, za koho se vydáváme, a že můžeme danou akci provést. Soubor /etc/sudoers
soubor řídí, kdo co může dělat, ale proces stále volá PAM pro případné kontroly autentizace. V rámci těchto volání se proces identifikuje a poté libpam
hledá odpovídající konfigurační soubor v /etc/pam.d
adresář.
$ cat /etc/pam.d/sudo#%pam-1.0#type returncode moduly Možnosti Možnosti zahrnují System-AuthAthsword Meon System-Authsession Volitelné Pam_Keyinit.so Revokession Požadovaný PAM_LIMIMITS.Sosession- auth
Stejně jako mnoho jiných *.d adresářů může správa balíčků přidat nebo odebrat soubor z tohoto adresáře. sudo
RPM přidá /etc/pam.d/sudo
soubor.
$ rpm -qf /etc/pam.d/sudosudo-1.9.0-0.1.b4.fc31.x86_64
Upstream verze může obsahovat různé položky, ale tento balíček poskytovaný distribucí obsahuje konfigurační soubor, který má několik zahrnutých příkazy do společného /etc/pam.d/system-auth
soubor, který poskytuje pam
balíček.
Pole konfiguračního souboru
První pole v tomto souboru identifikuje Typ hovoru na PAM. Řádky stejného typu jsou seskupeny. Existují čtyři typy:ověření, účet, heslo a relace. Podívejte se na man pam
pro popis každého typu.
Druhé pole je známé jako ReturnCode . Toto pole dává PAM vědět, jak zacházet s výsledky testu modulu. Návratové kódy označují, zda je test povinný nebo volitelný. Kódy lze také použít k označení řádku, který není testem modulu s volbami, ale spíše názvem jiného konfiguračního souboru s dalšími kontrolami. Úplný popis návratových kódů naleznete v man pam.conf
a nejběžnější z nich jsou popsány dále v tomto článku.
Zbytek řádku obsahuje název modulu a možnosti pro tento modul. Název modulu se musí shodovat s modulem dostupným v /etc/lib64/security
adresář. Možnosti se mohou lišit v závislosti na typu uskutečněného hovoru. Některé moduly provádějí testy pouze pro některé typy volání. Použijte manuálovou stránku pro každý modul, abyste viděli příklady a dozvěděli se o použití a dostupných možnostech.
Na pořadí položek v rámci typu volání záleží. To je většinou způsobeno tím, jak jsou návratové kódy zpracovávány, ale v některých případech je to způsobeno akcí modulu. Když libpam
obdrží zprávu „hotovo“ nebo „zemře“, ohlásí celkový výsledek zpět volajícímu procesu.
Konfigurace pro sudo
má několik včetně linky. Tyto řádky říkají libpam
zahrnout všechny řádky daného typu ze zadaného konfiguračního souboru. K dispozici je také substack možnost, která je podobná v tom, jak zahrnuje řádky z daného konfiguračního souboru, ale při "hotovo" nebo "kostce" se hlásí zpět do substack instrukce namísto původního procesu volajícího libpam
. Starší verze PAM měly jiné varianty toho, jak byly zahrnuty další konfigurační soubory. Když jsem například před téměř 20 lety začal prozkoumávat PAM, existoval specifický modul nazvaný s konfiguračními soubory jako argument. Klíčové slovo „zahrnout“ nebylo platné pro ReturnCode pole.
Návratové kódy v centrálních konfiguračních souborech
Soubor /etc/pam.d/sudo
výše uvedený soubor je poměrně krátký. Tři ze čtyř typů hovorů mají pouze zahrnutí jiného souboru. Soubor /etc/pam.d/system-auth
soubor je typičtější pro konfigurační soubor s mnoha kontrolami pro každý typ volání.
$ cat /etc/pam.d/system-auth#%PAM-1.0# Tento soubor je generován automaticky.# Uživatelské změny budou zničeny při příštím spuštění authconfig.auth požadováno pam_env.soauth dostatečné pam_unix.so nullok try_first_passauth required pam_succeed_if.so uid>=1000 quiet_successauth dostatečné pam_sss.so forward_passauth > omted mpauth > omted požadováno...
Povinné klíčové slovo je možná nejběžnější. Znamená to, že modul musí projít kontrolou, aby mohl být předán zpět aplikaci. I v případě selhání však budou následující řádky daného typu stále kontrolovány. Toto je dlouhodobá praxe, kdy se nesděluje žádný důvod selhání ověřování. Na systémech před 20 lety bylo možné odhadnout, jak se autentizace nezdařila, podle toho, jak dlouho trvalo, než selhala.
Požadavek klíčové slovo je podobné jako povinné v tom, že kontrola musí projít, ale v případě neúspěchu vrátí zprávu "zemře". Vyžadováno umožňuje libpam
vědět, že následující řádky nebudou kontrolovány, a informovat proces volání o celkových výsledcích – v tomto případě selhání.
dostatečné klíčové slovo je téměř opakem požadavek . Po úspěchu se vrátí zpráva "hotovo" a libpam
pokračuje a odešle své celkové výsledky zpět do volající aplikace. Ostatní výsledky z tohoto modulu jsou ignorovány a kontrola pokračuje.
dostatečné klíčové slovo je běžné, pokud existuje více způsobů ověření kritéria. Například při ověřování hesla může být uživatel definován v místním /etc/passwd
a /etc/shadow
soubory, nebo mohou být definovány pouze v centrálním systému, ke kterému se přistupuje pomocí sssd
. pam_unix
modul kontroluje místní soubory. Pokud dojde k úspěchu, není třeba pokračovat a kontrolovat centralizované služby. Pokud však uživatel není definován lokálně, nechceme zaznamenat selhání, chceme výsledek ignorovat a zkusit pam_sss
modul. Vzhledem k tomu, že dostatečné klíčové slovo nikdy skutečně neselže, je běžné přidat požadovaný pam_deny
řádek po řadě dostatečné linky. pam_deny
modul vždy selže podobně jako /bin/false
spustitelný.
Volitelné klíčové slovo je podobné jako dostatečné tím, že ignoruje všechna selhání. Při úspěchu se však chová spíše jako požadováno klíčové slovo nastavením hodnoty „ok“ a pokračováním v provádění jakýchkoli dalších kontrol.
Protože obě vyžadují a dostatečné mohou být výstupní body ze zásobníku modulů, pořadí v konfiguračním souboru je důležité. Řádky za těmito klíčovými slovy mohou nebo nemusí být provedeny.
Složité návratové kódy
Kromě jednoduché syntaxe klíčového slova jsou komplexní návratové kódy definovány pomocí párů klíč-hodnota v hranatých závorkách. Soubor /etc/pam.d/system-auth
soubor má ukázku v sekci session složitější syntaxe.
$ cat /etc/pam.d/system-auth...vynecháno...session volitelné pam_keyinit.so revokession povinné pam_limits.so-session volitelné pam_systemd.sesession [sucore 1 =default .so služba v crond quiet use_uidsession vyžadována pam_unix.so
Složitou syntaxi odpovídající každému klíčovému slovu naleznete v pam.conf
manuálová stránka. -
uvedený výše je také definován v manuálové stránce. Označuje, že protokolování lze přeskočit, pokud modul není nainstalován v systému.
Co bude dál?
Nyní můžeme projít, kdy dojde k volání a ukončení pomocí libpam
, dalším krokem je lépe pochopit případ použití pro každý modul. Většina modulů má manuálovou stránku, která vysvětluje použití a ukazuje příklady řádků, které by se měly objevit v pam.d
konfigurační soubory. Některé moduly také odkazují na doplňkové soubory v /etc/security
adresář. Tyto soubory jsou dobře komentované a také často mají vlastní manuálovou stránku. pam_pwquality
a pam_limits
dobrými příklady pro začátek jsou moduly.
Sbalit
V příštím článku projdu některými změnami provedenými pomocí authconfig
užitečnost. Pokud se chcete vrhnout na úpravy souborů sami a máte předplatné Red Hat Learning Subscription, podívejte se na kapitolu o PAM v kurzu Red Hat Security:Linux ve fyzickém, virtuálním a cloudovém (RH415).
[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ]