Kerberos je autentizační služba vyvinutá v MIT. Hlavním účelem je umožnit autentizovat uživatele a služby mezi sebou navzájem. To jest prokázat mezi sebou svoji identitu.
Kerberos je navržen tak, aby eliminoval opětovné zadávaní jména a hesla. Jakmile jednou uživatel prokáže svoji identitu vůči Kerberovi, pak programy, které vyžaduji autentizaci a umí spolupracovat s Kerberem, budou považovat uživatele za důvěryhodného.
Kerberos je distribuován ve dvou implementacích:
Popis autentizace:
Zjednodušená verze protokolu:
L - doba platnosti
k - klíč
E - šifrování
T - časové razítko
n - náhodné číslo
Ticket B = EKBT(k, "A", L), Authenticator = Ek("A", TA)
Nainstalovat si Kerbera, zdrojové kódy popř. binárky lze stáhnout z:
MIT Kerberos: http://web.mit.edu/kerberos/www/dist/index.html
Heimdal: ftp://ftp.pdc.kth.se/pub/heimdal/src/
Po instalaci Kerbera editujeme soubor /etc/krb5.conf:
Ukázka souboru krb5.conf:
[libdefaults] default_realm = LAB.FI.MUNI.CZ [realms] LAB.FI.MUNI.CZ = { kdc = kerberos.lab.fi.muni.cz kdc = kerberos-1.lab.fi.muni.cz admin_server = kerberos.lab.fi.muni.cz { [logging] kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmin.log default = FILE:/var/log/krb5lib.log
soubor může ještě obsahovat sekce:
appdefaults - defaultní hodnoty pro Kerberos aplikace
domain_realm - určuje vazby mezi doménami a subdomenami a realmy, dále je tato volba nutná pokud je název implicitní domény ruzný od názvu realmu
Záznamy default_realm
a
kdc
nemusíme nastavovat, pokud nastavíme hodnoty TXT a SRV v DNS záznamech.
Dále editujeme soubor /usr/local/var/krb5kdc/kdc.conf, soubor má stejnou strukturu jako krb5.conf. Může však obsahovat pouze tyto sekce kdcdefaults, realms, logging
Ukázka souboru kdc.conf:
[kdcdefaults] #nastavení kompatibility s Kerberos 4 v4_mode = nopreauth #acl_file - soubor s právy pro uživatele, kteří chtějí přistupovat k Kerberos databázi acl_file = /var/kerberos/krb5kdc/kadm5.acl
dále musíme vytvořit databázi na KDC serveru:
/usr/local/sbin/kdb5_util create -r LAB.FI.MUNI.CZ -s /usr/local/var/krb5kdc/principal - parametr -r určuje REALM a parametrem -s vytvoříme klíč pro server. Pokud neuvedeme cestu k souboru s databází, použije se implicitní adresář /usr/local/var/krb5kdc/).
Vytvoříme ACL (Access Control List) soubor, jméno souboru by mělo souhlasit s parametrem "acl_file" v souboru kdc.conf. Implicitní soubor je /usr/local/var/krb5kdc/kadm5.acl. Tento soubor obsahuje přístupová práva k databázi Kerbera.
Ukázka souboru kadm5.acl:
Kerberos_principal permissions [target_principal] [restrictions] */admin@LAB.FI.MUNI.CZ *
Dalším krokem je přidání uživatelů do databáze. Nejprve musíme přidat admin účet, protože v databázi zatím žádný účet není. Správa Kerbera se provadí pomocí kadmin
nebo kadmin.local
.
Přidání uživatele admin:
/usr/local/sbin/kadmin.local -q "addprinc admin/admin"
Nyní můžeme spustit Kerbera pomocí příkazu:
/usr/local/sbin/krb5kdcPokud chceme spustit i administraci Kerbera zadáme:
/usr/local/sbin/kadmindKontrolu zda vše běží správně můžeme provést například takto:
shell% tail /var/log/krb5kdc.log Dec 02 12:35:47 beeblebrox krb5kdc[3187](info): commencing operation shell% tail /var/log/kadmin.log Dec 02 12:35:52 beeblebrox kadmind[3189](info): starting
Každý z KDC potřebuje účet v Kerberos databázi. Pokud běží kadmin deamon, můžeme tyto účty založit z libovolné stanice, jinak použijeme kadmin.local na KDC serveru.
Ukázka vytvoření účtu pro stroj kerberos.lab.fi.muni.cz
(master KDC) kerberos-1.lab.fi.muni.cz
(slave KDC):
shell% /usr/local/sbin/kadmin kadmin: addprinc -randkey host/kerberos.lab.fi.muni.cz kadmin: addprinc -randkey host/kerberos-1.lab.fi.muni.czMaster KDC nemusí mít účet v Kerberos databázi, ale je to užitečné pro případ, kdybychom chtěli slave a master KDC prohodit.
Dále pro každý s KDC vytvoříme keytab, pro slave KDC vytvoříme soubor /usr/local/var/krb5kdc/kpropd.acl, upravíme /etc/inetd.conf a /etc/services pro každý KDC. Na slave KDC spustíme /usr/local/sbin/kpropd.
Nakonec provedeme replikaci databáze (replikaci databáze je vhodné provádět pravidelně), na master KDC spustíme:
/usr/local/sbin/kdb5_util dump /usr/local/var/krb5kdc/slave_datatransa pro každý slave KDC spustíme:
/usr/local/sbin/kprop -f /usr/local/var/krb5kdc/slave_datatrans kerberos-1.lab.fi.muni.cz
Linux-PAM (Pluggable Authentication Modules for Linux) je sada knihoven, které umožňují jak budou aplikace ověřovat uživatele. Jinak řečeno, pro změnu autentizace uživatelů není potřeba přepisovat/rekompilovat jednotlivé aplikace. Vznik PAMu byl podmíněn rozvojem autentizačních metod. Zvýšila se potřeba rychlé a spolehlivé autentizace, to znamenalo vznik mnoha různých autetizačních metod. Upravovat každý program pro určitou autentizační metodu by bylo velice neefektivní, proto vznikl PAM, tvoří meziúroveň mezi aplikací a autentizačním mechanismem. PAM podporuje různé druhy autentizace jako například: Kerberos, RSA, smart cards, DCE. PAM je součásti vetšiny Linuxových distribucí jako Debian 2.2 a novější, Red Hat 5.0 a novější, dále je podporován FreeBSD od verze 3.1, NetBSD, Solaris, Irix, ...
Konfigurace PAMu je uložena buď v jediném souboru /etc/pam.conf a nebo v adresáři /etc/pam.d jsou uloženy jednotlivé konfigurační soubory vztahující se ke konkrétním službám/aplikacím. V adresáři /lib/security jsou dynamické knihovny, které využívají aplikace k autentizaci.
Ukázka souboru /etc/pam.d/
#module-type control-flag module-path arguments # The PAM configuration file for the cron daemon # account required pam_unix.so auth required pam_unix.so nullok auth required pam_env.so session required pam_unix.so
Stručný popis nejpoužívanějších voleb:
Používáme-li jedinný soubor /etc/pam.conf, pak před module-type
je ješte sloupec service-name
, kde je uvedeno jméno služby/aplikace.
module-type
control-flag
module-path - jak sám název napovídá určuje se cesta k modulu
arguments - seznam argumentů, které jsou předány modulu při spuštění
Stručný popis základních modulů PAM:
pam_nologin.so - standardní Unixová autentizace s využitím nologin
pam_deny.so - blokuje přístup k aplikaci
pam_warn.so - loguje informace o pokusu přihlášení a změnu hesla
pam_unix.so - tento modul poskytuje základní Unixovou autentizaci (/etc/shadow
, /etc/passwd
)
/