Kerberos je sieťový autentifikačný systém založený na princípe dôveryhodnej tretej strany. Na zvyšných dvoch stranách sa nachádza používateľ a služba, kvôli ktorej sa chce používateľ autentifikovať. Nie všetky služby a aplikácie môžu použiť Kerberos, ale pre tie, ktoré môžu, Kerberos ponúkne sieťové rozhranie, ktoré je o jeden krok bližšie k tzv. Single Sign On (SSO) - jeden podpis na všetko.
Táto časť hovorí o inštalácii a konfigurácii Kerberos servera a uvádza i niekoľko príkladov konfigurácie klienta.
Ak ešte Kerberos nepoznáme, bude dobré sa najskôr oboznámiť s niektorými dôležitými pojmami skôr, ako začneme nastavovať server Kerberos. Väčšina pojmov je odvodená od vecí, ktoré sú podobné v iných rozhraniach:
Aby sme jednotlivé pojmy dali do súvisu, vedzme, že pôsobisko - Realm má najmenej jedno distribučné centrum kľúčov KDC (odporúčajú sa však dve kvôli redundacii), ktoré obsahuje a databázu splnomocniteľov - Principal. Keď sa používateľ - splnomocniteľ prihlasuje k pracovnej stanici, ktorá je nakonfigurovaná na autentifikáciu pomocou systému Kerberos, KDC vydá vstupenku poskytujúcu vstupenku (TGT), ktorá obsahuje zašifrované heslo. Ak sa heslo zhoduje s tým, ktoré zadal používateľ, používateľ je autentifikovaný a môže dostať vstupenky od servera poskytujúceho vstupenky (TGS). Vstupenky tejto služby umožnia používateľovi autentifikovať sa do ostatných služieb bez ďalšieho zadávania používateľského mena a hesla.
Pred tým, ako sa pustíme do inštalácie servera Kerberos, je potrebné mať pre našu doménu správne nakonfigurovaný DNS server. Pretože pôsobisko systému Kerberos by sa podľa zvyklostí malo zhodovať s menom domény, budeme používať doménu nieco.sk, ktorej konfigurácia je popísaná v časti “Primárny hlavný menný server”.
Kerberos je protokol citlivý na čas. Preto, ak je časový rozdiel medzi lokálnym systémom a počítačom klienta väčší ako päť minút (predvolená hodnota), pracovná stanica sa nebude môcť autentifikovať. Aby sme tomuto problému zabránili, je potrebné zosynchronizovať čas použitím protokolu Network Time Protocol (NTP). Viac informácii o NTP sa nachádza v časti “Synchronizácia času pomocou NTP”.
Prvým krokom pri inštalácii Pôsobiska systému Kerberos je nainštalovanie balíkov krb5-kdc a krb5-admin-server. V príkazovom riadku zadáme:
sudo apt-get install krb5-kdc krb5-admin-server
Na konci inštalácie bude potrebné zadať názov servera Kerberos a názov Admin servera, ktoré môžu, ale nemusia byť pre pôsobisko zhodné.
Ako ďalšie vytvoríme nové pôsobisko pomocou nástroja kdb5_newrealm:
sudo krb5_newrealm
Parametre, ktoré sme zadali pri inštalácii, sa uložili do konfiguračného súboru /etc/krb5.conf
. Ak budeme chcieť zmeniť nastavenia Distribučného centra kľúčov (KDC), jednoducho zmeníme nastavenia v súbore a reštartujeme démon krb5-kdc.
V predchádzajúcom príklade je ako Splnomocniteľ - Principal nastavený stefan, /admin je Rozhranie - Instance a @NIECO.SK predstavuje pôsobisko. "Každodenný" splnomocniteľ bude stefan@NIECO.SK a mal by mať iba normálne používateľské práva.sudo kadmin.local
Authenticating as principal root/admin@NIECO.SK with password.
kadmin.local:
addprinc stefan/admin
WARNING: no policy specified for stefan/admin@NIECO.SK; defaulting to no policy
Enter password for principal "stefan/admin@NIECO.SK":
Re-enter password for principal "stefan/admin@NIECO.SK":
Principal "stefan/admin@NIECO.SK" created.
kadmin.local:
quit
![]() |
Nahraďte NIECO.SK a stefan, pôsobiskom a menom používateľa, ktoré chcete použiť. |
---|---|
/etc/krb5kdc/kadm5.acl
:
stefan/admin@NIECO.SK *
Tento záznam poskytne používateľovi stefan/admin schopnosť vykonávať ľubovoľnú operácie so všetkými splnomocniteľmi v pôsobisku.
sudo /etc/init.d/krb5-admin-server restart
Po zadaní hesla, použijeme nástroj klist, ktorý zobrazí informácie o TGT:kinit stefan/admin
stefan/admin@NIECO.SK's Password:
Pre KDC je potrebné pridať záznam aj do súboruklist
Credentials cache: FILE:/tmp/krb5cc_1000
Principal: stefan/admin@NIECO.SK
Issued Expires Principal
Jul 13 17:53:34 Jul 14 03:53:34 krbtgt/NIECO.SK@NIECO.SK
/etc/hosts
. Napríklad:
192.168.0.1 kdc01.nieco.sk kdc01
Adresu 192.168.0.1 nahradíme IP adresou nášho KDC.
/etc/named/db.nieco.sk
:
_kerberos._udp.NIECO.SK. IN SRV 1 0 88 kdc01.nieco.sk.
_kerberos._tcp.NIECO.SK. IN SRV 1 0 88 kdc01.nieco.sk.
_kerberos._udp.NIECO.SK. IN SRV 10 0 88 kdc02.nieco.sk.
_kerberos._tcp.NIECO.SK. IN SRV 10 0 88 kdc02.nieco.sk.
_kerberos-adm._tcp.NIECO.SK. IN SRV 1 0 749 kdc01.nieco.sk.
_kpasswd._udp.NIECO.SK. IN SRV 1 0 464 kdc01.nieco.sk.
![]() |
Nahraďte NIECO.SK, kdc01 a kdc02 názvom domény a názvami primárneho a sekundárneho KDC. |
---|---|
Nové pôsobisko systému Kerberos je teraz pripravené na autetifikovanie klientov.
Ak už máme funkčné jedno Distribučné centrum kľúčov (KDC), je dobrým zvykom vytvoriť aj sekundárne KDC pre prípad, že primárne sa stane nedostupným.
sudo apt-get install krb5-kdc krb5-admin-server
kadmin -q "addprinc -randkey host/kdc02.nieco.sk"
![]() |
Vždy po zadaní príkazu kadmin bude potrebné zadať heslo pre pouzivatel/admin@NIECO.SK. |
---|---|
kadmin -q "ktadd -k keytab.kdc02 host/kdc02.nieco.sk"
keytab.kdc02
. Presunieme ho do priečinka /etc/krb5.keytab
:
sudo mv keytab.kdc02 /etc/krb5.keytab
![]() |
Ak ste použili inú cestu k súboru |
---|---|
sudo klist -k /etc/krb5.keytab
kpropd.acl
, ktorý bude obsahovať zoznam všetkých KDC v pôsobisku. Na oboch serveroch - primárnom aj sekundárnom, vytvoríme súbor /etc/krb5kdc/kpropd.acl
s takýmto obsahom:
host/kdc01.nieco.sk@NIECO.SK
host/kdc02.nieco.sk@NIECO.SK
sudo kdb5_util -s create
sudo kpropd -S
sudo kdb5_util dump /var/lib/krb5kdc/dump
/etc/krb5.keytab
:
kadmin -q "ktadd -k keytab.kdc01 host/kdc01.nieco.sk"
sudo mv keytab.kdc01 /etc/kr5b.keytab
![]() |
Pred extrahovaním tabuľky kľúčov sa uistite, či existuje host pre kdc01.nieco.sk. |
---|---|
sudo kprop -r NIECO.SK -f /var/lib/krb5kdc/dump kdc02.nieco.sk
![]() |
Ak operácia prebehne správne, program vypíše SUCCEEDED. Ak nastane chyba, viac informácii sa dozviete v súbore |
---|---|
# m h dom mon dow command
0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump && /usr/sbin/kprop -r NIECO.SK -f /var/lib/krb5kdc/dump kdc02.nieco.sk
sudo kdb5_util stash
sudo /etc/init.d/krb5-kdc start
Sekundárne KDC by teraz malo byť schopné vydávať vstupenky pre pôsobisko. Môžeme to otestovať stopnutím démona krb5-kdc na primárnom KDC a následným požiadaním o vstupenku pomocou nástroja kinit. Ak sme všetko urobili správne, mala by nám byť vstupenka poskytnutá zo sekundárneho KDC.
V tejto časti si povieme, ako nastaviť operačný systém Linux tak, aby bol klientom systému Kerberos. To umožní používateľovi, ktorý sa úspešne do systému prihlási, prístup ku všetkým kerberizovaným službám bez toho, aby musel zakaždým zadať heslo.
Aby bolo možné prihlásiť sa do pôsobiska systému Kerberos, sú potrebné balíky krb5-user a libpam-krb5 spolu s ďalšími, ktoré síce nie sú nutné, ale uľahčia nám prácu. Ak chceme tieto balíky nainštalovať, do príkazového riadka zadáme:
sudo apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config
Balík auth-client-config umožňuje jednoduchú konfiguráciu PAM pre autentifikáciu z viacerých zdrojov a libpam-ccreds dočasne uchováva údaje o prihlásení, ktoré nám umožnia prihlásiť sa, aj keď je distribučné centrum kľúčov (KDC) nedostupné. Tento balík je tiež užitočný pre notebooky, ktoré sa musia vedieť prihlásiť do firemnej siete pomocou systému Kerberos, ale musia používateľovi umožniť prístup aj vtedy, ak nie sú pripojené do siete.
Ak chceme nastaviť klienta, zadáme:
sudo dpkg-reconfigure krb5-config
Pri konfigurácii bude potrebné zadať meno pôsobiska systému Kerberos a ak nemáte nastavené v DNS Kerberos SRV záznamy, bude potrebné zadať i adresu distribučného centra kľúčov (KDC) a adresu Admin servera pôsobiska.
Nástroj dpkg-reconfigure tieto zadané údaje o pôsobisku uloží do súboru /etc/krb5.conf
.
Záznamy v súbore budú vyzerať asi takto:
[libdefaults]
default_realm = NIECO.SK
...
[realms]
NIECO.SK = }
kdc = 192.168.0.1
admin_server = 192.168.0.1
}
Nastavenie môžeme otestovať požiadaním o vstupenku pomocou nástroja kinit. Napríklad takto:
kinit stefan@NIECO.SK
Password for stefan@NIECO.SK:
Ak nám bude vstupenka poskytnutá, detail môžeme zobraziť pomocou klist:
klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: stefan@NIECO.SK
Valid starting Expires Service principal
07/24/08 05:18:56 07/24/08 15:18:56 krbtgt/NIECO.SK@NIECO.SK
renew until 07/25/08 05:18:57
Kerberos 4 ticket cache: /tmp/tkt1000
klist: You have no tickets cached
Potom použijeme nástroj auth-client-config, ktorým nastavíme modul libpam-krb5, aby žiadal o vstupenku pri prihlasovaní:
sudo auth-client-config -a -p kerberos_example
Teraz by sme po úspešnom prihlásení mali obdržať vstupenku.