GNU/Linux >> Znalost Linux >  >> Linux

Anatomie konfiguračního souboru Linux Pluggable Authentication Modules (PAM).

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. ]


Linux
  1. Linux – všechno je soubor?

  2. Průvodce pro začátečníky ke konfiguraci modulu jádra v Linuxu

  3. Pochopení konfiguračního souboru /etc/profile v Linuxu

  1. Jak uložit nebo exportovat vlastní konfiguraci jádra Linuxu?

  2. Jiné než výchozí umístění pro konfigurační soubor ssh v Linuxu

  3. chsh:Ověření PAM se nezdařilo

  1. Jak přesunout soubor v Linuxu

  2. Vysvětlení oprávnění souborů v systému Linux

  3. Linux Tail Command