abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 13:22 | Nová verze

Alan Griffiths z Canonicalu oznámil vydání verze 1.0.0 display serveru Mir (GitHub, Wikipedie). Mir byl představen v březnu 2013 jako náhrada X serveru a alternativa k Waylandu. Dnes Mir běží nad Waylandem a cílen je na internet věcí (IoT).

Ladislav Hagara | Komentářů: 0
včera 22:00 | Nasazení Linuxu
Stabilní aktualizace Chrome OS 69 (resp. Chromium OS), konkrétně 69.0.3497.95, přináší mj. podporu linuxových aplikací. Implementována je pomocí virtualizace, a proto je tato funkce také omezena na zařízení s dostatkem paměti a podporou hardwarové akcelerace, tudíž nejsou podporovány chromebooky s 32bitovými architekturami ARM, či Intel Bay Trail (tzn. bez Intel VT-x).
Fluttershy, yay! | Komentářů: 3
včera 21:32 | Zajímavý projekt
Došlo k uvolnění linuxové distribuce CLIP OS, vyvíjené francouzským úřadem pro kybernetickou bezpečnost ANSSI, jako open source. Vznikla za účelem nasazení v úřadech, kde je potřeba omezit přístup k důvěrným datům. Je založená na Gentoo.
Fluttershy, yay! | Komentářů: 0
včera 16:00 | Komerce

Zjistěte více o bezpečné a flexibilní architektuře v cloudu! IBM Cloud poskytuje bezpečné úložiště pro Vaše obchodní data s možností škálovatelnosti a flexibilitou ukládání dat. Zároveň nabízí prostředky pro jejich analýzu, vizualizaci, reporting a podporu rozhodování.

… více »
Fluttershy, yay! | Komentářů: 12
včera 12:22 | Nová verze

V dubnu letošního roku Mozilla představila webový prohlížeč pro rozšířenou a virtuální realitu Firefox Reality (GitHub). V úterý oznámila vydání verze 1.0. Ukázka na YouTube. Firefox Reality je k dispozici pro Viveport, Oculus a Daydream.

Ladislav Hagara | Komentářů: 2
včera 12:00 | Komunita

V srpnu loňského roku společnost Oracle oznámila, že Java EE (Enterprise Edition) bude uvolněna jako open source. O měsíc později bylo rozhodnuto, že tato open source Java EE bude přejmenována a předána Eclipse Foundation. Nové jméno bylo oznámeno v únoru letošního roku. Z Java EE se stala Jakarta EE. Eclipse Foundation včera oznámila dosažení dalšího milníku. Zdrojové kódy aplikačního serveru GlassFish jsou již k dispozici v git repozitářích Eclipse Foundation (GitHub).

Ladislav Hagara | Komentářů: 0
19.9. 23:55 | Komunita

LTS (Long Term Support) podpora Ubuntu 12.04 LTS (Precise Pangolin) skončila po 5 letech od jeho vydání, tj. v dubnu 2017. V březnu 2017 ale Canonical představil placenou ESM (Extended Security Maintenance) podporu, díky které je Ubuntu 12.04 podporováno do dubna 2020. Dnes Canonical potvrdil ESM podporu také pro Ubuntu 14.04 LTS (Trusty Tahr), jehož LTS podpora skončí v dubnu 2019.

Ladislav Hagara | Komentářů: 0
19.9. 15:00 | Nová verze

Byla vydána verze 3.0.0 frameworku pro vývoj multiplatformních desktopových aplikací pomocí HTML, CSS a JavaScriptu Electron (YouTube, GitHub). Electron byl původně vyvíjen pro editor Atom pod názvem Atom Shell. Dnes je na Electronu postavena celá řada dalších aplikací.

Ladislav Hagara | Komentářů: 0
19.9. 14:44 | Nová verze

Po půl roce vývoje od vydání verze 6.0.0 byla vydána verze 7.0.0 překladačové infrastruktury LLVM (Wikipedie). Přehled novinek v poznámkách k vydání: LLVM, Clang, clang-tools-extra a LLD.

Ladislav Hagara | Komentářů: 0
19.9. 13:44 | Nová verze

