Rafał Rudewicz

27 września 2019

Inna Sieć Newsletter


IPsec VPN

Security | 3 Komentarze

IP security lub w skrócie IPsec to zbiór narzędzi do stworzenia VPN'a szytego na miarę Twoich potrzeb. Poznaj podstawy teoretyczne stojące za tym protokołem.

i 3 Spis treści

Bezpieczeństwo jest jednym z kluczowych czynników branych pod uwagę, podczas projektowania sieci komputerowych. Na nic nam się zda, efektywnie skonfigurowany routing oraz wydajny LAN, kiedy nasze dane nie będą odpowiednio zabezpieczone.

Stworzenie odpowiednich warunków jest jeszcze trudniejsze, gdy mamy kilka lokacji, które muszą się ze sobą komunikować poprzez niezabezpieczoną sieć, jaką jest internet.

W takim wypadku jest nam szczególnie potrzebne narzędzie, dzięki któremu zyskamy pewność, że nasze dane nie zostaną odczytane ani nie zostaną zmienione przez osoby niepowołane.

Jak tego dokonać? Odpowiedź jest jedna, stosować VPN! Rozwiązań jest co najmniej kilka i dziś przyjrzymy się IPSec!

Ipsec – Ip Security

IP Security lub w skrócie IPSec, to jedno z najchętniej stosowanych rozwiązań VPN. Stanowi zestaw narzędzi – framework – z których możemy dowolnie wybierać poszczególne elementy. Dzięki czemu mamy, spore możliwości konfiguracyjne. Jednak niezależnie od wybranego wariantu, funkcjonalny VPN musi zapewnić cztery podstawowe wartości:

  • Poufność – Zapewniana jest przez szyfrowanie. Komunikacja jest zrozumiała jedynie dla nadawcy i odbiorcy, znających sposób na odszyfrowanie wiadomości.
  • Integralność danych – Realizowana przez haszowanie (tworzenie skrótu) lub użycie Hashed Message Authentication Code (HMAC), aby sprawdzić, czy dane odebrane, są identyczne z tymi, które zostały wysłane.
  • Uwierzytelnianie – Oferuje częściową gwarancję, że odbiorca – i nadawca – jest tym, za kogo się podaje. Możemy to osiągnąć, korzystając z uwierzytelnienia zaraz po rozpoczęciu komunikacji, na bazie uzgodnionych kluczy (pre-shared keys, PSK) lub podpisów cyfrowych. Drugą opcją jest ciągłe uwierzytelnianie dwóch stron transmisji przy użyciu HMAC.
  • Ochrona przed powtarzaniem – Wszystkie pakiety wysyłane poprzez VPN są numerowane, po utworzeniu tunelu. W przypadku próby ponownego użycia pakietu urządzenie odbierające go odrzuci.

PROTOKÓŁ IKE (INTERNET KEY EXCHANGE)

Protokół IKE (Internet Key Exchange)  jest stosowany w IPsec do uzgadniania i ustanawiania tuneli VPN. IKE jest strukturą zapewnianą przez protokół ISAKMP ( Internet security Association and Key Management Protocol ISAKMP) i części dwóch innych kluczowych protokołów zarządzania, Oakley i Secure Key Exchange Mechanism (SKEME)IKE posiada 2 fazy:

  • W fazie 1 IKE, urządzenia nawiązujące połączenie IPsec wybierają jeden z przygotowanych zestawów zabezpieczeń i wzajemnie się uwierzytelniają. W skład takiego zestawu wchodzi:
    • Algorytm szyfrowania: DES, 3DES lub AES
    • funkcja haszowania: MD5 lub SHA
    • Rodzaj autentykacji: PSK, kod jednorazowy RSA lub certyfikat RSA
    • Grupa Diffiego-Hellmana: im wyższa, tym lepsza, np. grupy IKE 14 i 24 używają 2048-bitowego DH.
    • Czas ważności tunelu (lifetime of connection) – To jest jedyny parametr, który nie musi się zgadzać! W takim wypadku wybierany jest najkrótszy czas
  • W fazie 2 IKE urządzenia uzgadniają metariał do tworzenia kluczy i algorytmy do szyfrowania danych przesyłanych przez tunel IPsec.

Dwie wersje IKE:

  • IKEv1 – Zdefiniowane w RFC 2409, Internet Key Exchange
  • IKEv2 – Zdefiniowane w RFC 4306, Internet Key Exchange (IKEv2) Protocol

