Název referátu

Petr Skyva

Obsah

Co je kerberos

Síťoví autentizační protokol. Tedy možnost prokázat bezpečně svoji identitu. Kerberos zaručuje integritu dat a zabraňuje odposlouchávání. Byl vyvvinut na MIT.

Kerberos je postavený na symetrické kryptografii, a proto je potřeba pro autentizaci třetí strana Možnost asymetrického šifrování je možná pouze v některých částech autentizace.

Z čeho se skládá kerberos?

Jak to funguje

KDC obsahuje nějakou databází uživatelů, kterým přižazuje tickety. Autentizace pomoci Kerbera je navržena tak, že se nemusí neustále přenášet heslo po sítí nýbdrž jen získaný ticket. AS i TGS jsou většinou provozovány na jednom stroji, i když to jsou dvě samostatné služby. Tickety přidělené uživatelům maji pouze omezenou platnost, která je pokud je potřeba prodlužovat. Klient se tedy autentizuje vůčí AS a obdrží ticket. Pomocí tohoto ticketu kontaktuje TGS kde prokáže svoji identitu a požadá o přístup k určité službě. Pokud klient má právo na danou službu, zašle TGS klientovi další ticket, který je použit při komunikaci s SS (Potvrzení nároku na službu).

Detailněji:

Login:

1.) uživatel zadá login a heslo na svém počítači.
2.) Klient zahashuje vložené heslo které se stane tajným klíčem pro klienta.

Autentizace klienta:

3.) Klient odešle nešifrovanou zprávu na AS s žadostí o přístup ke službe. Ve zprávě se uvádí principal klienta a služby ke které chce získat přístup.
4.) AS zjistí jestli je klient v jeho databázi, pokud ano odešle zpět klientovi dvě zprávy.
- Klient-TGS klíč zašifrovaný klíčem klienta.
- TGT s údaji o klientovi (klient-TGS klíč), a po jakou dobu může daný ticket používat. Zašifrováno klíčem klient-TGS (tajný klíč na AS, klient ho nezná).
5.) Po obdržení zpráv klient dešifruje zprávu pomocí svého klíče. Rozšifrované informace se nadále využívají pro komunikaci
s TGS. Hesla se musí shodovat (to které uživatel vložil na začátku stim coje v AS).

Přístup ke službě:

6.) Klient odešle dvě zprávy na TGS. A to TGT získané od AS a id služby kterou chce využívat. Druhou (autentifikátor), která je zašifrovaná klient-TGS klíčem, kterou .
7.) TGS po obdržení obou zpráv rozkóduje první zprávu zníž získa zprávu TGT získané od AS kterou dešifruje svým tajným klíčem, tím získá klient-TGS klíč.
pomocí tohoto klíče dešifruje autentifikátor a odešle klientovi, opět dvě zprávy.
8.) První zpráva je ticket klient-server, obsahující údaje o klientovi, a klient-server klíč, to je zašifrované klíčem dané služby.
9.) Druhou zprávu klient-server klíč šifrovaný klientovým klíčem získaným z druhé zprávy při autentizaci.

Konečný přístup ke službě:

10.) Klient po obdržení předchozích dvou zpráv od TGS ma tedy dostatek informací k autentizaci vůči SS. Klient se tedy připojí a zašle dvě zprávy.
11.) První zprávu z předchozího kroku, a zprávu, která slouží jako další autentifikátor obsahujicí údaje o klientovi zašifrované klíčem získaným z předchozí první zprávy.
12.) SS dešifruje první zprávu pomoci svého tajného klíče (Tím kterým byla zašifrovaná předchozí první zpráva) a získá klient-server klíč z druhé předchozí zprávy.
Tímto klíčem dešifruje druhý autentifikátor a pošle zpět klientovi zprávu aby potvrdil svoji identitu. Zpráva obsahuje časovou značku z klientova autentifikátoru
navýšená o jedna, zašifrovaná klíčem klient-server.
13.) Klient dešifruje zprávu daným klient-server klíčem (získaným z přístupu ke službe) a zkontroluje, zda je časová značka navýšena. Pokud ano může klient serveru důvěřovat.

Implementace

Client utilities

krb5_newrealm - vytvoření nového realmu
kinit
klist

tedy kinit je nástroj pro získání TGT a klist pro zobrazení ticketů

kdb5_util - nástroj pro údržbu databáze Kerbera
kdb5_util dump /root/dump
Konfigurace je umístěna na v etc/krb5.conf, konfigurace KDC potom v /etc/krb5kdc (na Debianu).

Replikace databáze

Kerberos je designovaný tak aby poskytoval Master-Slave cluster. Pro replikaci databáze je tedy potřeba na dvou serverech vytvořit principal pro vzájemnou autentizaci a přenést Master klíč, kterým jsou položky v databází šifrovány. Funguje jako u DNS kdyz Master server neni dostupný využívá se sekundární server. Nicméně když nebude funkční Master server není možné přistupovat k administrátorskym funkcím.

Nastavení:
První nastavíme replikaci ACL pro kpropd. Defaultně v /var/Kerberos/krb5kdc/kpropd.acl

host/kerberos1.gnud.ie@GNUD.IE
host/kerberos2.gnud.ie@GNUD.IE
kpropd.acl by měl existovat pouze na Slave serveru. Dále vytvoříme host klíče pro master i slave server.

bash# kadmin.local
kadmin.local: addprinc -randkey host/kerberos1.gnud.ie
kadmin.local: addprinc -randkey host/kerberos2.gnud.ie
a vytvoříme tzv. keytab file.

kadmin.local: ktadd host/kerberos1.gnud.ie
kadmin.local: ktadd host/kerberos1.gnud.ie
Dále nakopírujeme na náš slave server klíče

slave# scp root@kerberos1.gnud.ie:/etc/krb5.keytab /etc

A sesynchronizujeme master se slave serververem:
#/usr/Kerberos/sbin/kdb5_util dump /var/Kerberos/krb5kdc/slave_datatrans
#/usr/Kerberos/sbin/kprop -d -f /var/Kerberos/krb5kdc/slave_datatrans kerberos2.gnud.ie
3234 bytes sent.
Database propagation to kerberos2.gnud.ie: SUCCEEDED
#

NTP

Network Time Protocol slouží pro synchronizaci vnitřních hodin počítačů po paketové síti s proměnným zpožděním. Tento protokol zajišťuje, aby všechny počítače v síti měly stejný a přesný čas. Byl obzvláště navržen tak, aby odolával následku proměnlivého zpoždění v doručování paketů. Dosahuje se přesnosti v řádech milisekund. NTP démon beží na stroji trvale. NTP udržuje a značkuje čas v UTC ve formě čísla s pevnou desetinnou čárkou: 32 bitů na část sekund + 32 bitů desetinná část sekund. To NTP dává škálu 2^32 sekund s teoretickým rozlišením 2^32 sekundy. Ačkoliv NTP škála přetéká každých 2^32 sekund, implementace by měla odstranit nejednoznačnost z jiných zdrojů. Protože k tomu stačí čas přesný na několik desetiletí, pro běžné použití to není problém. NTP beží na portu 123.

NTP pool

NTP pool je spousta veřejně dostupných NTP serverů, které lze využít pro synchronizaci. Jsou součásti pool.ntp.org domény i jako další subdomény dle geografie (cz.pool.ntp.org).

Konfigurace NTP

/etc/ntp.conf kde přidáme řádky poolů které chceme využívat. server 0.cz.pool.ntp.org

Literatura