www.SAMURAJ-cz.com 

15.12.2017 Radana a Radan Translate to English by Google     VÍTEJTE V MÉM SVĚTĚ

Články

Kerberos část 3 - Single Sign-On a protokol Kerberos

Středa, 18.06.2014 16:51 | Samuraj - Petr Bouška |
V minulých dílech jsme si popsali důležité termíny Active Directory Domain Services. Dnes se pokusíme popsat techniku Single Sign-On a začneme již úvodním popisem protokolu Kerberos a jeho vlastností.

Co je to SSO?

Běžně užívaná zkratka SSO pochází z názvu Single Sign-On, česky se používá označení jednotné přihlašování, ale já preferuji anglický termín. Jde o metodu, kdy zadáme svoje přihlašovací údaje pouze jednou, a autentizace k dalším službám proběhne bez našeho zásahu (a zadání přihlašovacích dat). Správa našich údajů se provádí na centrálním místě (serveru) a na něm se autentizujeme. Často je SSO spojováno s centrální správou uživatelských údajů (Identity Management), což nám zajistí společné uživatelské jméno, heslo (či alternativní autentizaci jako je certifikát) a další údaje (třeba email a adresu) pro různé služby. Pokud dojde ke změně nějakého údaje, tak je měníme na jednom místě a projeví se to pro všechny služby, které využíváme.

Nejen, že jde o pohodlné řešení, ale také zvyšuje bezpečnost. Přihlašovací údaje se vůbec nedostanou na službu, ověřujeme se na centrálním místě a službě pouze předáme důvěryhodnou informaci. Takže také pro aplikaci není důležité, jakou metodou došlo k autentizaci uživatele. Nemusí docházet k přímé komunikaci mezi službou a autentizačním serverem, s tím komunikuje klient. Samozřejmě to znamená i nebezpečí, pokud by bylo napadeno centrální místo, tak získá útočník přístup k různým systémům.

SSO se dá prakticky realizovat různým způsobem. Každá metoda přináší určité výhody i nevýhody.

Kerberos SSO

V tomto článku se budeme věnovat rozšířené metodě SSO a to využití protokolu Kerberos. Naše zaměření bude speciálně na Kerberos v podání firmy Microsoft, což znamená doménové prostředí. V tomto případě provádí autentizaci služba KDC, která běží na všech doménových řadičích (DC). Klient tedy při využití SSO musí mít dostupný DC. Tuto službu asi nebudeme publikovat do internetu, takže je SSO omezeno na využití v interní síti. Na druhou stranu je možno nastavit důvěryhodnost s jinými doménami (pokud máme zajištěnu síťovou komunikaci, třeba pomocí VPN) a pak SSO funguje i mezi doménami.

Služba, ke které se chceme připojit, může běžet na Windows serveru/stanici, který je i není zařazen do domény. Stejně tak může být na Linuxu. Není ani nutné, aby se služba nacházela v lokální síti, může být v rámci internetu či jiné sítě.

Pokud jsme členem domény, tak si možná ani neuvědomujeme, že k SSO dochází velice často. Na začátku se přihlásíme do domény (při autentizaci do počítače) a při přístupu k dalším službám (které mají SSO nastavené) dojde automaticky k přihlášení. To nastává pokaždé, když použijeme síťovou tiskárnu, sdílený disk, připojíme se Outlookem k Exchange serveru či řadě dalších síťových služeb. Aniž bychom něco zaznamenali, tak na pozadí dojde k naší autentizace (a následně autorizaci) pomocí SSO. Většinou pokud neprojde autorizace (nemáme práva k dané službě), tak se zobrazí přihlašovací dialog a můžeme použít jiný účet.

Kerberos autentizace využívá vždy přihlášení k nějaké službě a v takovém případě se vždy využívá princip Single Sign-On.

SSO pro web

V internetu se SSO nejvíce využívá pro webové aplikace. V rámci interní sítě nám pro webové servery funguje Kerberos SSO, ale klient se musí nacházet uvnitř interní sítě. To se nehodí pro domácí uživatele, kteří nejsou součástí domény. A je to často problém i pro firemní použití.

