AAA, RADIUS i TACACS+ – podstawy

Bezpieczeństwo w sieciach komputerowych ma wiele obliczy. Jednym z podstawowych wyzwań jakie przed nami stoją jest stworzenie sieci, w której mamy kontrolę nad tym kto do niej uzyskuje dostęp. Potrzeba tego typu nadzoru rośnie wraz z rozmiarem organizacji, w której przyszło nam pracować. Z pomocą przychodzi nam framework AAA oraz dwa protokoły w naturalny sposób z nim powiązane – RADIUS oraz TACACS+. Przyjrzyjmy im się bliżej.

Czym jest AAA?

Zacznijmy od zdefiniowania czym jest AAA na przykładzie małej firmy, w której chcemy mieć nadzór nad dostępem do przestrzeni biurowej. Rozłóżmy skrót „AAA” na czynniki pierwsze:

Authentication

Autentykacja słu… wróć! Po polsku mówimy uwierzytelnianie! Mój wykładowca od Technologii Sieciowych był bardzo skuteczny w wybijaniu nam z głów angielskich słówek i zastępowaniu ich polskimi. W tym miejscu chciałbym gorąco pozdrowić doktora Bilskiego z Politechniki Poznańskiej 🙂 To tyle tytułem dygresji. Wróćmy do tematu…

Uwierzytelnianie służy nam do określania czy dana osoba jest faktycznie osobą za jaką się podaje. Jest to więc operacja weryfikowania tożsamości. W naszym przykładzie pan Jan Kowalski chce otworzyć drzwi do biura. Jak jednak sprawdzić, że faktycznie mamy do czynienia z Janem Kowalskim?

Sposobów jest wiele. W tej sytuacji moglibyśmy się posłużyć odciskiem palca w celu weryfikacji tożsamości, ponieważ odcisk każdego z nas jest unikalny. Poza odciskiem możemy wykorzystać inne metody biometryczne, takie jak skanowanie siatkówki oka, rozpoznawanie twarzy czy też głosu. Wymienione sposoby uwierzytelniania klasyfikujemy jako metody oparte o coś czym jesteś (something you are).

Do uwierzytelniania można również używać coś co wiesz (something you know) – czyli np. hasło lub PIN. Ostatnią kategorią jest coś co masz (something you have) – przykładowo identyfikator, fizyczny klucz do zamka czy też token. Wykorzystanie do uwierzytelniania więcej niż jednej metody nazywamy uwierzytelnianiem wieloskładnikowym (MFA – Multi Factor Authentication). W scenariuszu z drzwiami byłoby to np. „odbicie się” identyfikatorem na czytniku przy drzwiach i wpisanie PINu na pin-padzie.

Authorization

Gdy wiemy już z kim mamy do czynienia to możemy wykorzystać tę informację do stwierdzenia czy dany delikwent ma prawo dostępu do danego zasobu. Przykładowo pan Jan Kowalski może mieć prawo otwierania tylko niektórych drzwi w firmie – może wejść do kantyny ale nie może do serwerowni. Proces sprawdzania uprawnień do dostępu nazywamy autoryzacją. W świecie sieci komputerowych autoryzujemy komendy wydawane na urządzeniach sieciowych. Przykładowo pracownik NOC-a może mieć uprawnienia do wydawania jedynie komend show, podczas gdy druga linia wsparcia może wchodzić również w tryb konfiguracji urządzenia.

Accounting

Ostatnią składową framework’u AAA jest accounting. W tym przypadku nigdy nie słyszałem żeby dr Bilski nazwał to księgowaniem, ani jakimkolwiek innym polskim słowem. Jeśli masz pomysł na polski odpowiednik słowa accounting to daj znać w komentarzu.

Accounting jest procesem zbierania informacji i logów dotyczących poprzednich dwóch etapów – czyli kto uzyskał dostęp, do czegokiedy. Dane te są zbierane przede wszystkim w celu przeprowadzania audytów bezpieczeństwa.

Podstawy działania RADIUS

