Kerberos je centralizovaný autentizační systém, má řadu výhod:
primary/instance@REALM
.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.
[sessionkey|ticket]
, která je zašifrovaná heslem uživatele, jež má TGS
v databázi. Lístek má tvar {sessionkey:username:address:servicename:lifespan:timestamp}
a je zašifrován heslem
služby (v tomto případě heslem služby na poskytování dalších lístků), takže jeho obsah není pro klienta čitelný.{username:address}
, a zašifruje ho session klíčem, který mu poslal
Kerberos.Hezký návod na instalaci je zde:
http://www.debian-administration.org/articles/570
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é.
krb5_newrealm
Vytvoří novou databázi, zeptá se na master password.
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
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 *
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.
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.
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 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.
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
account requisite pam_deny.so
account required pam_permit.so
auth [success=1 default=ignore] pam_unix.so nullok_secure
auth requisite pam_deny.so
auth required pam_permit.so
password [success=1 default=ignore] pam_unix.so obscure sha512
password requisite pam_deny.so
password required pam_permit.so
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_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]
.
pam_permit
- vždy uspějepam_deny
- vždy selžepam_unix
- standardní unixová autentizacepam_rootok
- uspěje pokud je ID uživatele = 0pam_krb5
- umožňuje provést autentizaci pomocí služby Kerberos