IPsec XAuth, jako VPN dla mobilnych użytkowników

Z każdym rokiem coraz popularniejsze staje się świadczenie pracy zdalnej i konieczność posiadania dostępu do zasobów wewnętrznych sieci firmowych z zewnątrz. Od lat wykorzystywane są do tego różnego rodzaju technologie VPN. Do najpopularniejszych należą te z grupy PPP (Point to Point Protocol), m.in. PPTP (teraz już uznawane za niebezpieczne), L2TP (zwykle łączone z IPSec),  SSTP (w środowiskach, gdzie stacjami roboczymi są komputery z Microsoft Windows) lub OpenVPN. Ten ostatni w „pełnej” implementacji pozwala także na przesłanie do klienta statycznych tras routingu i adresu serwera DNS. Dzięki temu możliwe jest takie „skonfigurowanie” klienta, aby nie przekazywał całego ruchu do koncentratora, a jedynie ten związany z zdefiniowanymi podsieciami firmowymi.

Takiej możliwości nie ma niestety w implementacji OpenVPN w Mikrotik RouterOS. Czy to oznacza, że nie ma możliwości przesłania dodatkowych informacji gdy koncentratorem jest Mikrotik?

Z pomocą może przyjść IPSec XAuth mode-config. Brzmi skomplikowanie 😉 W tym tekście opowiem jak  krok po kroku przeprowadzić przez proces konfiguracji koncentratora oraz zaproponuję którego klienta warto użyć dla systemów MS Windows.

Zanim zaczniemy, kilka słów przypomnienia czym jest IPsec. Najogólniej ujmując, jest to zestaw protokołów wspierających bezpieczną komunikację w sieciach IP. W założeniach powstawał na potrzeby IPv6, lecz m.in. z racji na wolną adopcję następcy IPv4 znalazł swoje zastosowanie i w starszej wersji czwartej. Jego zadaniem jest zapewnienie dwóch rzeczy: integralności przesyłanych danych oraz poufności. Pierwsze jest wykonywane poprzez sumę kryptograficzną zabezpieczaną kryptograficznie. Drugie za pomocą szyfrowania z wykorzystaniem jednego z algorytmów blokowych. Warto zwrócić uwagę, że tworzący standard, w trakcie jego opracowywania, nie zapisali na stałe listy algorytmów. Wydaje się to mądrym posunięciem, pozwalającym w przyszłości na wymianę lub dodanie kolejnych bardziej złożonych i pewnych algorytmów.

Aby poprawnie i ze zrozumieniem skonfigurować tunel IPsec warto poznać jeszcze trochę teorii.

Tunele mogą działać w dwóch trybach: transport lub tunnel. Tryb transportowy dodaje pomiędzy nagłówek IP, a tcp/udp nagłówek IPsec. W tym wariancie szyfrowaniu podlega datagram od warstwy 4 modelu OSI. Drugi tryb opiera się o enkapsulację (opakowanie) całego pakietu IP. Dodawany jest dodatkowy nagłówek IP zawierający adresy IP zakończeń tunelu. Za nim znajduje się, analogicznie jak w wariancie transport mode, nagłówek IPsec. Dzięki temu ochronie podlega także pierwotna informacja o adresacji IP (gdy ktoś przechwyci ruch nie jest w stanie odczytać jakie hosty faktycznie prowadzą komunikację).

Tryb transportowy

Tryb transportowy

Tryb tunelowy

Tryb tunelowy

Warto prześledzić także diagram packet-flow pokazujący jak dane obsługiwane są przez router. Jego poznanie pozwoli na zrozumienie, gdzie dochodzi do zaszyfrowania i odszyfrowania ruchu oraz na jakiej podstawie koncentrator decyduje jaki ruch obsłużyć za pomocą IPsec, a który nie.

diagram packet-flow pokazujący jak dane obsługiwane są przez router

Gdy klient IPsec znajduje się za NAT, wykorzystuje się dodatkowo port udp/4500. Służy on do enkapsulacji ruchu pomiędzy końcówkami (NAT-Traversal).

Do poprawnego działania IPsec konieczne jest dodanie reguł firewall.

/ip firewall filter

# udp/500 – wykorzystywany w IKE

add action=accept chain=input dst-port=500 protocol=udp

# udp/4500 – Konieczny gdy stosowany jest NAT-Traversal

add action=accept chain=input dst-port=4500 protocol=udp

# protokół warstwy 4 OSI (alternatywnie AH. AH jest rzadko wykorzystywane, pozwala na zapewnienie integralności, nie jest możliwe z NAT)

add action=accept chain=input protocol=ipsec-esp

