Kerberos je protokol, ktorý zaisťuje autentizáciu v sieti. Používa model klient-server, to znamená, že server si overí identitu klienta a naopak.
Pre unixové systémy existujú 2 implementácie - referenčná implementácia MIT kerberos a švédska implementácia Heimdal. Kerberos 5 je popísany v RFC 1510 (1993) a RFC 4120 (2005).
Kerberos vznikol na MIT ako súčasť projektu Athena. Do verzie 3 bol dostupný len pre MIT, od verzie 4 je dostupný pod BSD licenciou. Jeho vývoz mimo územie USA bol zakazaný, pretože používal algoritmus DES. Preto vznikla vo Švédsku európska implementácia kerbera - Heimdal.
Kerberos funguje na princípe pridelovania lístkov uživateľom, tí pomocou tohto lístka preukazujú svoju identitu službe. V sieti existuje KDC (key distribution center), ktore sa skladá z
TGT a pridelené lístky expirujú po uplynutí doby platnosti, takže treba požiadať o predĺženie. Klient pomocou TGT získava lístky na ďalšie služby bez zásahu užívateľa.
Ja som sa rozhdol pre Heimdal, zdrojáky su dostupné na domovskej stránke projektu. Okrem zdrojákov sa tu nachádzajú aj binárne distribúcie pre rôzne distribúcie linuxu (Debian, gentoo) a operačné systémy (FreeBSD, OpenBSD, Solaris, Mac OS X).
Inštalácia zo zdrojakov sa spraví pomocou ./configure && make && make install
. Pomocou ./configure --help
si možete pozriet čo všetko sa dá povoliť/zakázať pri inštalácii (IPv6, openssl,...).
/etc/krb5.conf
- Konfigurácia kerbera./var/heimdal/kdc.conf
- Konfigurácia KDC. Má rovnakú syntax ako /etc/krb5.conf
[logging] kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log #logovanie do suboru default = SYSLOG #logovanie do sysolgu [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false #pouzit DNS TXT zaznam na namapovanie domeny na realm dns_lookup_kdc = false #vyhladat KDC pomocou DNS SRV zaznamu ticket_lifetime = 24h #doba platnosti listka clockskew = 60 #posunutie hodin - tolerancia pri porovnavani casov default-etypes = des3-hmac-sha1 des-cbc-crc des-cbc-md5 #defaultne pouzivane sifry forwardable = yes EXAMPLE.COM = { #konfiguracia realmu EXAMPLE.COM kdc = kerberos.example.com:88 #adresa kdc servera admin_server = kerberos.example.com:749 #adresa administracneho servera default_domain = example.com } [domain_realm] #mapovanie domeny na realm .example.com = EXAMPLE.COM #adresa hocico.example.com patri do realmu EXAMPLE.COM example.com = EXAMPLE.COM #adresa example.com patri do realmu EXAMPLE.COM [kdc] profile = /var/kerberos/krb5kdc/kdc.conf [appdefaults] pam = { debug = false ticket_lifetime = 36000 renew_lifetime = 36000 forwardable = true krb4_convert = false }Viac informacií poskytne
man 5 krb5.conf
.
kstash
- vytvorenie databázy užívateľovkadmin
- administratívne rozhraniehelp
add - pridanie záznamu
delete - zmazanie záznamu
modify - úprava záznamu
list - výpis záznamov
ext - export záznamu (keytab)
kdc
- key distibution center démonkadmind
- kerberos admin démonkinit user
- získanie TGTklist
- výpis získaných lístkovhpropr, propd
- nástroje na repliáaciu celej databázeiprop, iprop-master, iprop-slave
- nástroje na propagáciu zmien v databázeNa kerberizáciu klienta stačí skopírovať /etc/krb5.conf
a používať kerberizované programy.
Na kerberizáciu serveru treba na server skopírovať súbor /etc/krb5.conf
a vytvoriť súbor /etc/krb5.keytab
. Súbor /etc/krb5.keytab
obsahuje názov servera (v databáze kerbera) a svoj tajný klúč. Vytvoríme ho pomocou príkazu ext
v kadmin
ovi.
Heimdal a kerberos od MIT su navzájom kompatibilné až na administračné utility. Tento protokol nebol definovaný, preto sú v ňom rozdiely, takže nemožno používať MIT kerberos a kadmin od heimdalu.
PAM je sada knižníc, ktorá integruje viacero autentizačných mechanizmov do jedného API. PAM sa skladá z knižnice libpam (aplikácie musia byt zlinkované s touto knižnicou) a z modulov, ktoré predstavujú jednotlivé autentizačné mechanizmy.Tieto moduly sa nachádzajú v /lib/security
alebo /usr/lib/security
.
Konfiguračný súbor sa nachádza v /etc/pam.conf
, prípadne viacero súborov v adresári /etc/pam.d
.
Konfiguračný súbor ma tvar:
[service] [type] [control] [module-path] [module-args]
V prípade že sa jedná o konfiguračný súbor z /etc/pam.d
, tak sa pole [service]
vypúšťa, miesto neho sa použije názov súboru.
Každý riadok predstavuje jedno autentizačné pravidlo, pričom pravidlá sa môžu reťaziť.
[service]
- meno služby, ktorej sa riadok týka (login, su)[type]
account
- ako overiť platnosť užívateľského účtu (Má užívateľ účet? Má povolené sa prihlásiť?)auth
- ako sa má overiť identita užívateľa (zadanie hesla, priloženie prsta na čítačku)password
- zmena autentizačných mechanizmov (zmena hesla, je dostatočne silné?)session
- čo sa má stať pred sprístupnením a po ukončení služby(pripojenie domovskeho adresara, logovanie)[control]
required
- spôsobí zlyhanie autentizácie ale až po skončení zreťazených modulov requisite
- spôsobí zlyhanie autentizácie ale skončí hneďsufficient
- úspech modulu postačuje na úspešnú autentizáciu (pokiaľ nezlyhal required modul) optional
- výsledok je dôležitý len vtedy, ak je to jediný modul daného typuinclude
- vloží pravidlá zo súboru v [module-path]
[module-path]
- absolútna alebo relatívna (k /lib/security
) cesta k modulu.[module-arguments]
- argumenty modulu oddelené medzerouPríklad konfiguračného súboru /etc/pam.d/system-auth
auth required pam_securetty.so auth required pam_env.so auth required pam_nologin.so auth sufficient pam_unix.so nullok auth required pam_deny.so account required pam_unix.so password required pam_cracklib.so retry=3 password sufficient pam_unix.so nullok md5 shadow password required pam_deny.so session required pam_limits.so session required pam_unix.so session optional pam_console.so
/etc/securetty
/etc/nologin