W IKEv2 rozszerzono funkcję dynamicznej wymiany klucza oraz uwierzytelniania urządzeń. Uproszczono przepływ danych oraz wprowadzono środki umożliwiające naprawienie słabych punktów protokołu IKEv1. Różnice IKEv2 w stosunku do IKEv1 są następujące:

  • W IKEv2 w fazie 1 mamy jedną wymianę pary komuników, nie ma już 2 trybów (agresywnego i głównego).
  • W IKEv2 w fazie 2 zachodzi prosta wymiana dwóch zamiast min. 3 par wiadomości.

Protokół Diffiego Hellmana

Protokół Diffiego Hellmana jest używany w celu generowania współdzielonego, tajnego materiału do tworzenia kluczy (klucze symetryczne). Dzięki temu jesteśmy w stanie w fazie 1 IKE przesłać poprzez internet nasze klucze publiczne w formie nie zaszyfrowanej, a mimo pozwolą nam one później na bezpieczną, szyfrowaną komunikację. Warto wspomnieć, że algorytm jest asymetryczny, ale klucze wynikowe są symetryczne. Działa to mniej więcej tak jak na poniższym obrazku.

Ipsec allgorytm diffiego hellmana

Alicja oraz Bob generują po parze kluczy, prywatnym oraz publicznym. Następnie łącząc oba klucze, tworzą swój własny sekret, który jest następnie przekazywany drugiej stronie jako materiał do utworzenia wspólnego sekretu, którym będą szyfrować komunikacją. Tak w dużym uproszczeniu działa ten algorytm, jego moc opiera się w dużej mierze na dobrze długości kluczy, im będą dłuższe tym, trudniej będzie złamać sekret Alicji i Boba.

Nagłówki IPsec

Do implementacji IPsec możemy wykorzystać dwa protokoły warstwy 4 ESP (IP protocol 50)  i AH (IP protocol 51). Z uwzględnieniem, że AH Authentication Header jest również praktycznie nie wykorzystywany, ponieważ nie zapewnia szyfrowania komunikacji. ESP Encapsulating Security Payload stosowany jest do szyfrowania oraz częściowego uwierzytelniania danych. W przypadku stosowania NAT-T ten nagłówek jest ukryty za nagłówkiem UDP.

Tryby połączenia VPN

W przypadku połączeń VPN mamy do czynienia z dwoma podstawowymi typami połączeń Tunnel mode oraz Transport mode. 

  • Tryb transportowy – W tym trybie połączenie jest ustanowione pomiędzy prawdziwymi adresami nadawcy i odbiorcy. W przypadku podejrzenia pakietu w transporcie atakujący zna dane odbiorcy i nadawcy, ale nadal dzięki szyfrowaniu nie zna zawartości pakietu.
  • Tryb tunelowy – W tym trybie prawdziwy adres nadawcy i odbiorcy jest ukryty za adresami urządzeń pośredniczących. W odróżnieniu od tryby transportowego do komunikacji nie jest potrzebne bezpośrednie połączenie urządzeń końcowych.

INICJALIZACJA SITE-TO-SITE:

  1. Peer VPN gateway inicjuje sesję do zdalnego peera VPN gateway
  2. ISAKMP/IKE Faza 1 negocjacja parametrów połączenia dla fazy 1 (tunel managementowy)
    1. ISAKMP/IKE wykorzystuje port UDP 500 (CISCO), inni vendorzy mogą korzystać z losowo generowanych portów 1023+
  3. Diffie-Hellman jest wykorzystany do bezpiecznej wymiany kluczy dla algorytmów szyfrujących i funkcji haszujących HMAC
  4. Oba urządzenia (VPN gateway) wzajemnie potwierdzają swoją tożsamość
  5. ISAKMP/IKE Faza 2 peery negocjują parametry i kluczowe informacje do zabezpieczenia (dane przesyłane poprzez tunel utworzony w fazie 1 lub poprzez ponowne wykorzystanie Diffie-Hellmana)
  6. Zakończenie tworzenia tunelu fazy 2, rozpoczęcie przysyłania danych
  7. Ewentualne odtworzenie tuneli fazy 1 lub 2 po wygaśnięciu czasu ważności (expire of lifetime).

