Kerberos, PAM

Vladimír Opavský, xopavsk(at)fi.muni.cz

Obsah

Kerberos

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.

História

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.

Proces autentizácie

Nedostatky

Konfigurácia

/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
 }

Nástroje

PAM

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.

Konfigurácia

Konfiguračný súbor je /etc/pam.conf.
Jeho formát je nasledovný:

[service] [type] [control] [module-path] [module-args]

Kde:

Príklad konfiguračného súboru /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

Moduly

/lib/security alebo /usr/lib/security

Literatura