Byla vydána verze 3.0.0 knihovny pro vykreslování grafů v programovacím jazyce Python Matplotlib (Wikipedie, GitHub). Přehled novinek a galerie grafů na stránkách projektu. Zrušena byla podpora Pythonu 2.

Ladislav Hagara | Komentářů: 0
Na optické médium (CD, DVD, BD aj.) jsem naposledy vypaloval(a) data před méně než
 (13%)
 (14%)
 (20%)
 (23%)
 (25%)
 (4%)
 (1%)
Celkem 381 hlasů
 Komentářů: 33, poslední 16.9. 11:55
Rozcestník

Autentizácia v Linuxe pomocou PAM

30. 4. 2008 | Daniel Keder | Bezpečnost | 6562×

Článek představí koncept PAM (Pluggable Authentication Modules), pomůže s konfigurací systému a na příkladu ukáže, jak PAM využít pro usnadnění přihlašování.

Čo je to PAM

PAM (Pluggable Authentication Modules) je sada knižníc, ktorá integruje viaceré nízko-úrovňové autentizačné mechanizmy do jedného API. Použitie stabilného API pomáha oddeliť detaily a spôsob autentizácie od programu, ktorý potrebuje overovať totožnosť užívateľov.

Pôvodne bol PAM vyvinutý v Sun Microsystems. V súčasnosti je podporovaný vo vačšine UNIXových systémov, napr. AIX, HP-UX, Solaris, Linux, FreeBSD, MacOS X a NetBSD. Pokiaľ viem, tak nie je podporovaný v Slackware a OpenBSD.

Keďže PAM uplatňuje modulárny princíp, je jednoduché napríklad pridať nový spôsob autentizácie (čítačku odtlačkov prstov) či zmeniť spôsob autentizácie v nejakom programe (chcem overovať heslá pomocou Kerbera namiesto /etc/shadow).

Celý systém sa skladá z troch súčastí:

  • Knižnica libpam – oproti nej sú linkované programy, ktoré chcú PAM využívať
  • PAM moduly – poskytujú konkrétne autentizačné mechanizmy. Moduly sa zvyčajne nachádzajú v adresári /lib/security (Solaris a niektoré UNIXy /usr/lib/security) a do pamäte sú zavádzané dynamicky
  • Konfigurácia – definujú, ktoré PAM moduly sa budú používať pri autentizácii a ako.

Konfigurácia

Keďže PAM je vo väčšine linuxových distribúcii už predinštalovaný, nebudem tu popisovať, ako ho do systému nainštalovať, a rovno sa vrhneme na konfiguráciu.

Konfigurácia PAMu je uložená v súbore /etc/pam.conf alebo rozdelená do viacerých súborov v adresári /etc/pam.d. Ak tento adresár existuje, súbor pam.conf sa ignoruje. Dovolím si tvrdiť, že z dôvodu prehľadnosti sa používa väčšinou varianta s /etc/pam.d.

Konfiguračný súbor /etc/pam.conf obsahuje riadky v tvare:

service   type   control   module-path   module-args

Syntax súborov v /etc/pam.d/ je rovnaká, až na pole service. Toto pole sa neuvádza a namiesto neho sa použije názov konfiguračného súboru.

Pole 'service'

Každý riadok predstavuje pravidlo, ktoré sa uplatní pri autentizácii v programe service. Čo konkrétne treba uviesť do tohoto poľa (resp. ako pomenovať konfiguračný súbor) už závisí na onom programe, zväčša to býva práve názov programu. Ak v poli service použijeme kľúčové slovo other, nastavíme implicitné správanie pre ostatné programy. Z bezpečnostných dôvodov sa tu používa len modul pam_deny.so, ktorý užívateľovi prístup zakáže.

Pravidlá sa samozrejme môžu reťaziť, čím dosiahneme kombinácie rôznych autentizačných mechanizmov. K slovu sa dostávajú postupne tak, ako sú za sebou zapísané.

Pole 'type'

