Strona korzysta z plików cookies w celu realizacji usług i zgodnie z Polityką Plików Cookies.



05.09.2022

Łatwiejsza migracja do chmur

Commvault i Oracle rozszerzyły partnerską współpracę i wspólnie oferują rozwiązanie...
01.09.2022

Badanie sieci

QNAP ogłosił wprowadzenie oprogramowania ADRA Network Detection and Response (NDR) dla...
01.09.2022

5G w Polsce

Z badania Kearney 5G Readiness Index 2022 wynika, że Polska jest jednym z najgorzej...
01.09.2022

Zarządzanie działaniami

Fortinet zaprezentował chmurową usługę, która koreluje informacje dotyczące...
01.09.2022

Selektywna rejestracja

Naukowcy z UCLA przedstawili projekt inteligentnej kamery, która pozwala wybrać, jaki...
01.09.2022

Więcej mocy, komputer...

Profesjonalny komputer Dell Precision 7865 Tower z AMD Ryzen Threadripper PRO 5000...
01.09.2022

Rekord prędkości

Firma Aorus zapowiada superszybki dysk, następcę modelu Gen4 7000s SSD, który ma oferować...
01.09.2022

Beprzewodowe drukowanie

Firma Brother wprowadziła do swojego portfolio nowe urządzenie wielofunkcyjne z systemem...
01.09.2022

Obraz dobrze zaprogramowany

Monitor interaktywny Lyra to połączenie Androida 11, szyby antybakteryjnej, wbudowanego...

Logowanie za pomocą Kerberosa

Data publikacji: 01-09-2022 Autor: Grzegorz Kuczyński

Single sign-on (SSO) to funkcjonalność kojarzona głównie z nowszymi produktami, jednak pierwotnie została opracowana w MIT pod koniec lat 80. Kerberos został zintegrowany z Active Directory od wersji Windows 2000, ale tak naprawdę powstał w środowisku uniksowym.

 

Proces logowania użytkownika do systemu informatycznego często określany jest akronimem AAA (ang. Authentication, Authorization and Accounting). Pierwszy z nich – autentyfikacja – odpowiada za identyfikację użytkownika. Drugi aspekt to autoryzacja i jego zadaniem jest nadanie odpowiednich uprawnień zidentyfikowanemu użytkownikowi. Trzeci umożliwia rozliczanie aktywności użytkownika, czyli jego logi dostępu do systemu. Rozróżnianie tych oddzielnych aspektów dostępu jest istotne podczas korzystania z Kerberosa. Jest to protokół, który odpowiada tylko za pierwszy etap logowania, czyli autentyfikację, czasami zwany również sprawdzeniem tożsamości użytkownika. Cała różnica pomiędzy standardowym procesem logowania a użyciem protokołu Kerberos sprowadza się do tego, że w tym drugim przypadku hasło przechowywane jest na centralnym serwerze naszej sieci. W skonfigurowanym środowisku serwerów korzystających z protokołu Kerberos wystarczy zalogować się raz na dzień i mieć dostęp do innych hostów bez konieczności podawania każdorazowo hasła (mechanizm SSO).


> Implementacje i wersje


Obecna, piąta już wersja protokołu Kerberos została zdefiniowana w RFC 1510 w 1993 r. Korzystanie z jego starszych wersji (w tym czwartej) nie jest zalecane ze względów bezpieczeństwa. Mimo iż Kerberos od początku został zaprojektowany z założeniem, że będzie działał w niezaufanej sieci, to były to dopiero początki rozwoju sieci. Wraz z rozwinięciem nowych technik ataku wypuszczano kolejne, ulepszone wersje tego protokołu. Jednak same wersje to nie wszystko, istnieje również wiele implementacji tego protokołu. Dla przykładu Microsoft nie korzysta z opracowania MIT, lecz własnej i wcale nie jest to jedyna komercyjna odmiana tego protokołu. Jest też implementacja GNU zwana Shishi.


> Kryptografia


Kerberos z założenia musiał oferować wysoki poziom bezpieczeństwa w niebezpiecznym otoczeniu sieci komputerowej. Dziś, tak jak w latach 80., jedynym sposobem na osiągnięcie tego założenia jest kryptografia. W tamtych czasach dostępne były już obie formy kryptografii – symetryczna i asymetryczna, choć ta pierwsza była powszechniejsza. W kryptografii symetrycznej ten sam tajny klucz służył do szyfrowania i deszyfrowania. W konsekwencji trzeba go było przekazać obu stronom wymieniającym się zaszyfrowanymi treściami. Z kolei kryptografia asymetryczna, zwana również kryptografią klucza publicznego, nie wymaga przekazywania tajnego klucza, a wręcz przeciwnie. Tajnym kluczem jest tu klucz prywatny, a klucz publiczny może być rozpowszechniany. Obecnie najpopularniejszym algorytmem kryptografii symetrycznej jest AES, zaś asymetrycznej – RSA. Kerberos standardowo używa kryptografii symetrycznej.


