10.2 Kerberos
Kerberos je primární síťový autentizační protokol používaný v Active Directory. Funguje na principu lístků (tickets), které se vydávají po úspěšném prokázání identity.
Vlastnosti protokolu Kerberos
- Funguje správně pouze s hostnames (jmény počítačů), nikoliv s IP adresami. Pokud se k autentizaci použije IP adresa, systém se často vrátí ke staršímu protokolu NTLM.
- Je časově citlivý. Pro správnou funkčnost je nezbytná synchronizace času mezi klientem a doménovým řadičem (často se k tomu využívá NTP protokol na portu 123/UDP). V případě velkého časového posunu server lístek odmítne jako neplatný, aby se zabránilo replay útokům.
Key Distribution Center (KDC)
KDC (Centrum pro distribuci klíčů) je hlavní služba protokolu Kerberos. Skládá se ze tří hlavních částí:
- Authentication Server (AS): Vydává primární lístek nazývaný TGT (Ticket Granting Ticket).
- Ticket-Granting Server (TGS): Na základě předloženého TGT vydává takzvané Service tickets pro přístup k vybraným službám.
- Databáze: Samotná databáze AD DS (zpravidla uložena v
C:\Windows\NTDS\ntds.dit).
V rámci AD existuje pro správu lístků a šifrování speciální vestavěný účet domény nazývaný krbtgt.
Základní operace v Kerberos (Komunikace)
Komunikace probíhá ve třech krocích:
1. Získání TGT (AS_REQ a AS_REP)
Při úvodním přihlášení odešle klient AS_REQ (Authentication Server Request) směrem k doménovému řadiči. Požadavek typicky obsahuje časové razítko (timestamp) zašifrované hashem uživatelského hesla, čímž uživatel dokazuje svou identitu. Doménový řadič ověří identitu a odpoví zprávou AS_REP, která obsahuje TGT.
Syntaxe principals (jmen) je:
Syntaxe principals (jmen) je:
krbtgt/<REALM>@<REALM>.2. Získání servisního lístku (TGS_REQ a TGS_REP)
Když chce uživatel přistoupit ke konkrétní službě (např. souborovému serveru), vezme svůj platný TGT a odešle jej řadiči ve zprávě TGS_REQ (Ticket Granting Server Request). Požaduje v něm lístek k cílové službě. Řadič domény na to odpoví pomocí TGS_REP a vystaví klientovi Service ticket.
Syntaxe principals:
Syntaxe principals:
<service>/<hostname>@<REALM>.3. Autentizace vůči aplikačnímu serveru (AP_REQ a AP_REP)
Nakonec klient zašle získaný Service ticket přímo aplikačnímu serveru ve zprávě AP_REQ (Application Server Request). Server lístek ověří a pokud je platný, umožní přístup. Pokud je vyžadována vzájemná autentizace, zašle server zpět AP_REP. Většina aplikací využívá standardní rozhraní GSS-API k začlenění servisního lístku do požadavku.
Praktické získávání lístků (Nástroje kinit a kvno)
Na systémech, kde je Kerberos implementován, lze pro ruční operace použít tyto nástroje:
kinit- Slouží k vyžádání prvotního TGT lístku (např.kinit Vader@DARTH.LOCAL).kvno- Slouží k vyžádání konkrétního servisního lístku (např.kvno cifs/DARTHCONTROLLER@DARTH.LOCAL).klist- Vypíše aktuálně uložené lístky (cache).kdestroy- Smaže uložené lístky.