INICJALIZACJA REMOTE ACCESS-TO-SITE:

  1. Klient VPN inicjuje sesję do zdalnego peera VPN gateway
  2. ISAKMP/IKE Faza 1 negocjacja parametrów połączenia dla fazy 1 (tunel managementowy)
    1. ISAKMP/IKE wykorzystuje port UDP 500 (CISCO), inni vendorzy mogą korzystać z losowo generowanych portów 1023+
  3. Diffie-Hellman jest wykorzystany do bezpiecznej wymiany kluczy dla algorytmów szyfrujących i funkcji haszujących HMAC
  4. Oba urządzenia (VPN gateway) wzajemnie potwierdzają swoją tożsamość
  5. OPCJONALNE! Uwierzytelnienie użytkownika, dla IPsec jest wykorzystywany XAUTH. VPN Gateway sprawdza nazwę użytkownika i hasło
  6. Implementacja Ipsec remote access pozwala przesłać „policy information”. W przypadku zestawienia połączenia pomiędzy dwoma różnymi vendorami istnieje możliwość, że klient nie zrozumie otrzymanych informacji. Poniżej skrócona lista możliwych do przekazania danych:
    1. Wewnętrzny (internal LAN) lub logiczny adres IP
    2. Typ połączenia (client lub network/LAN extension)
    3. DNS nazwę domeny
    4. adres serwera DNS
    5. adres serwera WINS
    6. polityki split tunneling
    7. polityki firewalla
    8. polityki split DNS
    9. listę zapasowych adresów VPN Gateway’s
  7. OPCJONALNE!  Możliwe jest reverse route injection (RRI). Klient może rozgłosić trasy routingu do VPN gatewaya, który je rozpropaguje dalej w sieci wewnętrznej
  8. ISAKMP/IKE Faza 2 peery negocjują parametry i kluczowe informacje do zabezpieczenia (dane przesylane poprzez tunel utworzony w fazie 1 lub poprzez ponowne wykorzystanie Difie-Hellmana)
  9. Zakończenie tworzenia tunelu fazy 2, rozpoczęcie przysyłania danych
  10. Ewentualne odtworzenie tuneli fazy 1 lub 2 po wygaśnięciu czasu ważności (expire of lifetime)

ISAKMP/IKE Faza 1

Main modeW tym trybie przeprowadzane są trzy dwukierunkowe wymiany pakietów = łącznie wymieniane jest 6 pakietów.

  1. Peery negocjują jak zabezpieczyć połączenie fazy 1
  2. Peery używają protokołu Diffiego Hellmana do wymiany kluczowych informacji
  3. Peery uwierzytelniają siebie nawzajem (PSK/RSA)

 Aggresive modeW tym trybie mają miejsce wyłącznie dwie dwukierunkowe wymiany pakietów

  1. Peery negocjują zabezpieczenia połączenia fazy pierwszej oraz przesyłają klucze publiczne DH, dane identyfikujące oraz rezultat weryfikacji
  2. Potwierdzenie otrzymania pakietów z pierwszej wymiany oraz potwierdzenie akceptacji warunków, oraz utworzenia tunelu

ISAKMP/IKE Faza 2

Faza 2 IKE ma tylko jeden tryb Quick mode. Ten tryb definiuje, jak utworzone zostanie bezpiecznie połączenia do przesyłanie danych:

  • Negocjuje parametry bezpieczeństwa dla połączenia fazy drugiej
  • Okresowe odnowienie kluczowych informacji

Tryby połączenie klienta

Client mode

W tym trybie klient otrzymuje wewnętrzny adres IP od VPN gateway’a. Jeśli klientem jest fizyczne urządzenie np. mały router SOHO, w takim wypadku to urządzenie dokonuje translacji PAT (port/address translation) dla urządzeń w swojej sieci LAN.

 Z punktu widzenia sieci VPN wszystkie urządzenia za klientem VPN posiadają ten sam adres IP – otrzymany z puli DHCP VPN gateway’a. 

W każdym oddziale możliwe jest wykorzystanie tej samej puli adresacji. W trybie klienckim tunel do VPN gatewaya jest podnoszony manualnie lub przez dowolny ruch wychodzący od klienta, ponieważ klient musi pobrać reguły split tunnelingu (która część ruchu ma być filtrowana, a która nie).
Ipsec tryb client mode

Lan Extension mode

