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

Vlastnosti

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