Piotr Piwoński, 113755, gr.KTI+KSG
Bezpieczeństwo 802.1X – wsparcie protokolarne
1. O 802.1X
IEEE 802.1X jest standardem kontroli dostępu do sieci przewodowych i bezprzewodowych.
Jest częścią grupy protokołów IEEE 802.1. Standard ten zapewnia mechanizm
uwierzytelniania urządzeń w momencie podłączenia się do sieci LAN lub WLAN.
Ze standardem tym ściśle związany jest protokół EAP ( Extensible Authentication
Protocol ), który odpowiada za odpowiednią wymianę danych uwierzytelniających
pomiędzy klientem a zabezpieczoną siecią. EAP początkowo został zaprojektowany dla sieci
Dial-up, jednak w przypadku Ethernetu sprawdza się równie dobrze. Protokół ten w
odniesieniu do standardów grupy IEEE 802 nosi nazwę EAPoL ( EAP over LAN ).
2. Jak to działa?
Schemat uwierzytelniania 802.1X opiera się o trzy pojęcia: klient ( supplicant ), punkt
dostępowy sieci ( authenticator ) oraz serwer uwierzytelniający ( authentication server ).
Klient jest urządzeniem ( komputerem lub urządzeniem przenośnym ), który chce uzyskać
dostęp do chronionej sieci, punktem dostępowym jest często zarządzalny switch lub access
point z możliwością kontroli dostępu. Serwer uwierzytelniający natomiast najczęściej jest
usługą RADIUS.
Punkt dostępowy odgrywa rolę strażnika sieci udostępniający jedynie taki ruch sieciowy,
który jest niezbędny do uwierzytelnienia klienta – w tym przypadku wyłącznie ruch EAPoL.
Ze względu na to, że 802.1X definiuje zabezpieczenie w warstwie łącza danych, żaden inny
ruch sieciowy ( taki jak DHCP, ARP, IP itp. ) nie jest dostępny dla klienta. Schemat działania
802.1X pokazuje poniższy rysunek:
Klient chcąc dostać się do sieci udostępnia swoje dane uwierzytelniające ( credentials ) w
postaci nazwy użytkownika i hasła lub certyfikatu dla punktu dostępowego. Ten przekazuje je dalej
do serwera uwierzytelniającego, który sprawdza otrzymane dane. Jeśli są poprawne odsyła do
punktu dostępowego wiadomość o poprawnym uwierzytelnieniu. Ten z kolei otwiera port, do
którego jest dołączony klient oraz wysyła do niego wiadomość o możliwości dostępu do sieci.
To jednak w jaki sposób są wysyłane wiadomości oraz czym są dane uwierzytelniające definiuje już
bezpośrednio sam protokół EAP a w szczególności jego metody ( EAP-Methods ), które zostaną
opisane poniżej.
Dane uwierzytelniające stanową treść EAP, które są opakowywane w ramke EAPoL. Jak
można zauważyć z powyższego rysunku ramki EAPoL odpowiadają za przekazywanie wiadomości
wyłącznie pomiędzy klientem a punktem dostępowym. W komunikacji pomiędzy punktem
dostępowym a serwerem uwierzytelniającym wykorzystywane są już inne protokoły zależne od
architektury samego serwera. W naszym przypadku jest to protokół RADIUS.
3. EAPoL
Ze względu na to, że sam protokół EAP nie odpowiada za sposób przekazywania
odpowiednich wiadomości, na potrzeby sieci lokalnej został opracowany EAPoL. Oprócz
standardowej ramki przechowującej treść protokołu EAP, zostały opracowane także inne,
które służą celom administracyjnym. Wyróżniamy zatem:
• EAPoL-Start – w momencie gdy klient łączy się po raz pierwszy z siecią nie zna adresu
MAC punktu dostępowego ( nawet nie wie, że on istnieje ). By rozwiązać ten problem
została stworzona wiadomość EAPoL-start, która wysłana na odpowiedni MAC-Address
multicastowy grupy (zarezerwowana specjalnie do tego celu) , dociera do punktu
dostępowego. Dzięki temu klient dowiaduje się o istnieniu punktu dostępowego i może
zacząć wymianę kolejnych wiadomości.
• EAPoL-Key – wiadomość ta służy do wysłania klucza szyfrującego do klienta. Służy ona do
wstępnego uwierzytelniania w momencie asocjacji. Wykorzystywana jest ona szczególnie w
standardzie 802.11i.
• EAPoL-Packet – służy do wysyłania poszczególny wiadomości EAP poprzez LAN co jest
podstawowym zadaniem EAPOL'u.
• EAPoL-logoff – w momencie gdy klient odłącza się od sieci zostaje wysłana ta wiadmość
by poinformować punkt dostępowy o zablokowaniu portu.
• EAPoL-Encapsulated-ASF-Alert – zaprojektowana by można było bez uwierzytelnienia
wysyłać do sieci odpowiednie pakiety SNMP w celu monitorowania stanu sieci. Ze względu
bezpieczeństwa rzadko wykorzystywana.
Poniżej format ramki EAPoL:
◦ Eth Mac Header – początek ramki Ethernetowej zawierająca adres źródłowy, docelowy itp.
◦ Protocol Version – wersja protokołu EAPOL.
◦ Packet type – jedno-bajtowe pole określające typ wiadomości ( opisane wyżej )
◦ Packet Body Length – długość wiadomości
◦ Packet Body – treść wiadomości.
4. Etapy uwierzytelniania
Uwierzytelnianie 802.1X przebiega w czterech krokach:
• Inicjalizacja ( Initalization ) - w trakcie detekcji nowego klienta port na switchu jest
włączony i ustawiony na stan „nieautoryzowany”. W tym stanie jest możliwy wyłącznie
ruch 802.1X. Pozostały ruch jak DHCP lub HTTP jest odrzucany.
• Inicjacja ( Initiation ) - do rozpączęcia uwierzytelniania punkt dostępowy wysyła okresowo
żądania identyfikacji ( EAP-Request Identity ) pod specjalny adres warstwy drugiej (
01:80:C2:00:00:03). Klient w momencie gdy otrzyma takie żądanie odpowiada ramką typu
EAP-Response zawierającą dane uwierzytelniające. Punkt dostępowy następnie opakowuje
te dane w ramkę RADIUS i odsyła ją do serwera. Klient również sam może rozpocząć
proces uwierzytelnienia poprzez wysłanie ramki EAPoL-Start do punktu dostępowego.
• Negocjacja ( EAP negotation ) - serwer uwierzytelniający wysyła do punktu dostępowego
odpowiedź EAP-Request zawierającą metodę uwierzytelniania jakiej oczekuje. Punkt
dostępowy opakowuje tę wiadomość w ramkę EAPoL i wysyła ją do klienta. W tym
momencie klient może negocjować metodę uwierzytelnienia i odesłać z powrotem żądanie o
metodę, której by oczekiwał.
• Uwierzytelnianie ( Authentication ) - Jeśli obie strony, czyli klient i serwer
uwierzytelniający, zgodzą się co do metody wówczas rozpoczyna się wymiana pomiędzy
nimi żądań EAP-Request i EAP-Response do momentu gdy serwer odeśle EAP-Success lub
EAP-Failure. Jeśli uwierzytelnienie klienta przebiegło pomyślnie punk dostępowy ustawia
port w stanie „autoryzowany”. W momencie gdy klient odłącza się od sieci, wysyła ramkę
EAPoL-logoff do punktu dostępowego, a ten zmienia port znów na stan „nieautoryzowany”.
5. Protokół EAP
EAP jest podstawowym protokołem wymiany wiadomości uwierzytelniających pomiędzy
klientem a chronioną siecią. Określa wiadomości typu request/response poprzez które
przesyłany jest odpowiedni algorytm uwierzytelniający czyli tzw EAP-Method. Najczęściej
wykorzystywane metody to EAP-MD5, EAP-LEAP, EAP-TLS, EAP-TTLS i EAP-PEAP.
EAP definiuje cztery typy wiadomości: REQUEST, RESPONSE, SUCCESS i FAILURE.
Na początku klient wysyła żądanie dostępu do sieci. Wówczas następuje odpowiednia ilość
(zależna od metody ) wymiany komunikatów request/response aż do momentu uzyskania
SUCCESS lub FAILURE. Przykładowa wymiana wiadomości została pokazana na
poniższym rysunku.
Dzięki takiej budowie protokół EAP w procesie uwierzytelniania jest bardzo elastyczny. Pozwala na
implementację dowolnych algorytmów uwierzytelniających bez potrzebnych zmian w
infrastrukturze sieci. Wystarczy aby ten algorytm „rozumiał” klient i serwer.
6. Bezpieczeństwo EAP
Pomimo że EAP oferuje całkiem dobrą elastyczność poprzez różne typy, cała wiadomość
może być przesyłana czystym tekstem. Jest to wyjątkowo niebezpieczne w przypadku sieci
bezprzewodowych gdzie hacker może podsłuchiwać sieć z zewnątrz. Ze względu na to, że
EAP jest szeroko stosowany znane są również jego słabe punkty. Możliwe ataki jakie można
wykonać to: DoS, atak słownikowy, atak man-in-th-middle, podszywanie się pod punkt
dostępowy, podszywanie się pod klienta oraz wykorzystanie słabych punktów samej
metody.
Wyżej wymienione metody ( EAP-Methods ) można podzielić na trzy grupy: metody z
kluczem symetrycznym, metody z kluczem publicznym i metody z tunelowaniem.
W metodach wykorzystujących klucz symetryczny, klient i serwer uwierzytelniający
zestawiają pomiędzy sobą zaufane połączanie poprzez udowodnienie znajomości sekretnego
klucza przez jedną i drugą stronę. Metody z kluczem symetrycznym mają tą zaletę, że nie
wymagają dużej złożoności obliczeniowej. Natomiast wadą jest to, że większość
użytkowników wybiera słabe hasła a przez to metoda ta jest podatna na ataki słownikowe.
Metodami wykorzystującymi klucz symetryczny są EAP-MD5 i EAP-LEAP.
◦ EAP-MD5 – jest najbardziej popularną metodą, która daje podstawowe zabezpieczenie.
Wykorzystywany jest tu jednostronny algorytm hash'ujący w połączeniu z sekretnym
kluczem i zadaniem ( challenge ), którego rozwiązanie potwierdza znajomość klucza
przez klienta. Brak tu dwustronnego uwierzytelniania ( mutual authentication ), jak
również nie dostarczany dynamiczny WEP na każdą rozpoczętą sesje. W momencie gdy
hacker podsłucha zadanie oraz jego zahash'owaną odpowiedź, może w łatwy sposób
uzyskać sekretny klucz poprzez wrzucanie wyrazów ze słownika aż uzyska tą samą
odpowiedź. Hacker znając hasło klienta może w prosty sposób podszyć się pod klienta.
Ponadto poprzez jednostronne uwierzytelnianie i słabość algorytmu, EAP-MD5 jest
podatny na ataki typu MITM. Hacker może podszyć się pod punkt dostępowy i przejąć
sesje klienta.
◦ EAP-LEAP – został zaprojektowany przez Cisco dla sieci bezprzewodowych. W
przeciwieństwie do MD5, LEAP używa dwustronnego uwierzytelnienia. To pozwala
wyeliminować ataki MITM. Szyfruje on dane używając dynamicznie zmieniającego się
kluczy WEP. W LEAP klucze sesyjne są unikatowe dla każdego klienta. Niestety LEAP
jest podatny analogicznie do MD5 na ataki słownikowe.
Kolejną grupą są metody z kluczem publicznym. Do zaszyfrowania wiadomości używany
jest klucz publiczny natomiast do jego odszyfrowania służy wyłącznie klucz prywatny. By
dowieść o prawidłowości klienckiego klucza publicznego, serwer uwierzytelniający musi
zestawić zaufane połączenie w oparciu o autoryzowane certyfikaty CA. Przykładem takiego
rozwiązania jest EAP-TLS.
◦ EAP-TLS jest to całkowicie odporny na łamanie haseł, ze względu na to, że nie jest od
nich zależny. EAP-TLS oparty jest na dwustronnego uwierzytelniania bazującym na
certyfikatach X.509, co pozwala wyeliminować ataki MITM. Ponadto dynamicznie
generuje i odpowiednio rozprowadza pomiędzy klientami odpowiednio klucze publiczne
i prywatne służące do zabezpieczenia połączenia. Jedyną wadą EAP-TLS jest, że
wymaga się od dwóch stron ważnych certyfikatów, co powoduje trudności
administracyjne. Przykładowa wymiana certyfikatów została przedstawiona poniżej.
W momencie gdy punkt dostępowy zażąda RADIUS Access Request serwer
odpowiada klientowi swoim certyfikatem. Jeśli jest on zgodny z oczekiwaniami klienta
wówczas wysyła on swój certyfikat. Po poprawnym uwierzytelnieniu wysyłana jest
wiadomość EAP-Success.
EAP-TLS jest uważany za bezpieczną metodę uwierzytelniania. Jest szeroko stosowana i
dobrze przetestowana. Jest odporna na większość popularnych ataków.
Ostatnią grupą są metody z tunelowaniem. Główną zaletą tunelów jest to, że realizują
ochronę tożsamości. Używanie tunelów i metod tunelowych pozwala na ukrycie tożsamości
klienta poprzez schowanie odpowiedzi EAP-Response Identity w zabezpieczonym tunelu.
Ze względu na to, że w pierwszej fazie jest zestawiany tunel a dopiero w drugiej następuje
faktyczne uwierzytelnianie, metody te są tak samo bezpieczne jak EAP-TLS.
◦ EAP-TTLS jest rozwinięciem EAP-TLS. Proces uwierzytelniania przebiega tutaj w
dwóch fazach. W pierwszej serwer wstępnie uwierzytelnia klienta na podstawie
certyfikatów X.509. Jednak w tym przypadku wymagany jest wyłącznie certyfikat
serwera. Po wymianie certyfikatów zestawiany jest szyfrowany tunel. W fazie drugiej
przesyłane są już przez tunel dane potrzebne do uwierzytelnienia.
◦ EAP-PEAP - Jest to protokół bardzo podobnej funkcjonalności do EAP-TTLS. Został
zaproponowany przez firmy Microsoft, CISCO oraz RSA Security jako alternatywa
EAP-TTLS. Mimo że standard powstał już po ukazaniu się EAP-TTLS, zyskał dużą
popularność i jest szeroko implementowany, oczywiście również w systemach Microsoft
Windows. Jedyną różnicą pomiędzy TTLS a PEAP jest to, że PEAP w drugie fazie może
wyłącznie z metod EAP, natomiast TTLS może korzystać z innego protokołu
uwierzytelniania.