« poprzedni punkt | następny punkt » |
Sieć VPN to bezpieczny tunel pomiędzy komputerem zdalnego użytkownika a prywatną siecią organizacji przechodzący poprzez Internet. W tej chwili podstawowymi protokołami wykorzystywanymi do budowy VPN są:
Oba protokoły bazują na protokole PPP. PPP jest podstawowym elementem w obu protokołach oraz jedynym, który kapsułkuje przekazywane dane (tj. ładunki) w sieciach prywatnych. PPTP i L2TP dodają po prostu kolejną warstwę kapsułkowania do tunelowanych ładunków w sieci publicznej.
Protokół PPP w warstwie łącza danych modelu OSI został pierwotnie opracowany do kapsułkowania danych i przenoszenia ich pomiędzy dwoma punktami. Protokół PPP ma wiele zalet - m.in. uwierzytelnianie i kompresja - których nie zapewnia jego starszy kuzyn, czyli protokół SLIP (Serial Line Internet Protocol). Nadzbiór protokołu PPP zajmuje się obsługą połączeń: PPP LCP (Link Control Protocol) nawiązuje, konfiguruje, obsługuje i zakańcza połączenia pomiędzy dwoma punktami, PPP NCP (Network Control Protocol) nawiązuje i konfiguruje różne protokoły warstwy sieciowej w połączeniach PPP.
Uwierzytelnianie w połączeniach VPN przybiera dwie formy:
PPTP oraz L2TP kapsułkują i standardowo szyfrują dane przed ich przeniesieniem. Jednak przed rozpoczęciem kapsułkowania związanego z tunelowaniem występuje kapsułkowanie przez PPP. W kapsułkowaniu PPP pojedyncza jednostka danych jest umieszczana wewnątrz innej jednostki podczas przechodzenia przez kolejne warstwy modelu OSI. Dla przykładu, protokół TCP (w warstwie transportowej) jest kapsułkowany poprzez protokół IP (w warstwie sieciowej), który następnie jest kapsułkowany przez protokół PPP (w warstwie łącza danych).
Protokoły tunelowania są protokołami warstwy wyższej, które transportują zakapsułkowany ładunek. Protokół VPN kapsułkuje już wcześniej zakapsułkowany ładunek i przesyła go pomiędzy krańcami tunelu.
Protokół PPTP kapsułkuje ramki protokołu PPP) w datagramach IP przed ich transmisją w sieci opartej na protokole lP. Klienci PPTP stosują port docelowy TCP 1723 do utworzenia połączenia sterującego protokołu PPTP dla tunelu.
Protokół PPTP używa połączenia TCP zwanego połączeniem kontroli PPTP do tworzenia, utrzymywania i kończenia tunelu. Pakiety kontroli PPTP składają się z nagłówka IP, nagłówka TCP oraz komunikatu kontroli PPTP. Pakiet kontroli zawiera ponadto nagłówek i końcówkę warstwy łącza danych.
Oprócz połączenia sterującego PPTP, które protokół używa do utrzymania tunelu, PPTP korzysta również z łącza do tunelowania danych. Do kapsułkowania ramek PPP jako tunelowanych danych wykorzystywana jest zmodyfikowana wersja protokołu GRE (Generic Routing Encapsulation). Tunelowanie danych odbywa się podczas dwóch etapów kapsułkowania. Podczas tworzenia ładunku PPP dane przechodzą w dół poprzez kolejne warstwy modelu OSI, poczynając od warstwy aplikacji, a kończąc na warstwie łącza danych. Po utworzeniu ładunku dane przekazywane są z powrotem w modelu OSI i kapsułkowane przez protokoły wyższych warstw.
Po dotarciu danych do warstwy transportowej, protokół ten nie może przesłać ładunku, bowiem jest to zadanie, za które odpowiada warstwa łącza danych. PPTP zarządza zadaniami warstwy 2, które zwykle należą do protokołu PPP oraz dodaje nagłówek PPP i końcówkę (trailer) do struktury danych PPTP. PPTP szyfruje ładunek, następnie kapsułkuje go z nagłówkiem PPP, aby utworzyć ramkę warstwy łącza danych. PPTP w kolejnej fazie kapsułkuje ramkę PPP do postaci pakietu GRE (Generic Routing Encapsulation), który operuje na poziomie warstwy sieci. GRE udostępnia sposób kapsułkowania protokołów warstwy 3, takich jak IPX, AppleTalk i DECnet dla sieci lP. Brakuje w nim jednak możliwości konfigurowania sesji oraz zabezpieczeń. Dlatego stosowane jest połączenie sterujące PPTP, dzięki któremu można konfigurować oraz zabezpieczać sesje. Zastosowanie GRE jako metody kapsułkowania ogranicza wykorzystanie PPTP do sieci lP.
Po zakapsułkowaniu ramki PPP z nagłówkiem GRE protokół PPTP kapsułkuje ramkę z nagłówkiem lP. Zawiera on adres źródłowy i docelowy pakietu. Na zakończenie PPTP dodaje nagłówek PPP i końcówkę. System źródłowy przesyła następnie dane poprzez tunel. System docelowy usuwa z danych wszystkie nagłówki i końcówki aż dotrze do ładunku PPP. Na rys. 1. Przedstawiono ramkę protokołu PPTP, a na rys. 2. schemat procedury tworzenia tej ramki.
Rys. 1 Ramka protokołu PPTP
Rys. 2 Schemat procedury tworzenia ramki PPTP
Protokół L2TP to połączenie PPTP i protokołu L2F (Layer 2 Forwarding). PPTP zapewnia tunel dla protokołu PPP, zaś L2F tuneluje protokoły SLIP i PPP. Po zaprojektowaniu L2F przez Cisco Systems organizacja IETF zaleciła połączenie PPTP i L2F w jeden protokół, by uniknąć pomyłek i problemów ze współpracą. L2TP zawiera według wielu opinii najlepsze właściwości dostępne w PPTP oraz w L2F.
Jednym z istotniejszych udoskonaleń w L2TP jest możliwość uruchamiania tego protokołu nie tylko w sieciach opartych na protokole IP, lecz również w sieciach ATM, X.25 oraz Frame Relay. W Win2K obsługiwany jest wyłącznie protokół lP.
L2TP wykorzystuje do obsługi tunelowania ten sam format komunikatów jak w przypadku tunelowania danych. UDP to preferowany protokół warstwy transportowej dla L2TP. W implementacji L2TP Microsoftu komunikaty sterujące są szyfrowane ładunkiem PPP przesyłanym przez IP jako komunikaty UDP. Komunikaty L2TP zawieraj ą pole Next-Received oraz pole Next-Sent, które można porównać odpowiednio z polami TCP o nazwie Acknowledgement Number oraz Sequence Number.
Tak samo jak w przypadku tunelowania danych w ramach PPTP, tunelowanie danych L2TP rozpoczyna się od ładunku PPP. L2TP kapsułkuje ładunek PPP dodając nagłówek PPP i L2TP, w wyniku czego otrzymujemy pakiet zakapsułkowany przez L2TP. L2TP wykorzystuje port UDP 1701 zarówno dla portu źródłowego, jak i docelowego. W zależności od wybranej zasady IP Security, L2TP może zaszyfrować komunikat UDP oraz dodać nagłówek i końcówkę ESP protokołu IPSec. L2TP następnie kapsułkuje pakiet IPSec dodając nagłówek IP, który zawiera adres źródłowy i docelowy. Na końcu L2TP wykonuje drugie kapsułkowanie PPP w celu przygotowania danych do transmisji.
Kiedy komputer docelowy otrzymuje dane, przetwarzany jest nagłówek i końcówka PPP, a następnie usuwany jest nagłówek lP. Komputer korzysta z końcówki IPSec Authentication do uwierzytelnienia ładunku IP, a następnie przy użyciu nagłówka ESP IPSec deszyfruje pakiet.
W dalszej kolejności system przetwarza nagłówek UDP, po czym używa nagłówka L2TP do identyfikacji tunelu. Po tej operacji pozostanie tylko ładunek PPP, serwer zaś przetwarza pozostałe dane lub przekazuje je do właściwego systemu docelowego. Na rys. 3. Przedstawiono ramkę protokołu L2TP, a na rys. 4. schemat procedury tworzenia tej ramki.
Rys. 3 Ramka protokołu L2TP
Rys. 4 Schemat procedury tworzenia ramki L2TP
Zabezpieczenia PPTP i L2TP
Do uwierzytelniania w ramach PPTP stosowane są protokoły uwierzytelniania oparte na PPP, włączając w to EAP (Extensible Authentication Protocol), MSCHAP (Microsoft Challenge Handshake Authenti- cation Protocol), CHAP (Challenge Handshake Authentication Protocol), SPAP (Shiva Password Authentication Protocol) oraz PAP (Password Authentication Protocol). MSCHAP v. 2 oraz EAP- TLS (Transport Layer Security) to najbezpieczniejsze z wymienionych protokołów.
MPPE (Microsoft Point-to-Point Encryption) negocjuje szyfrowanie w połączeniu PPTP i może zostać wykorzystany wyłącznie z MSCHAP (w wersja l i 2) oraz EAP- TLS. MPPE pozwala na zastosowanie szyfrowania w oparciu o jeden z trzech kluczy o sile 40, 56 lub 128 bitów.
PPTP zmienia klucze szyfrowania wraz z każdym otrzymanym pakietem. MPPE został zaprojektowany pod kontem połączeń typu punkt-punkt, w których pakiety danych przychodzą w odpowiedniej kolejności oraz w których niektóre pakiety danych są tracone. W tego typu środowisku klucz szyfrowania jednego pakietu jest uzależniony od szyfrowania poprzedniego pakietu. W takiej konfiguracji środowisko VPN nie zadziała, gdyż pakiety często przychodzą nie po kolei. Dlatego PPTP szyfruje pakiety niezależnie od innych i stosuje numer sekwencji do zmiany klucza szyfrowania, dzięki czemu proces szyfrowania działa mimo braku informacji o poprzednich pakietach. Chociaż PPTP jest względnie bezpiecznym protokołem, nie jest on tak bezpieczny jak L2TP z IPSec, który zapewnia uwierzytelnianie na poziomie użytkownika i komputera, a także uwierzytelnianie oraz szyfrowanie.
Do uwierzytelnienia klienta, jak i serwera VPN, L2TP z IPSec używa certyfikatów lokalnych komputerów, uzyskanych z odpowiedniego urzędu certyfikacji (CA).
Kiedy L2TP z IPSec zakończy uwierzytelnianie komputerów rozpoczyna uwierzytelnianie na poziomie użytkownika. Możemy wybrać dowolny protokół uwierzytelniania PPP - nawet PAP, który przesyła nazwę użytkownika i hasło jawnym tekstem - a mimo to proces dalej jest bezpieczny, gdyż L2TP z IPSec szyfruje całą sesję. Możemy jednak spowodować, że uwierzytelnianie użytkownika będzie bezpieczniejsze dzięki zastosowaniu MS CHAP, który stosuje klucze szyfrowania oddzielne od szyfrowania na poziomie komputera.
L2TP z IPSec stosuje algorytm 3DES, więc szyfrowanie danych odbywa się na dużo wyższym poziomie niż w PPTP. Jeżeli wystarczy nam niższy poziom zabezpieczeń (który pozwala także zmniejszyć obciążenie komputera dodatkowymi operacjami), możemy wdrożyć DES.
L2TP z IPSec zapewnia również uwierzytelnianie danych. Do uwierzytelniania danych L2TP z IPSec wykorzystujemy HMAC (Hash Message Authentication Code) MD5. Jest to algorytm haszujący, który generuje l 28-bitowy kod do uwierzytelniania danych.
Kluczowe różnice między protokołem PPTP i L2TP są następujące:
« poprzedni punkt | następny punkt » |