RADIUS jako protokół jest prawie moim rówieśnikiem – powstał w roku 1991. O ile ja się nie czuję staro, to w świecie technologii jest to mnóstwo czasu. Pomimo to RADIUS nadal dobrze się trzyma i jest powszechnie używany. Skrót RADIUS rozwijamy na Remote Access Dial-In User Service i dobrze to określa pierwotne zastosowanie tego protokołu – oryginalnie powstał on po to aby zapewniać funkcje AAA dla użytkowników wdzwaniających się do sieci za pomocą modemów. Protokół ten realizuje wszystkie trzy komponenty framework’u AAA, przy czym uwierzytelnianie i autoryzacja są ze sobą bardzo ściśle powiązane – do tego stopnia, że te funkcje są realizowane za pomocą tych samych pakietów. Accounting jest natomiast wydzielony jako osobny proces.

Starsze implementacje RADIUS-a używają portów UDP 1645 (uwierzytelnianie) oraz UDP 1646 (accounting), podczas gdy nowe wdrożenia bazują już na portach UDP 1812 (uwierzytelnianie) oraz UDP 1813 (accounting).

RADIUS jest protokołem działającym w modelu klient – serwer. W znacznej części przypadków to urządzenie końcowe (np. laptop) pełni funkcję klienta. RADIUS jako protokół transportuje zatem pakiety związane z uwierzytelnianiem, autoryzacją i accountingiem między klientem a serwerem AAA. Przykładowa wymiana pakietów może wyglądać następująco:

Komunikacja klient-serwer za pomocą RADIUS, źródło: cisco.com

W kwestii zastosowań z pewnością zetkniesz się z RADIUS-em podczas połączeń w sieciach bezprzewodowych, gdzie protokół ten jest powszechnie wykorzystywany do transportowania m.in. znacznie bardziej zaawansowanego protokołu uwierzytelniania – EAP (Extensible Authentication Protocol). EAP jest między innymi odpowiedzialny za DOT1X – ale to już osobna historia.

Istotne z punktu widzenia bezpieczeństwa jest to, że RADIUS szyfruje jedynie informacje dotyczące uwierzytelniania (hasła), podczas gdy pozostała część wymiany pakietowej przesyłana jest clear-text’em.

Największą zaletą RADIUS-a jest fakt, że jest to otwarty standard, powszechnie wspierany przez prawie wszystkich producentów sprzętu sieciowego.

Podstawy działania TACACS+

TACACS+ jest protokołem stworzonym przez Cisco w 1996 roku. Skrót ten rozwijamy na Terminal Access Controller Access-Control System. Była to swego rodzaju odpowiedź na coraz to bardziej powszechny w użyciu RADIUS i w pewnym sensie okazała się ona celna. TACACS+ jako protokół oferuje wiele funkcji, których brakuje w RADIUS-ie.

Przede wszystkim TACACS+ operuje na porcie TCP 49, co powoduje, że cała komunikacja jest o wiele pewniejsza (co wynika bezpośrednio z charakterystyki TCP vs UDP). Ponadto, cała zawartość pakietów TACACS+ jest szyfrowana, co przekłada się na o wiele wyższy poziom bezpieczeństwa tego protokołu (w RADIUS możemy np podejrzeć komendy, które podlegały autoryzacji!).

Kolejną różnicą jest fakt, że TACACS+ oddziela funkcje uwierzytelniania i autoryzacji – są one realizowane osobnymi pakietami. Wynika to z zastosowania tego protokołu. RADIUS został zaprojektowany z myślą o całym framework’u AAA i jest wykorzystywany przede wszystkim do uwierzytelniania i autoryzacji dostępu do sieci. Cisco natomiast stworzyło TACACS+ głównie z myślą o zapewnieniu AAA podczas zarządzania urządzeniami sieciowymi i to właśnie w takich przypadkach jest powszechnie używany. Powoduje to, że zazwyczaj mamy do czynienia z pojedynczą wymianą pakietów uwierzytelniających, a następnie z wieloma autoryzacjami poszczególnych komend wydawanych na urządzeniu. Przykładowa wymiana pakietów TACACS+ wygląda następująco:

