Autentizační systémy - Kerberos, PAM
Jiří Koten, xkoten1(at)fi.muni.cz
Obsah
Kerberos
Úvod
Jméno pochází z řecké mytologie, Kerberos pes se třemi hlavami, strážce vchodu do podsvětí.
Jedná se o třístranný autentizační systém původně vyvinutý na MIT v rámci projektu Athena.
První verze je z roku 1987 - Kerberos V4, druhá verze Kerberos V5 (RFC 1510) je z roku 1996.
Poslední úprava specifikace RFC4120 je z roku 2005. Kvúli zákazu vývozu silné kryptografie mimo USA (vztahoval zákon o zbraních) vznikla v roce 1997 ve Švédsku evropská implementace Heimdal.
Princip protokolu a jeho vlastnosti
Jedná se o třístrannou komunikaci - dvě strany, které spolu chtějí komunikovat, plus třetí nezávislá důvěryhodná strana (obsahuje autentizační údaje).
Třetí strana - KDC (Key Distribution Center) obsahuje záznamy (principal) a hesla (secret). Vydává lístky (tickets), zpravuje určitou oblast (realm). Realm obsahuje principle - principal@realm.
Uživatel podá žádost o lístek (jméno uživatele, jméno služby, adresa), který poté pošle službě, ta ověří zda uživatel má právo s lístkem pracovat a autentizuje uživatele. Prokázání uživatelovi totožnosti - odpověď obsahuje lístek a trojici čísel (session key, jméno uživatele, jméno služby) zašifrovanou heslem uživatele. Správný uživatel získá session key, kterým zašifruje autentizátor (jméno a adresa klienta) a spolu s lístkem (session key, jméno a adresa klienta, jméno serveru, čas, doba platnosti) službě. Lístek zašifrovaný heslem služby, služba tak získá session key a ověří údaje z lístku s údaji z autentizátoru.
Problémy
- platnost lístků - potřeba synchronizace času mezi stranami
- odposlechnutí a znovu přehrání dat - potřeba zamezit použití téhož lístku (replay cache)
- nutnost kerberizace aplikací/služeb - /usr/kerberos/bin
Vlastnosti
- TGS - (Ticket Granting Service) není potřeba zadávat heslo pro získání lístku, ale použiji TGT (Ticket Granting Ticket),
kinit, klist, kdestroy
- replikace - záložní KDC
- autentizace služby vůči klientovi
- interakce mezi realmy - cross-realm trust, mapování uživatelů
- Forwardovatelné lístky
- Proxy lístky
Konfigurace
Příklad /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = FI.MUNI.CZ
dns_lookup_realm = false
dns_lookup_kdc = false
forwardable = true
[realms]
FI.MUNI.CZ = {
kdc = krb.fi.muni.cz:88
kdc = krb1.fi.muni.cz:88
admin_server = krb.fi.muni.cz:749
default_domain = fi.muni.cz
}
[domain_realm]
.example.com = FI.MUNI.CZ
example.com = FI.MUNI.CZ
[kdc]
profile = /var/kerberos/krb5kdc/kdc.conf
[appdefaults]
forwardable = true
forward = true
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Odkazy
PAM - Pluggable Authentcation Modules
Úvod
PAM původně od Sun Microsystems, nyní GPL nebo BSD, Hlavní vývoj Red Hat. Přináší modulární přístup k autentizaci, možnost přizpůsobení podle uživatele, konfigurace stroje, ... Různé druhy autentizace - token, čip. karty, otisk prstu,... Hesla mohou být uložena jinde než na lokálním počítači (LDAP, Kerberos). Díky modulům není potřeba překompilovávat programy, které využívají autentizaci. Knihovna libpam se přilinkuje k těmto programům, moduly v /lib/security.
Konfigurace
Konfigurace v /etc/pam.conf nebo pro každý program zvlášť v /etc/pam.d/*.
Příklad /etc/pam.d/login
#%PAM-1.0
auth required pam_securetty.so
auth requisite pam_nologin.so
auth required pam_unix.so nullok
auth required pam_tally.so onerr=succeed file=/var/log/faillog
# use this to lockout accounts for 10 minutes after 3 failed attempts
#auth required pam_tally.so deny=2 unlock_time=600 onerr=succeed file=/var/log/faillog
account required pam_access.so
account required pam_time.so
account required pam_unix.so
#password required pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password required pam_unix.so md5 shadow use_authtok
session required pam_unix.so
session required pam_env.so
session required pam_motd.so
session required pam_limits.so
session optional pam_mail.so dir=/var/spool/mail standard
session optional pam_lastlog.so
Odkazy
Literatura