Pole type musí obsahovať jedno z kľúčových slov account, auth, password a session. Každé z nich pokrýva jeden z aspektov autentizačného procesu. Ich význam je nasledovný:

  • account – ako overiť existenciu a platnosť užívateľského účtu, práva k danej službe a pod.
  • auth – ako overiť identitu užívateľa
  • password – zmeny hesiel (ako heslo zmeniť, ako overiť, či je dostatočne silné a pod.)
  • session – definuje, čo sa má stať pred udelením oprávnenia a po jeho odobratí. Napr. pripojenie domovského adresára užívateľa, auditing a pod.

Pole 'control'

Pole control určuje, aký vplyv má modul na prebiehajúci autentizačný proces. Môže nadobúdať tieto hodnoty:

  • required – zlyhanie modulu spôsobí zlyhanie autentizácie, ale až po skončení ostatných zreťazených modulov
  • requisite – zlyhanie modulu spôsobí okamžité zlyhanie autentizácie
  • sufficient – úspech tohoto modulu postačuje na úspešnú autentizáciu (pokiaľ predtým nezlyhal modul s "required")
  • optional – úspech alebo zlyhanie tohoto modulu sa berie do úvahy iba vtedy, ak je to jediný modul daného typu asociovaného s touto službou.

Pole control môže obsahovať i relatívne nové kľúčové slovo include, ktoré spôsobí vloženie pravidiel zo súboru špecifikovaného v poli module-path. To nám umožňuje vložiť spoločné nastavenia do jediného súboru, takže pri zmene stačí upraviť len tento súbor.

Pole 'module-path'

Do poľa module-path sa uvádza cesta k modulu. Táto cesta môže byť buď absolútna, alebo relatívna vzhľadom k adresári, v ktorom sú PAM moduly (väčšinou /lib/security).

Pole 'module-args'

V poslednom poli module-args sa nachádzajú parametre modulu. Tie môžu byť pre každý modul iné, zistiť sa dajú v dokumentácii daného modulu. Väčšina modulov podporuje parameter debug, ktorý spôsobí podrobnejší výpis do systémového logu.

Moduly, ktoré vyžadujú po užívateľovi heslo, tiež zvyknú podporovať parametre try_first_pass a use_first_pass. Rozdiel medzi nimi je v tom, že try_first_pass sa snaží použiť heslo od niektorého z predchádzajúcich modulov a v prípade, že žiadne neexistuje, si ho vyžiada od užívateľa. Parameter use_first_pass naopak od užívateľa heslo nežiada a rovno zlyhá.

Užitočné moduly

Väčšina modulov má svoju manuálovú stránku, v ktorej je popísaná činnosť modulu a podporované parametre.

  • pam_cracklib.so – kontrola sily hesla podľa zadaných parametrov. Zabráni nastaveniu príliš slabého hesla.
  • pam_deny.so – autentizácia vždy zlyhá
  • pam_krb5.so – overovanie hesla pomocou Kerbera.
  • pam_limits.so – nastavenie systémových limitov (množstvo obsadenej pamäte, počet procesov a pod.)
  • pam_nologin.so – kontrola existencie /etc/nologin. Ak tento súbor existuje, nikdo okrem roota sa neprihlási
  • pam_time.so – kontrola prístupu podľa času. Umožňuje obmedziť prihlasovanie v určitej dobe
  • pam_unix.so – štandardný unixový autentizačný modul. Kontroluje užívateľov a heslá podľa /etc/passwd a /etc/shadow
  • pam_warn.so – zaznamená do systémového logu pokus o prístup.

Príklad konfigurácie

Na príklade si ukážeme konfiguráciu pre GDM, v ktorej povolíme prístup lokálnym užívateľom v /etc/passwd po overení odtlačku prstu a zadaní hesla. Niektorí užívatelia majú v domovskom adresári šifrované SSH kľúče, ale sú leniví a nechce sa im zadávať pri každom použití ssh heslo. Preto im s pomocou programu ssh-agent sprístupníme SSH kľúč po dobu trvania sedenia.

Konfigurácia je uvedená v súbore /etc/pam.d/gdm, do ktorého sa vkladá spoločný súbor /etc/pam.d/system-auth (je uvedený len pre úplnosť).

Prihlásenie začne odobraním odtlačku prsta. Následne si modul pam_ssh.so vypýta od užívateľa heslo k SSH kľúču a pomocou programu ssh-agent kľúč sprístupní až do konca sedenia. Ak tento modul zlyhá, nič sa nedeje, užívateľ má stále možnosť sa prihlásiť, akurát nebude mať v ssh-agentovi svoj kľúč.

