Kerberos, synchronizace času po síti

Vladimír Štill, xstill@fi.muni.cz

Obsah

Kerberos

Kerberos je protokol pro autentizaci po síti. Umožňuje aby komunikující strany ověřili vzájemně svou identitu za pomoci důvěryhodné třetí strany – Kerberos serveru. Toto ověření probíhá po síti, která sama není nijak zabezpečená – protokol zajišťuje odolnost proti odposlechům a útokům přehráváním paketů. Aktuální verze Kerberos 5 je popsána v RFC 4120. Kerberos běží na UDP portu 88.

Pojmy

realm
jméno oblasti zpravované daným serverem, typicky doménové jméno psané velkými písmeny (např. FI.MUNI.CZ, PROTO11.PV090.FI.MUNI.CZ). Obecně ASCII řetězec. Jednotlivé stroje náleží do určité oblasti podle mapování v konfiguraci serveru, lze ovlivnit i DNS záznamy.
KDC
(= Key Distribution Center), Kerberos server, zajišťuje autentizaci a vydávání lístů, rozděleno na AS (Authentication Server) a TGS (Ticket Granting Service).
principal
unikátní identifikace entity která vstupuje do protokolu, typicky uživatele, služby nebo stroje. Typicky ve formátu primary/instance@REALM, kde primary je typicky uživatelské jméno, nebo hodnota host pro principal stroje (pro který je pak secondary jeho hostname). Např. xstill@FI.MUNI.CZ, host/proto11-alpha.ip4.pv090.fi.muni.cz@PROTO11.PV090.FI.MUNI.CZ.
lístek
je informace umožňující ověření identity dané entity. Obsahuje v sobě symetrický klíč, který sdílí uživatel s příslušnou službou (buď TGS, nebo služba vůči které se uživatel autentizuje). Lístek je zašifrovaný buď klíčem TGS (v případě TGT), nebo klíčem dané služby.
TGT
(= Ticket-Granting Ticket) iniciální lístek, který umožňuje dané entitě získávat další lístky od KDC/TGS.
stash soubor
slouží k autentizaci KDC k sobě samému při jeho spuštění. Soubor obsahuje hlavní klíč daného KDC.
single sign-on
princip jednoho přihlášení, které je možné předávat mezi stroji. Např. po přihlášení heslem na aisa.fi.muni.cz (pomocí Kerbera) je možné se odtamtud přihlásit na nymfe105.fi.muni.cz bez dalšího zadání hesla.
keytab soubor
je soubor s klíči pro entity (principals), které mají být na daném stroji použitelné bez zadání hesla. Systémový keytab v /etc/krb5.keytab slouží mimo jiné k ukládání host principals, které danému stroji odpovídají; přístup k němu byl měl mít jen root.

Komunikační protokol

Implementace

MIT Kerberos 5
je původní implementace, dostupná pod BSD licencí, vyvíjí the Kerberos Consortium.
Heimdal
je alternativní implementace, vzniklá původně kvůli exportním omezením šifrovacích technologií v USA. Snaží se být kompatibilní s MIT.
GNU Shishi
je GNU implementací Kerberos 5, pod GPLv3, poslední release v roce 2010.
Další implementace
jsou v Microsoft Windows a distribuci Javy od Sun/Oracle.

Zdroje ke kompatibilitě: MIT Kerberos – Interoperability, MIT vs. Heimdal – API rozdíly, Heimdal vs. Windows.

Replikace dat

Vazba na DNS

Jméno oblasti/realm a příslušné KDC mohou být mapovány buď v systémovém konfiguračním souboru (/etc/krb5.conf), nebo pomocí DNS.

SRV záznamy v DNS ve tvaru: _kerberos._Proto.Realm TTL Class SRV Priority Weight Port Target, kde _Proto je _tcp nebo _udp (je třeba mít oba záznamy), Realm je Kerberos realm a Target je KDC. Např.:

_kerberos._udp.EXAMPLE.COM.     IN   SRV   0 0 88 kdc1.example.com.
_kerberos._udp.EXAMPLE.COM.     IN   SRV   1 0 88 kdc2.example.com.
_kerberos._tcp.EXAMPLE.COM.     IN   SRV   0 0 88 kdc1.example.com.
_kerberos._tcp.EXAMPLE.COM.     IN   SRV   1 0 88 kdc2.example.com.

Cross-realm důvěra

Důvěra jiným oblastem se řeší pomocí principal pro oblast, které chceme důvěřovat. Např. chce-li EXAMPLE.COM využívat zdrojů z EXAMPLE.ORG, přidají oba servery do databáze principal krbtgt/EXAMPLE.ORG@EXAMPLE.COM.

Konfigurace Kerbera na Debianu

Uživatelské utility

kadmin.local
administrace databáze lokálního KDC
kadmin
administrace KDC po síti
kdb5_util
pro manipulaci s databází Kerbera, včetně vytváření, zálohování a obnovy databáze
kinit
k „ručnímu“ získání TGT (např. root může získat TGT pro pv090 a pak se pomocí něj přihlásit přes ssh)
kpasswd
umožňuje příslušnému uživateli/principal změnit heslo
klist
seznam aktivních lístků uživatele
kdestroy
zahodí všechny aktivní lístky uživatele

Udržování přesného času v síti

Typicky se dnes používá protokol NTP (Network Time Protocol), který umožňuje synchronizaci času přes síť (typicky Internet). Mnoho klientů: ntpd, systemd-timesyncd,

Dostupné protokoly

NTP
synchronizace času přes paketové sítě, schopný vyrovnat se s variabilitou latence na síti. Synchronizace až na úroveň desítek milisekund přes Internet. Typicky klient-sever, ale má i P2P variantu. Časové zdroje jsou rozděleny do vrstev (clock strata), které indikují vzdálenost od primárních zdrojů času (vrstva 0). NTP umožňuje postupnou změnu času. RFC 5905. Běží na UDP portu 123.
SNTP
zjednodušená verze NTP, která nevyžaduje ukládání stavu po delší dobu. Typicky používaný pro koncové klienty (tj. nepokytující časové informace dále). Kompatibilní s NTP.
time
zastaralý protokol pro synchronizaci časů v *nix prostředí. Provádí skokovou změnu času. Utilita rdate pro sychronizaci pomocí protokolu time. Synchronizace na úrovni celých sekund, problémy s přetoky (používá 32bit Unix čas – od 1. 1. 1970 00:00 UTC).
PTP
(Precision Time Protocol) umožňuje přesnější synchronizaci než NTP (méně než mikrosekundová přesnost). Používaný například pro synchronizaci finančních transakcí či vysílačů pro mobilní telefony.

Hardware pro přesný čas

Za primární zdroj přesného času lze považovat International Atomic Time (TAI), který využívá více než 400 atomových hodin po celém světě.

Kromě internetových zdrojů lze čas synchronizovat pomocí GPS, který využívá atomové hodiny v satelitech GPS a umožňuje synchronizaci až do řádu stovek nanosekund. GPS čas se od UTC liší díky přestupným sekundám.

NTP pool

pool.ntp.org je seskupení serverů poskytujících NTP, obsahuje přes 4000 serverů po celém světě.

Konfigurace NTP – systemd-timesyncd

Konfigurace NPT – ntpd

Literatura

Kerberos

NTP