Kerberos je sieťový protokol, ktorý umožňuje stranám (vačšinou klient-server) bezpečne komunikovať v nezabezpečenej sieti. Jeho hlavnou úlohou je autentizácia jednotlivých strán. Toto sa dosahuje vďaka dôveryhodnej tretej strane (odtiaľ to pomenovanie po mýtickom trojhlavom psovi Kerberovi, strážcovi vchodu do podsvetia). Kerberos je založený hlavne na princípoch symetrickej kryptografie. Používa sa hlavne v UNIXlike systémoch.
Protokol bol vyvinutý v 80tych rokoch na MIT za účelom ochrany sieťových služieb projektu Athena (vytvorenie distrubuovaného výpočtového prostredia pre vzdelávacie účely). Prvé tri verzie boli dostupné len v rámci MIT. Až štvrtá verzia bola verejne prístupná, aj keď stále bola určená primárne pre projekt Athena. Piata verzia bola popísaná už aj ako RFC 1510 v roku 1993, následne RFC 4120 v 2005.
Potom, ako vláda USA zakázala zahraničnú distribúciu Kerbera, pretože obsahoval implementáciu algoritmu DES, vznikla na KTH vo Švédsku nezávislá implementácia KTH-KRB. Posledná "neamerická" implementácia sa nazýva Heimdal, implementujúca protokoly verzie 4 a 5, ktorá bola kompatibilná s Kerberom z MIT. Heimdal vydal ten istý tým, ako KTH-KRB.
(tretia strana) - spravuje databázu hesiel služieb aj užívateľov. Ďalej sa delí na:
name/instance@realm
, kde name je meno služby/užívateľa a instance je voliteľná doplnková informácia (napr. adresa stroja).
/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 = psisko.fi.muni.cz:88
admin_server = psisko.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
}
kinit(1)
- získanie TGT pre daný principalkstash(8)
kadmin(1)
- správa databázy Kerberakdc(8)
- key distibution center démonkadmind(1)
- kerberos admin démonklist(1)
- zoznam pricipalov a lístkov Pluggable Authentication Modules - viac nízkoúrovňových autentizačných protokolov zhrnutých do API. Programy su nezavisle na konkrétnych autentizačných prístupoch. Pri potrebe autentizácie sa použije funkcia z PAM.
Programy, v ktorých je nutná autentizácia musia mať prilinkovanú knižnicu libpam
, ktorá zahrňuje jednotlivé pluginy (autentizačné mechanizmy) umiestnené v /lib/security
alebo /usr/lib/security
.
Konfiguračný súbor je /etc/pam.conf
.
Jeho formát je nasledovný:
[service] [type] [control] [module-path] [module-args]
Kde:
[service]
- názov služby[type]
account
- kontrola existencie účtu, autorizáciaauth
- overenie identity užívateľapassword
- zmena autentizačných mechanizmovsession
- definuje, čo treba vykonať pred a po udelení oprávnenia[control]
required
- spôsobí zlyhanie autentizácie po skončení zreťazených modulov requisite
- spôsobí okamžité zlyhanie autentizácie sufficient
- úspech modulu postačuje na úspešnú autentizáciu ak 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/relatívna cesta k modulu (k /lib/security
).[module-arguments]
- parametre modulu oddelené medzerou/etc/pam.d/gdm
#%PAM-1.0
auth requisite pam_nologin.so
auth required pam_env.so readenv=1
auth required pam_env.so readenv=1 envfile=/etc/default/locale
@include common-auth
auth optional pam_gnome_keyring.so
@include common-account
session required pam_limits.so
@include common-session
session optional pam_gnome_keyring.so auto_start
@include common-password
/lib/security
alebo /usr/lib/security
/etc/securetty