Proto existují dva způsoby řešení. Ve firemním prostředí se využije speciální server Identity Provider, který nabízí služby prokázání identity do internetu. Interně provádí autentizaci uživatele vůči adresářové službě (třeba Active Directory). Znamená to tedy, že můžeme doménové účty využít k autentizaci ke službám v internetu (používá se třeba u hybridních cloudů). Často se využívá otevřený standard Security Assertion Markup Language (SAML a novější SAML2).

Druhá možnost je služba v internetu, která spravuje uživatelské účty a provádí autentizaci. Můžeme se tak do různých webů přihlásit jedním účtem (a v ideálním případě pomocí SSO). Něco takového využíváme například u Google,  Facebooku či Microsoftu. Některé systémy z této oblasti jsou OpenAM (dříve OpenSSO) či WebAuth. Jednotná správa identit je OpenID nebo český projekt mojeID.

Praktické použití je takové, že při prvním přístupu k webové službě, která využívá jednotný účet, zadáme přihlašovací údaje. Získáme šifrovanou identitu a při přístupu k další službě již není třeba údaje zadat. Na počátku se ale musíme přihlásit k počítači, kde se využívá jiný účet.

Když jsme zmínili Cloud, tak pro firemní prostředí se využívá ještě jedna možnost. Účty z interního Active Directory se synchronizují (třeba MS DirSync) do Cloudového adresáře nebo se provádí federace (třeba MS Active Directory Federation Services). Uživatelské účty pak fungují v rámci daných Cloudových služeb. Příkladem je třeba Microsoft Office 365.

Protokol Kerberos

Kerberos je síťový autentizační protokol, který pracuje na základě tiketů (Tickets), aby umožnil komunikujícím stranám v nezabezpečené síti bezpečně prokázat svoji identitu. Na začátku zadáme svoje přihlašovací údaje a veškeré další ověřování funguje na principu SSO.

Protokol Kerberos vznikl již v osmdesátých letech dvacátého století na univerzitě Massachusetts Institute of Technology (MIT). Dodnes používaná verze 5 je zde od roku 1993, kdy byla definována v RFC 1510 - The Kerberos Network Authentication Service (V5). Tato norma byla v roce 2005 upravena a specifikována v RFC 4120 - The Kerberos Network Authentication Service (V5). V Microsoftím doménovém prostředí je Kerberos v5 výchozí autentizační protokol. Jako alternativa, či ve starších Windows (NT 4.0), se používá protokol NTLM (NT LAN Manager). Věci související s Kerberos protokolem jsou definovány v řadě dalších RFC norem.

Standardní Kerberos se využívá pro autentizaci, Microsoft jej rozšířil o autorizační údaje (posílá seznam skupin, kterých je uživatel členem, a případně další informace) pomocí Kerberos Protocol Extensions [MS-KILE]. Tyto údaje jsou uloženy v Privilege Attribute Certificate (PAC) Data Structure [MS-PAC].

Pozn.: Toto rozšíření tiketu o seznam skupin může vést k problémům s přihlášením, pokud je uživatel členem příliš velkého množství skupin. Problémy jsem popisoval v článku Kerberos autentizace a členství ve skupinách.

Kerberos je hojně využíván (nejen v MS světě) díky svým vlastnostem:

  • uživatelské heslo ani jeho hash se nikdy nepřenáší v síti - vyměňují se šifrované tikety
  • využívá se symetrická kryptografie - jsou podporování různé šifry (jako DES, RC4, AES)
  • architektura je rozšiřitelná - umožňuje použít další či alternativní bezpečnostní metody (šifry, hashe)
  • podporuje vzájemnou autentizaci (mutual authentication) - volitelně se nemusí pouze autentizovat klient u služby, ale i služba klientovi
  • chrání proti odposlechu (eavesdropping) či opakovanému použití stejných rámců (replay attacks, ochrana pomocí časových známek)
  • umožňuje uživatelům přistupovat k různým službám bez zadání hesla = Single Sign-On
  • zjednodušuje administraci - účty jsou spravovány centrálně pro různé aplikace
  • funguje v modelu klient server a vyžaduje důvěryhodnou třetí stranu (KDC) - to je zároveň slabina, KDC musí stále běžet a musí být dobře zabezpečené
  • klient se neověřuje na serveru, ten vůbec nedostane uživatelovi credentials, ověření provádí KDC a odesílá šifrovaně uživatelovo jméno (to může rozšifrovat jen server)
  • podporuje impersonation - uživatel přímo nepřistupuje ke zdrojům, místo něj přistupuje systém
  • podporuje delegation of authentication (pomocí proxy ticket, forwarded ticket, protocol transition a constrained delegation) - umožňuje službě běžící pod nějakým účtem převzít uživatelovu identitu a přihlásit se k jiné službě (například uživatel se přihlásí k aplikačnímu serveru, ten se musí přihlásit k DB, ale potřebuje to provést pod oprávněním uživatele)