> Centralizacja


Skoro Kerberos używa kryptografii symetrycznej, to każdy użytkownik musiałby posiadać zbiór tajnych kluczy do wszystkich usług. Z kolei każda usługa musiałaby mieć zbiór tajnych kluczy wszystkich użytkowników. Rozwiązaniem tego problemu jest tzw. zaufana trzecia strona, która będzie pośredniczyć i zarządzać szyfrowaną komunikacją. To zadanie realizuje Key Distribution Center (KDC), które jest niczym innym jak serwerem Kerberos.


KDC pełni trzy logiczne funkcje. Pierwszą z nich jest baza wszystkich tajnych kluczy (użytkowników i usług). Klucze te są wynikiem funkcji haszującej biblioteki kerberos. Hasz otrzymuje się z połączenia tajnego hasła oraz innych składowych, w tym tzw. soli. Baza haszy zabezpieczona jest jeszcze hasłem głównym (principal: K/M@REALM) znanym tylko administratorowi. Oczywiście oprócz samych haszy w bazie przechowywane są inne dane związane z dostępami.


Drugim komponentem KDC jest serwer autentyfikacji (ang. Authentication Server, AS). To właśnie z nim klient komunikuje się w pierwszej kolejności w celu potwierdzenia tożsamości. Jeżeli proces ten się powiedzie, to klient otrzyma dostęp do trzeciej usługi KDC, którą jest Ticket Granting Server (TGS). Usługa AS odpowiada za szyfrowaną komunikację z użytkownikiem, zaś TGS ma tajne klucze do szyfrowanej komunikacji użytkownika z usługami.


> Klucze KDC


Rola KDC w poświadczeniu tożsamości użytkowników dla serwerów opiera się na szyfrowanych wiadomościach przekazywanych przez użytkownika pomiędzy KDC a serwerem. W procesie tym używane są aż cztery tajne klucze. Załóżmy, że nasz klient user chce zalogować się na serwer srv1.lab, gdzie obaj należą do tego samego realm LAB. W takim wypadku nasz KDC musi zawierać w swojej bazie następujące klucze długoterminowe: user@LAB, host/srv1.lab@LAB i krbtgt/LAB@LAB.


Pierwszy z nich to klucz użytkownika – znajduje się on w bazie KDC, a użytkownik za pomocą swojego hasła potrafi go wygenerować. Drugi to losowo wygenerowany klucz do usługi – mają go KDC i host usługi wraz z zainstalowaną biblioteką kerberos. Trzeci (krbtgt) to również klucz losowo wygenerowany podczas instalacji Kerberosa, a jest on przechowywany tylko na KDC. Jest to tak zwany tiket początkowy Ticket Granting Ticket (TGT) wydawany przez AS, aby móc korzystać z usługi TGS. Ponadto po pomyślnej autentyfikacji użytkownika przez AS generowany jest krótkotrwały losowy klucz sesji, którym KDC dzieli się z użytkownikiem w celu dalszej komunikacji.


> Proces autentyfikacji


Pierwszym etapem komunikacji z serwerem Kerberos jest tzw. wstępna identyfikacja, której celem jest pozyskanie tiketu TGT. W procesie tym program kliencki Kerberosa kinit generuje pakiet KRB_AS_REQ. Co ciekawe pakiet ten jest przesyłany do serwera KDC bez użycia żadnego szyfrowania. Dopiero odpowiedź serwera zawiera dane zaszyfrowane kluczem klienta. Taki mechanizm działał jeszcze w Kerberos 4, ale został zmieniony z powodu bezpieczeństwa. Można w nim było przesyłać pakiety do KDC, podając się za dowolnego użytkownika, i próbować złamać otrzymane dane. W Kerberos 5 ograniczono tę możliwość poprzez wprowadzenie mechanizmu pre-authentication. Mechanizm ten zwraca odpowiedź z komunikatem, że wymagane jest ponowne wysłanie zapytania z zaszyfrowanymi danymi wskazanymi przez serwer. Najczęściej jest to znacznik czasu (PA-ENC-TIMESTAMP). Klient ponownie wysyła zapytanie w nieszyfrowanej formie z następującymi danymi:

 

  • nazwa principal klienta (user@LAB);
  • nazwa żądanej usługi, w tym przypadku TGT (krbtgt/LAB@LAB);
  • termin ważności otrzymanego tiketu;•znacznik czasu klienta.

 

[...]

 

Autor zawodowo zajmuje się informatyką. Jest członkiem społeczności open source, prowadzi blog nt. systemu GNU/Linux.

Pełna treść artykułu jest dostępna w papierowym wydaniu pisma.

prenumerata Numer niedostępny Spis treści

.

Transmisje online zapewnia: StreamOnline

All rights reserved © 2019 Presscom / Miesięcznik \"IT Professional\"