Komunikacja klient-serwer za pomocą TACACS+, źródło: cisco.com

Sam proces autoryzacji może zachodzić na podstawie privilege level przypisanemu użytkownikowi, bądź bardziej granularnie na zasadzie weryfikacji każdej wydawanej komendy. W pierwszym przypadku określamy na przykład, że dany administrator ma uprawnienia do wydawania poleceń do privilege level = 5. Dalszą autoryzację komend wydawanych w takiej sytuacji przeprowadza już urządzenie sieciowe. Natomiast w drugim przypadku każda wydawana komenda jest wysyłana do serwera AAA, który określa czy użytkownik jest autoryzowany do jej wydania. Druga metoda jest bardziej granularna, ale z oczywistych względów mniej skalowalna i trudniejsza w zarządzaniu.

Oddzielenie funkcji uwierzytelniania i autoryzacji w TACACS+ jest dużą zaletą, ponieważ umożliwia nam używanie różnych protokołów w ramach framework’u AAA. Możemy przykładowo używać protokołu Kerberos do uwierzytelniania, a autoryzację i accounting realizować za pomocą TACACS+.

Charakterystyka działania TACACS+ powoduje, że jest to o wiele bardziej zasobożerny protokół niż RADIUS. Ponadto nie jest on tak powszechny w użyciu jak RADIUS, co wynika bezpośrednio z faktu, że nie jest to otwarty standard. Pomimo to niektórzy producenci sprzętu sieciowego (np. Dell) wspierają go i umożliwiają korzystanie z TACACS+ na ich urządzeniach.

Porównanie RADIUS i TACACS+

Znając już szczegóły dotyczące działania każdego z dwóch protokołów przyjrzyjmy się tabelce, która dobrze odzwierciedla różnice między nimi:

RADIUSTACACS+
Wykorzystuje UDP jako protokół warstwy 4.Wykorzystuje TCP jako protokół warstwy 4.
Działa na portach UDP 1812/1813 (1645/1646 w starszych implementacjach)Działa na porcie TCP 49
Szyfrowane są jedynie hasłaSzyfrowana jest cała zawartość pakietów
Łączy w sobie funkcje uwierzytelniania i autoryzacjiTraktuje uwierzytelnianie, autoryzację i accounting osobno
Jest to otwarty standard powszechnie wspierany przez wielu producentówJest to protokół należący do Cisco i przez to nie tak powszechnie używany
Nie jest zasobożerny z uwagi na swoją prostą konstrukcjęJest zasobożerny z uwagi na swoją bardzo złożoną konstrukcję
Nie pozwala na granularną autoryzacjęPozwala na bardzo granularną autoryzację
Nie pozwala używać różnych protokołów do uwierzytelniania i autoryzacjiPozwala używać różnych protokołów do uwierzytelniania i autoryzacji
Głównie używany do zapewniania dostępu do sieci (Network Access)Głównie używany do zarządzania urządzeniami sieciowymi (Device Administration)

Tak jak wspomniałem w samym tytule artykułu – są to jedynie podstawy AAA, RADIUS-a i TACACS+. Za tymi protokołami kryje się jednak o wiele więcej o czym mam nadzieję napisać w osobnych artykułach. Oba protokoły są dziś powszechnie używane, z dużą przewagą RADIUS-a. Warto je znać nie tylko od teoretycznej, ale również od praktycznej strony.

A czy Ty używasz w swojej organizacji RADIUS lub TACACS+?

🗳 Jak przydatna była ta publikacja?

Średnia ocena 4.8 / 5. Ilość głosów: 22

Brak ocen. Bądź pierwszy!

Dziękujemy za ocenę! Zapraszamy Cię do obserwowania NSS w mediach społecznościowych!

Przykro nam, że ta publikacja okazała się być dla Ciebie nieprzydatna!

Uwaga: Twój głos będzie liczony tylko jeśli udzielisz feedbacku używając formularza poniżej.

Jak możemy poprawić tę publikację?