Kerberos protokol je považován za bezpečný, chrání proti řadě různých útoků či zneužití. Ze svého principu (jako je používání dočasných tiketů a šifrování různými klíči) a účelu (umožnit bezpečné ověření v nezabezpečené síti) jde o ochranu při komunikaci v síti. Zůstávají tedy místa, kde může dojít k zneužití. Jedním bodem je uživatelské heslo, pokud je zvoleno slabé heslo a útočník jej může odhadnout/získat, tak bezpečnost vlastního protokolu nezabrání zneužití účtu. Pro zvýšení bezpečnosti je možné použít čipovou kartu a autentizaci certifikátem. Druhé nebezpečí je napadení stanice, z které se uživatel přihlašuje. V paměti je dočasně uložen Secret Key, což je vlastně heslo uživatele.

Jméno protokolu vzniklo podle řecké mytologie, kde Kerberos je tříhlavý pes chránící vchod do podsvětí. To proto, že komunikace se účastní tři strany:

  • uživatel - klient, který chce přistoupit k nějaké síťové službě
  • server - přesněji řečeno služba, na kterou chce uživatel přistoupit
  • Key Distribution Center (KDC) - důvěryhodná třetí strana, je součástí doménového řadiče (DC) a obsahuje dvě nezávislé služby - Authentication Service (AS) a Ticket-Granting Service (TGS).
Kerberos - tři komunikující strany

Kerberos V5 standardně využívá TCP(/UDP) port 88. Je plně integrován v Active Directory, serverovém i klientském OS od Windows 2000, a řadě síťových protokolů, jako je CIFS/SMB, HTTP, RPC, tiskové služby, DFS, IPsec, apod. Kerberos je závislý na řadě služeb, jde o Active Directory Domain (nefunguje pro lokální účty), TCP/IP síť, DNS (Domain Name System), časové synchronizaci (Time Service) a SPN (Service Principal Names).

Odkazy

zobrazeno: 5577krát | Komentáře [0]

Autor:

Související články:

Kerberos protokol se zaměřením na SSO v AD DS

Nový seriál, který se podrobně věnuje protokolu Kerberos V5, hlavně v prostředí Microsoft Active Directory. Popíšeme si i řadu souvisejících věcí, které jsou potřeba pro pochopení fungování Kerberos Single Sign-On (SSO).

Pokud se Vám článek líbil, tak mne potěšíte, když uložíte odkaz na některý server:

Pokud se chcete vyjádřit k tomuto článku, využijte komentáře níže. Pokud chcete poradit s nějakým problémem či diskutovat na nějaké téma, tak použijte fórum.

Komentáře

Zatím tento záznam nikdo nekomentoval.

Přidat komentář

Vložit tag: strong em link

Vložit smajlík: :-) ;-) :-( :-O


Ochrana proti SPAMu, zdejte následující čtyři znaky image code

Nápověda:
  • maximální délka komentáře je 2000 znaků
  • HTML tagy nejsou povoleny (budou odstraněny), použít se mohou pouze speciální tagy (jsou uvedeny nad vstupním polem)
  • nový řádek (ENTER) ukončí odstavec a začne nový
  • pokud odpovídáte na jiný komentář, vložte na začátek odstavce (řádku) číslo komentáře v hranatých závorkách