Kerberos je sieťový protokol umožňujúci vzájomnú autentifikáciu klienta a serveru. Vyžaduje tretiu, dôveryhodnú, stranu. Protokol je vhodný na nasadenie na nezabezpečených sietiach, nakoľko zaručuje integritu posielaných dát a bráni sa útokom typu replay. Bol vyvinutý na MIT v druhej polovici osemdesiatych rokov ako vedľajší produkt projektu Athena. Jeho meno pochádza z gréckej mytológie, kde označuje trojhlavého psa strážiaceho východ z podsvetia. Spolu s protokolom bola na MIT vytvorená (takmer) rovnomenná aplikácia využívajúca tento protokol. Vzhľadom na to, že zákony Spojených Štátov neumožňovali "vývvoz" kryptografie(a Kerberos obsahoval DES) vznikla vo Švédsku(KTH) jeho non-US alternatíva nazývaná KTH-KRB. Posledná "Európska" implementácia tohto protokolu(vo verzii 5) sa nazýva Heimdal.
Kerberos je trojstranný protokol, kde vystupuje klient, server a ďalší, dôveryhodný, server. Tento sa nazýva Key Distribution Center(KDC) a logicky sa delí na dve hlavné časti: Authentication Server (AS) a Ticket Granting Server (TGS). KDC pozná heslá všetkých užívateľov a služieb na spravovanej sieti.
Klient sa autentifikuje voči KDC tak, že kontaktuje AC a vyžiada si nový ticket, ktorý ho v budúcnosti bude oprávňovať k získaniu ticketov pre jednotlive služby.
AC si pošle klientovi správy, ktore obsahujú Session Key, ktorý je zašifrovaný hashovaným heslom z databázy KDC a spomínaný Ticket Granting Ticket, ktorý
je zašifrovaný privátym kľúčom TGS. Ticket Granting Ticket sa skladá z id klienta, jeho sieťovej adresy, session key a časovej platnosti tiketu.
Klient si pomocou svojho zahashovaného hesla(zadaného užívateľom) rozšifruje správu obsahujúcu session key.
V prípade, že chce klient pristúpiť k nejakej službe, tak kontaktuje TGS poslaním (stále) zašifrovaného TGT, id služby, ktorej sa dožaduje a svoje id spolu s timestampom zašifrované pomocou Session Key.
TGS si teraz môže prečítať obsah TGT. Pomocou Session Key(ktorý bol obsiahnutý v TGT) si odšifruje druhú správu. Následne odošle klientovi Client-Service Ticket, ktorý obsahuje id klienta,
jeho adresu, dobu platnosti a client-server session key zakryptovanú pomocou tajného kľúča služby. Ďalej mu pošle client-server session key zašifrovaný pomocou pôvodného Session Key.
Teraz sa klient potrebuje autentifikovať voči samotnej službe - Pošle jej tiket, ktorý na autentifikáciu k tejto službe dostal a svoje id spolu s timestampom zašifrované pomocou client-server session key,
ktorý si dokázal prečítať pomocou Session Key.
Služba si pomocou svojho privátneho kľúča prečíta tiket a pomocou informácií v ňom si pozre aj druhú časť správy. Na záver pošle správu obsahujúcu timestamp+1 zašifrovanú pomocou
client-server key. Klient si skontroluje, či je timestamp správne zvýšený a následne zaháji využívanie samotnej služby.
-- celý tento postup sa da v zrozumiteľnejšej forme nájsť na wikipedia.org
[libdefaults]
 default_realm = FI.MUNI.CZ
 dns_lookup_realm = false
 dns_lookup_kdc = false
 forwardable = true
[appdefaults]
   forwardable = true
   forward = true
 pam = {
   debug = false
   ticket_lifetime = 36000
   renew_lifetime = 36000
   forwardable = true
   krb4_convert = false
 }
 
[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
 
 [logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 
zdroj: archiv referatov
 
[kdcdefaults]
    kdc_ports = 88
[realms]
    dsdoe.ornl.gov = {
        profile = /etc/krb5.conf
        database_name = /krb5/var/krb5kdc/principal
        admin_database_name = /krb5/var/krb5kdc/kadm5_adb
        admin_database_lockfile = /krb5/var/krb5kdc/kadm5_adb.lock
        admin_keytab = FILE:/krb5/var/krb5kdc/kadm5.keytab
        acl_file = /krb5/var/krb5kdc/kadm5.acl
        key_stash_file = /krb5/var/krb5kdc/.k5stash
        kdc_ports = 88
        kadmind_port = 749
        max_life = 10h 0m 0s
        max_renewable_life = 7d 0h 0m 0s
        master_key_type = des-cbc-crc
        supported_enctypes = des-cbc-crc:normal des:v4 
    }
zdroj: archiv referatov
V databáze sa nachádzajú informácie o jednotlivých nodách v spravovanej sieti. Pre databázu si vytvoríme adresár
#mkdir /var/heimdalĎalej si pomocou programu kstash nastavíme master key, ktorým bude databáza šifrovaná.
     # kstash
     Master key:
     Verifying password - Master key:
Vytvorenú databázu zinicializujeme programom kadmin. Parametrom -l ho spustime na lokálny realm. Novú nodu(principal) pridáme príkazom add.
Pomocou delete môžme principal zmazať.
     # kadmin -l
     kadmin> init MY.REALM
     Realm max ticket life [unlimited]:
     Realm max renewable ticket life [unlimited]:
     kadmin> add me
     Max ticket life [unlimited]:
     Max renewable life [unlimited]:
     Attributes []:
     Password:
     Verifying password - Password:
 
Následne môžme spustiť oboch daemonov a vyskúšať si vyžiadanie tiketu pomocou príkazu kinit.
V programe kadmin si príkazom ext vytvoríme tab súbor pre zvolený principal. Ten spolu s konfiguráciu krb5.conf nahráme na požadovaný server, kde majú bežat kerberizované služby.
Klient, ktorý chce tieto služby využívať musí taktiež disponovať konfiguračným súborom.
-Keďže jednou z najväčších slabín kerberosu je jeho single-point-of-failure, tak umožňuje fungovanie na viacerých strojoch súčastne pričom databáza je replikovaná.
PAM (Pluggable Authentication Modules) je sada knižníc, ktorá integruje viaceré nízko-úrovňové autentizačné mechanizmy do jedného API.
Pôvodne bol PAM vyvinutý v Sun Microsystems. V súčasnosti je podporovaný vo vačšine UNIXových systémov, napr. AIX, HP-UX, Solaris, Linux, FreeBSD, MacOS X a NetBSD. Pokiaľ viem, tak nie je podporovaný v Slackware a OpenBSD.
Keďže PAM uplatňuje modulárny princíp, je jednoduché napríklad pridať nový spôsob autentizácie (čítačku odtlačkov prstov) či zmeniť spôsob autentizácie v nejakom programe (chcem overovať heslá pomocou Kerbera namiesto /etc/shadow).
Celý systém sa skladá z troch súčastí:
Knižnica libpam - oproti nej sú linkované programy, ktoré chcú PAM využívať
PAM moduly - poskytujú konkrétne autentizačné mechanizmy. Moduly sa zvyčajne nachádzajú v adresári /lib/security (Solaris a niektoré UNIXy /usr/lib/security) a do pamäte sú zavádzané dynamicky
Stará sa o:
auth -- autentizace
account -- accounting
session -- ...
password -- zmena hesla
Nachádza sa v súbore /etc/pam.conf (prípadne /etc/pam.d/*) format:
service type control module-path module-args