Ďalej sa overí heslo v module pam_unix.so. Parameter try_first_pass hovorí, že sa má najskôr skúsiť heslo z predchádzajúcich modulov. Ak nevyhovie, systém sa na heslo opýta znovu.

Súbor /etc/pam.d/gdm:

auth       optional     pam_env.so
auth       required     pam_thinkfinger.so
auth       required     pam_nologin.so
auth       optional     pam_ssh.so
auth       include      system-auth

account    include      system-auth

password   include      system-auth

session    include      system-auth
session    optional     pam_ssh.so

Súbor /etc/pam.d/system-auth:

auth       required     pam_env.so
auth       sufficient   pam_unix.so try_first_pass likeauth nullok
auth       required     pam_deny.so

account    required     pam_unix.so

password   required     pam_cracklib.so difok=2 minlen=8 \
                        dcredit=2 ocredit=2 try_first_pass retry=3
password   sufficient   pam_unix.so try_first_pass use_authtok \
                        nullok md5 shadow
password   required     pam_deny.so

session    required     pam_limits.so
session    required     pam_unix.so

Na záver ešte uvediem malú poznámku: pri pokusoch s PAMom buďte opatrní. Zmazanie alebo poškodenie konfigurácie PAMu má ten istý účinok, ako keď zamknete svoj byt a kľúče hodíte do kanála – už sa dovnútra viac nedostanete (bežnými metódami, samozrejme).

       

Hodnocení: 91 %

        špatnédobré        

Nástroje: Tisk bez diskuse

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

Komentáře

Vložit další komentář

30.4.2008 07:04 pht
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
v cem je to 'include' lepsi nez dosud pouzivane pam_stack.so ?
30.4.2008 13:28 Dan Keder
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Myslím, že celkom dobre je to popísané tu:

http://www.redhat.com/archives/rhl-devel-list/2005-October/msg00050.html
30.4.2008 07:49 ased
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Ako clovek ktory nikdy s PAM nerobil mam jeden postreh. Pole 'control' by mohlo byt vysvetlene lepsie, pretoze to moj maly mozocek nedokazal pochopit... presnejsie pokial: # required – zlyhanie modulu spôsobí zlyhanie autentizácie, ale až po skončení ostatných zreťazených modulov
# requisite – zlyhanie modulu spôsobí okamžité zlyhanie autentizácie
a ukazka z konfiguracneho syboru:
password   required     pam_cracklib.so difok=2 minlen=8 \
                        dcredit=2 ocredit=2 try_first_pass retry=3
password   sufficient   pam_unix.so try_first_pass use_authtok \
                        nullok md5 shadow