Ten tryb symuluje połączenie site-to-site jednak z punktu widzenia VPN gateway’a na drugim końcu tunelu nadal jest klient. Pozwala to na zaaplikowanie wszystkich ustawień policy information dla grupy urządzeń, oraz w odróżnieniu od połączenia w trybie klienckim inicjowanie tunelu jest możliwe od strony gateway’a, jak również możliwe jest nawiązanie bezpośredniego połączenia do urządzeń w SOHO z powodu braku translacji PAT. W takim modelu wszystkie adresy w danej sieci VPN muszą być unikatowe.

Ipsec tryb lan extension

site to site – s2s

Ten typ połączenia pozwala na bezpieczne połączenie dwóch lub więcej lokalizacji poprzez niezabezpieczoną sieć zewnętrzną na przykład internet. Urządzenia brzegowe w każdej lokalizacji zestawiają bezpieczny tunel, a całość działania VPN jest transparentna dla użytkownika. Najczęściej VPN site to site jest utożsamiany z L2L, czyli LAN to LAN.

Tryb site to site

IPsec konfiguracja

Przykładowa konfiguracja IPsec przedstawia sposób połączenia site to site, czyli umożliwimy bezpieczną, szyfrowaną komunikację pomiędzy Bydgoszczą i Toruniem.

Ipsec site to site

Konfiguracja routera Bydgoszcz

crypto isakmp policy 10 - Tworzymy politykę dla Fazy pierwszej 
 encr aes 256 - wybieramy algorytm szyfrowania
 authentication pre-share - wybieramy sposób uwierzytelnienia
 group 5 - wybieramy grupę DH
 lifetime 3600 - wybieramy czas ważności tunelu
!
crypto isakmp key cisco address 10.2.0.2 - wybieramy hasło oraz podajemy adres peera dla IPsec
!
crypto ipsec transform-set TRANSFORM_SET_1 esp-aes 256 esp-sha-hmac - Tworzymy politę dla fazy drugiej
!
access-list 100 permit ip 192.168.1.0 0.0.0.255 192.168.3.0 0.0.0.255 - Tworzymy access listę która określa jaki ruch wpuszczać do tunelu IPsec
!
crypto map STS_VPN 10 ipsec-isakmp - tworzymy crypto mapę która zepnie razem wszystkie wcześniej przygotowane elementy
 set peer 10.2.0.2 - określamy peera dla bezpiecznej komunikacji
 set transform-set TRANSFORM_SET_1 - wybieramy zestaw transformacji
 match address 100 - wybieramy access-listę
!
interface FastEthernet0/0 - wybieramy interfejs na którym ma działać IPsec
 crypto map STS_VPN - przypinamy crypto mapę do interfejsu

Konfiguracja routera Toruń

crypto isakmp policy 10 
encr aes 256
authentication pre-share group 5
lifetime 3600
!
crypto isakmp key cisco address 10.1.0.1
!
crypto ipsec transform-set TRANSFORM_SET_1 esp-aes 256 esp-sha-hmac
!
crypto map STS_VPN 10 ipsec-isakmp set peer 10.1.0.1
set transform-set TRANSFORM_SET_1
match address 100
!
interface FastEthernet0/0 crypto map STS_VPN
Rafał Rudewicz

Rafał Rudewicz

Specjalizuję się w rozwiązaniach Enterprise oraz Service Provider. Projektuję, wdrażam oraz naprawiam sieci dla największych firm na świecie.

3 komentarze

  1. Michal

    Bardzo dobrze opisane, zrozumiałe dla laika i osoby znającej temat.

    Odpowiedz
  2. Mnichu

    Mogę się mylić, ponieważ dopiero wgryzam się w temat.
    Moim zdaniem na rysunku dot. protokołu Diffiego – Hellmana powinno być:
    Alicja: klucz publiczny Boba + klucz prywatny Alicji
    Bob: klucz publiczny Alicji + klucz prywatny Boba
    Co po wymianie daje wspólny sekret?

    Odpowiedz
    • Rafał Rudewicz

      Cześć,
      Masz rację. Bob i Alicja wymieniają między sobą klucze publiczne, która następnie łączą z własnym kluczem prywatnym, w wyniku czego powstaje wspólny sekret. Wspólny sekret służy do szyfrowania wiadomości w ramach IPsec, zamiast szyfrowania własnymi kluczami.

      Odpowiedz

Wyślij komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *