Kerberos, synchronizácia času po sieti

Matej Vašek, 356807@mail.muni.cz

Obsah

Kerberos

Kerberos je autentizačný protokol navrhnutý pre dôveryhodné stroje v nedôveryhodnej sieti. Vznikol na MIT vrámci projektu Athena v osemdesiatych rokoch. Pomenovaný je po trojhlavom psovi, ktorý v gréckej mytológii stráži vstup do podsvetia. Existuje viacero implementácií napr. MIT Kerberos, Heimdal.

Základné črty

Základné pojmy

Prevzaté zo slidov k PV077.

Princíp činnosti

  1. Klient sa autentizuje voči serveru spoločným tajomstvom a požiada o prístup k serveru.
  2. Kerberos vygeneruje nový klient-server kľuč.
  3. Kerberos vytvori tzv. server-ticket obsahujúci K-S kľúč, informácie o klientovi a časové razítko. Server-tiket zašifruje kľúčom služby.
  4. Kerberos klientovi odošle K-S kľúč a server-ticket
  5. Klient odošle serveru server-ticket a správu, ktorá obsahuje informácie o klientovi a časové razítko.
  6. Server je teraz schopný získať K-S kľúč a použiť ho k overeniu. K-S kľúč sa používa aj v ďalšej komunikácii.
Detailnejší popis môžete nájsť tu.

Inštalácia na distribucii Fedora

$firewall-cmd --add-port=88/udp --permanent
$service firewalld restart
$yum install krb5-*
$yum search rng-tools
$vi /etc/krb5.conf
$vi /var/kerberos/krb5kdc/kdc.conf
$rngd -r /dev/urandom -o /dev/random -b
$kdb5_util create -s -r myrealm
$service krb5kdc restart
$kadmin.local -q "addprinc username/admin"

/etc/krb5.conf
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 default_realm = PROTO07.LAB.FI.MUNI.CZ
 default_ccache_name = KEYRING:persistent:%{uid}

[realms]
 PROTO07.LAB.FI.MUNI.CZ = {
  kdc = localhost
  admin_server = localhost
 }

[domain_realm]
 .proto07.pv090.fi.muni.cz = PROTO07.LAB.FI.MUNI.CZ
 proto07.pv090.fi.muni.cz = PROTO07.LAB.FI.MUNI.CZ
/var/kerberos/krb5kdc/kdc.conf
[kdcdefaults]
 kdc_ports = 88
 kdc_tcp_ports = 88

[realms]
 PROTO07.LAB.FI.MUNI.CZ = {
  #master_key_type = aes256-cts
  acl_file = /var/kerberos/krb5kdc/kadm5.acl
  dict_file = /usr/share/dict/words
  admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
  supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal camellia256-cts:normal camellia128-cts:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
 }

Synchronizácia času po sieti

Pre synchronizáciu času v sieti používame protokol NTP (Network Time Protocol). Protokol beží nad UDP port 123. O synchronizáciu sa stará systémový deamon ntpd, ktorý je bežnou súčasťou linuxových distribucií. Takže pravdepodobne nič nemusíte inštalovať :-). Stoje s NTP sa delia do vrstiev podľa úrovne presnosti. Najpresnejšie sú na úrovni 0 najnepresnejšie 14. Stoje z nižšej vrstvy sa riadia časom priamych predkov. Čas je reprezentovaný ako počet sekúnd od počiatku epochy, 32 bitov pre celú časť + 32 pre desatinnú časť. Konfigurácia je uložená v /etc/ntp.conf

server time.fi.muni.cz
server 1.cz.pool.ntp.org

Literatúra