Komunikacja w tunelu IPsec wymaga poprawnego zestawienia dwóch faz. Zapewniają one uwierzytelnienie i następnie uzgodnienie metod zabezpieczenia transmisji. W tym tekście nie będą omawiane szczegóły dotyczące fazy 1 i 2. Należy jednak pamiętać, że ustawienia muszą pozwalać na wynegocjowanie wspólnych akceptowalnych algorytmów i parametrów połączenia.

Po takim wstępie przejdźmy do konfiguracji. Zakładam, że router jest już wstępnie skonfigurowany do pracy poprzez m.in. ustawione interfejsy WAN, LAN i NAT.

Większość konfiguracji będzie przeprowadzana w oknie IP->IPSEC

okno ip->ipsec
okno ipsec

Do konfiguracji posłużą nam okienka:

  1. Tworzymy grupę (zostanie wykorzystana później)
tworzymy ipsec group

2. W konfiguracji przeznaczonej dla klientów mobilnych nie znamy adresu, z którego będzie następowało połączenie.  

3. Jako tryb wybieramy „pre shared key xauth”

4. Konfigurujemy teraz koncentrator (w nomenklaturze IPsec – responder). W związku z tym zaznaczamy „passive”

5. Podajemy współdzielony klucz IPsec

konfiguracja ipsec peer
  1. Wybieramy template dla automatycznie generowanych policy
  2. Określamy, że policy ma generować się automatycznie („port strict”)
  3. Wskazujemy konfigurację, którą będziemy przesyłać do klientów
  4. Odznaczamy „send initial contact” – ponieważ jesteśmy responderem
wybieramy template
  1. Określamy parametry zabezpieczenia fazy pierwszej.
  2. Zaznaczamy NAT Traversal

Uwaga: powinniśmy możliwie mocno zabezpieczyć fazę 1. Faza ta zabezpiecza fazę 2.

ipsec peer profile

Teraz należy utworzyć szablony dla IPsec policy

  1. Adresacja źródłowa to adresacja sieci LAN
  2. Adresacja docelowa to adresacja, w której będą klienci VPN
  3. Zaznaczamy „template”
  4. Wskazujemy grupę dla której ta policy będzie stosowana
tworzymy szablon dla ipsec policy
  1. Zaznaczamy „encrypt”
  2. Wybieramy „esp”
tworzymy szablon dla ipsec policy

3. Określamy parametry dla fazy 2

3.	Określamy parametry dla fazy 2

Kolejnym krokiem jest utworzenie IP->Pool. Z niej będą przydzielane adresy dla użytkowników.

utworzenie IP->Pool

Teraz pozostało jeszcze przygotowanie konfiguracji jakie będą przesyłane do klientów i samej bazy użytkowników.

  1. Wybieramy tryb „responder”
  2. Wybieramy pulę z jakiej będą przydzielane adresy IP
  3. Address Prefix Length – maska przydzielona klientowi dla połączenia VPN
  4. Spit Include – służy do określenia tras jakie będą przesyłane do klienta
  5. Określamy adres serwera DNS jaki ma otrzymać klient (system DNS prześle adresy które ma sam koncentrator (zakładka IP->DNS))
ipsec mode config

Aplikacje klienckie i wsparcie dla różnych systemów operacyjnych:

IPsec XAuth mode-config jest dość dobrze wspierany dla większości systemów, w tym także dla systemów dla urządzeń mobilnych.

Dla klientów z Microsoft Windows osobiście polecam aplikację Shrew Client. Jest to dość wiekowa, ale działająca stabilnie i posiadająca wiele możliwości konfiguracji, w tym zapisania i zaimportowania ustawień tuneli. Dobrze się sprawdza w codziennym użyciu i nie sprawia problemów. Można ją pobrać na stronie: https://www.shrew.net/download

Konfiguracja klienta jest prosta i intuicyjna. Poszczególne kroki znajdują się na poniższych zrzutach ekranu. W większości przypadków nie wymaga podania danych we wszystkich prezentowanych zakładkach, a opcja auto działa poprawnie.

konfiguracja VPN site
konfiguracja VPN site
konfiguracja VPN site
konfiguracja VPN site
konfiguracja VPN site
konfiguracja VPN site

Poprawne połączenie skutkuje pojawieniem się okna:

okno połączenia vpn

Dodatkowo, za pomocą poleceń ipconfig /all oraz route print można zweryfikować, czy konfiguracja XAuth mode-config została także przesłana.

okno terminala
okno terminala - opcje połaczenia ethernet

Podsumowując, zachęcam do sprawdzenia i wzięcia pod uwagę IPsec XAuth jako jednej z możliwości dostępu dla użytkowników mobilnych.