password   required     pam_deny.so
podla vsetkeho co je v clanku uvedene pokial pam_deny skonci s chybou (co skonci vzdy) ani zmena hesla nemoze nikdy prebehnut... Preto by mozno nebolo zle uviest sposob retazenia podrobnejsie, aby clanok ziskal aj vyznam: kazdy kto s PAMom robil uz vie ako funguje, a ten co s nim nerobil to podla clanku nepochopi, takze v sucasnom zneni trochu useless... Pokial sa mylim a ostatni to pochopili, prosim nekamenovat...
30.4.2008 07:59 Honza Jaroš | skóre: 6 | blog: moje_strana_plotu | Bohnice
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
No ale podle článku hodnota sufficient v poli control stačí k ověření, takže na pam_deny.so by v případě, že neselže pam_unix.so, vůbec nemělo dojít, ne?
30.4.2008 11:13 Michal Kubeček | skóre: 71 | Luštěnice
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Změna hesla proběhnout může, protože ještě před pam_deny máte pam_unix se sufficient, takže pokud ten uspěje, výsledkem je úspěch a na pam_deny už nedojde.
kozzi avatar 30.4.2008 16:26 kozzi | skóre: 55 | blog: vse_o_vsem | Pacman (Bratrušov)
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
ja myslim ze to je usefull, mě to teda pomohlo, zrovna jsem rozchazel ldap pro spravu uzivatelskych uctu a potreboval jsem nasatvit apm tak abych pri zadani hesla docilil toho ze se to zepta ldap pokud to prel ldap neprojde(zanmena ze proste uzivatel neni) tak aby to heslo predal dalsimu modulu coz je standartnu unix_pam.so ci jak to je a to jsem pomoci tohoto clanku dokazal a nikdy jsem si s pam nehral(teda pokud nepocitam tupe kopirovani z navodu). Takze ja autorovi musim podekovat ze mi usetril cas, ktery bych musel travit ctenim manualovych stranek
Linux je jako mušketýři "jeden za všechny, všichni za jednoho"
30.4.2008 13:12 honza
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Vadi mi jedna vec, konkretne kombinace ctecka otisku a GDM. Pokud otisk udelam spatne, tak jej nemuzu opakovat a musim zadat heslo. Navic v poli login visi login name. Idelani pripad je ten, ze se na zacatku rozhodnuju jestli napisu heslo nebo budu patlat prstem po ctecce a to treba vicekrat. Nepodarilo se mi toho nijak docilit, vzdy je tam nejake "ale". Ale tohle je veci GDM.. jinak dobry clanek.
stativ avatar 30.4.2008 17:03 stativ | skóre: 54 | blog: SlaNé roury
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Možná by stálo zato zmínit použití pam_unix2.so a Blowfishových klíčů pomocí libxcrypt. Dost dlouho mně trvalo, než jsem přišel jak na to (a na internetu o tom skoro nic není, hlavně o nutnosti libxcrypt).
Ať sežeru elfa i s chlupama!!! ljirkovsky.wordpress.com stativ.tk
30.4.2008 21:51 Jiri Slaby
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Z tech dulezitejsich veci mi v clanku mi schazi zminka o pam_debug, ktery umi jaksi navodit urcite prostredi k otestovani konfigurace. A potom jeste control muze obsahovat magii [ ], kde si nastavim, co chci kdy presne udelat, kdyz se nespokojim jen s temi nekolika vyjmenovanymi.
1.5.2008 08:45 peter
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Dúfam, že bude ešte nejaké pokračovanie s nejakými "chuťovkami". Mňa by celkom zaujímalo, ako nastaviť šifrovaný home adresár pre používateľov, kde budú kľúče k týmto adresárom uložené napr. niekde vo /var a chránené heslom na prihlásenie. Pri zadaní hesla na prihlásenie by sa vytiahol kľúč na odšifrovanie a používateľ by už videl svoj adresár odšifrovaný. Samozrejme, ani root by nevidel adresáre používateľov (pokiaľ by sa nerozhodol odchytávať zadávané heslá). Ideálne by bolo, keby sa kľúč vytváral už pri vytvorení používateľa a používateľ by ani nepostrehol, že má adresár šifrovaný.

Dokáže niečo takéto pam_ssh.so, resp. ssh-agent? Nič také som nenašiel.
1.5.2008 11:45 sNop | skóre: 2
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Pro mne po prvem precteni doost nezrozumitelne, neni tam vubec vysvetlene retezeni, nac sluzi pam_env.so,... Ale to su drobnosti, vse se da pekne dostudovat v manuali, kdyz nekdo potrebuje sprovoznit pam tak jako odrazovi mostik sa to celkom da pouzit. Ale clanek neni uceleny a podla mna nedokonceny. Komentar je mysleny ako nestrana kritika.
1.5.2008 14:19 Pax
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
PAM v Slackwari je, vo v12 urcite
2.5.2008 12:58 rastos | skóre: 61 | blog: rastos
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM
Podľa čoho tak súdiš?
1.12.2008 14:15 lionell
Rozbalit Rozbalit vše Re: Autentizácia v Linuxe pomocou PAM

Já s tímto teprve začínám, takže jsem to taky moc nepochopil. Nevěděl by někdo jak rozchodit přihlašování do systému pomocí IKey3000. Čerpal jsem z http://www.linuxexpres.cz/hardware/sifrovaci-token-ikey-3000, ale když jsem do /etc/pam.d/system-auth napsal přesně to, co v článku, tak to skončilo ne neúspěchem. Za případné rady děkuji.

 

Stále se je co učit

Založit nové vláknoNahoru

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.