Autentizační systémy

Jan Vojtěch, klasyc@mail.muni.cz

Obsah

Co je Kerberos

Kerberos je centralizovaný autentizační systém, má řadu výhod:

Kerberos se vyplatí použít všude tam, kde je třeba autentizovat větší množství uživatelů proti více než jedné službě. Existují dvě nejvýznamnější implementace: MIT kerberos a Heimdal. První verze je starší a vznikla v Americe, kde platil zákaz vývozu kryptografického software. Proto byl mimo území Spojených států vyvinut Heimdal, který je však s MIT kerberem kompatibilní.

Základní pojmy

Princip činnosti Kerbera

Kerberos se skládá ze dvou oddělených částí, obě se však zpravidla provozují na jednom stroji. První část je KAS (autentizační služba), která se stará o počáteční autentizaci uživatele a vydává mu ticket-granting ticket. Druhá služba je TGS (služba na vydávání lístků), která vydává lístky pro konkrétní služby.

  1. Získání ticket-granting ticketu - umožní získávat lístky pro konkrétní služby bez zadávání hesla
  2. Autentizace pomocí lístku - platí samozřejmě i pro autentizaci vůči službě na vydávání dalších lístků (ticket-granting service)


Instalace Kerbera na Debianu

Hezký návod na instalaci je zde:

http://www.debian-administration.org/articles/570


Instalace služeb

sudo apt-get install krb5-admin-server krb5-kdc

Během instalace se interaktivně zadává realm (česky říše :), do které bude server patřit - většinou název domény velkými písmeny. V případě instalace sekundárního serveru je možné zadat adresu toho primárního. Pokud instalujeme primární, necháme pole prázdné.


Vytvoření nové databáze - realmu

krb5_newrealm

Vytvoří novou databázi, zeptá se na master password.


/etc/krb.conf

Nastavuje základní parametry Kerbera.

[libdefaults]
default_realm = PROTO08.LAB.FI.MUNI.CZ # Výchozí jméno realmu
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true # Povoluje přeposílání lístků na vzdálený server
proxiable = true

[realms] # Konfigurace jednotlivých realmů
PROTO08.LAB.FI.MUNI.CZ = {
kdc = proto08.lab.fi.muni.cz # Adresa kerberos serveru
admin_server = proto08.lab.fi.muni.cz # Server, kde se ukládají změny do databáze
default_domain = lab.fi.muni.cz
}

[domain_realm] # Mapování domén na realmy
.lab.fi.muni.cz = PROTO08.LAB.FI.MUNI.CZ

[logging] # Nastavení souborů pro logování
kdc = FILE:/var/log/kerberos/krb5kdc.log
admin_server = FILE:/var/log/kerberos/kadmin.log
default = FILE:/var/log/kerberos/krb5lib.log

/etc/krb5kdc/kadm5.acl

Nastavení oprávnění uživatelů v Kerberu. Nejčastějším nastavením je přidělit administrátorům neomezená práva. K tomuto účelu poslouží následující řádek:

*/admin *


Vytvoření uživatelů

sudo kadmin.local

Otevře administrátor Kerberovy databáze. K datům přistupuje přímo (vhodné pokud nefunguje server), a proto je třeba mít patřičná oprávnění na soubory s databází. Nového uživatele lze přidat příkazem addprinc jméno. Za lomítko je možné uvést uživatelskou roli. Níže uvedený příkaz vytvoří administrátora se jménem root:

addprinc root/admin

Dále vytvoříme běžný uživatelský účet se jménem, které odpovídá našemu unixovném loginu.


Test služby

Po dokončení konfigurace je třeba restartovat služby krb5-admin-server a krb5-kdc. O ticket-granting ticket požádáme příkazem kinit. Pokud není nahálšena chyba, necháme vypsat seznam dostupných lístků pomocí klist. Pokud dostaneme výpis s alespoň jedním lískem, můžeme začít s konfigurací služeb tak, aby využívaly Kerberos.


Replikace

Nevýhodou využití Kerberos serveru je fakt, že za autentizaci všech uživatelů a skupin nese zodpovědnost jediný stroj, který může selhat. Proto je vhodné nainstalovat více KDC a provádět mezi nimi replikaci. Lze postupovat podle tohoto článku:

http://tldp.org/HOWTO/Kerberos-Infrastructure-HOWTO/server-replication.html



PAM - Pluggabe Authentication Modules

PAM je sada knihoven, která se snaží oddělit autentizaci od zbytku aplikace. K ověřování uživatelů přistupuje modulárně, je možné nastavit priority jednotlivých způsobů autentizace (heslo, čipová karta, síťová databáze hesel, otisk prstu...). Konfigurace se provádí odděleně od aplikace. Výhodou je také fakt, že se do aplikace snadno začlení nová autentizační metoda, která vznikla třeba i později než samotný program.

Při konfiguraci služeb tak, aby používaly kerberos máme dvě možnosti: buď použít upravené verze systémových služeb, které jsou zkompilované s podporou Kerbera, nebo použít aplikace, které mají vestavěnou podporu PAM. Ve druhém případě stačí jen příslušným způsobem upravit konfigurační soubor PAM knihoven.

V současné době používá PAM většina linuxových služeb, které vyžadují autentizaci. Podpora je i na ostatních unixových systémech, byť v různých stádiích vývoje. PAM nalezneme na Solaris, HP-UX, AIX, FreeBSD, MacOS X, NetBSD a mnoha dalších.

Fáze autentizace pomocí PAM

  1. account - Kontrola, jestli existuje uživatelský účet, nevypršela platnost hesla, má právo přístupu ke službě
  2. auth - samotné ověření identity (kontrola hesla, biometrik, karty apod.)
  3. password - změny autentizačních mechanismů (např. kontrola síly hesla apod.)
  4. session - akce, které se provedou před použitím a po skončení použití dané služby (různé logování, nastavení...)

Konfigurace PAM

Většinu nastavení lze najít v souboru /etc/pam.conf a hlavně v adresáři /etc/pam.d/*. Příklad konfiguračního souboru PAM:

account[success=1 new_authtok_reqd=done default=ignore]pam_unix.so
accountrequisitepam_deny.so
accountrequiredpam_permit.so
auth[success=1 default=ignore]pam_unix.so nullok_secure
authrequisitepam_deny.so
authrequiredpam_permit.so
password[success=1 default=ignore]pam_unix.so obscure sha512
passwordrequisitepam_deny.so
passwordrequiredpam_permit.so
session[default=1]pam_permit.so
sessionrequisitepam_deny.so
sessionrequiredpam_permit.so
sessionrequiredpam_unix.so
sessionoptionalpam_ck_connector.so nox11

Konfigurace se provádí formou tabulky (sloupce se oddělují bílými znaky), která je zobrazena výše. Pro přehlednost se často dělí každá fáze autentizace do zválštního souboru. První sloupeček označuje fázi autentizace, druhý pak "způsob uplatnění" modulu a třetí samotný název knihovny s příslušným modulem. Ka konci každé fáze se obvykle volá modul pam_deny.so, který způsobí selhání autentizace v případě, že neuspěl žádný předešlý. Konfigurace se pro každou fázi vyhodnocuje sekvenčně. Nejčastějšími hodnotami druhého sloupce jsou:

V některých situacích se místo výše uvedených voleb používá složitější, ale přesnější zápis ve tvatru [klíč1=hodnota1 klíč2=hodnota2...]. Například klíčové slovo sufficient by mělo ve složitější syntaxi následující tvar: [success=done new_authtok_reqd=done default=ignore].


Významné PAM moduly

Literatura