modified on 20 lip 2010 at 12:35 ••• 44 884 views

Interfejs/IPsec

Z MikroTik Wiki

Spis treści

Informacje ogólne

Specyfikacja

Wymagane pakiety: security

Wymagana licencja: Level1

Poziom menu: /ip ipsec

Standardy i technologie: IPsec

Wykorzystanie sprzętu: Zużywa sporo czasu procesora (Sugerowane użycie minimalnie Intel Pentium MMX lub AMD K6)

Opis

IPsec (IP Security) obsługuje bezpieczna (szyfrowaną, podpisaną elektroniczne) komunikację w sieciach IP.

Szyfrowanie

Po zmianie adresu źródła (NAT) pakietu (jeżeli potrzeba), ale przed ustawieniem go w kolejce interfejsu, baza profili IPsec decyduje, czy pakiet powinien być zaszyfrowany. Security Policy Database (SPD) jest listą reguł mająca dwie części:

  • Dopasowywanie pakietów - jedna po drugiej, wartości takie jak: źródło/cel pakietu, protokół, port, porównywane są z regułami.
  • Akcja - jeżeli reguła odnosi się do danego pakietu, to wykonywana jest akcja określona w regule:
    • brak - pakiet kierowany jest do interfejsu, jakby nie było IPsec
    • odrzuć - odrzuć pakiet
    • szyfruj - wykonaj transformacje IPsec na pakiecie

Każda reguła SPD może być wykonana z wieloma Skojarzeniami Aezpieczeństwa (Security Associations - SA), które określają parametry szyfrowania pakietu (klucz, algorytm, SPI).

Zwróć uwagę, że pakiet może być zaszyfrowany tylko, gdy istnieje odpowiednia regułą SA. Samo SA może być używane w różnych profilach, chyba, że profil neguje regułę. Przy ustawieniu reguły bezpieczeństwa SPD "level", użytkownik może decydować, co dzieje się, gdy nie ma odpowiedniego profilu SA dla reguły:

  • use - jeżeli nie ma poprawnego SA, wyślij pakiet niezaszyfrowany (jak reguła 'accept')
  • require - upuść pakiet i spytaj demona IKE, aby ustanowił nową SA.
  • unique - to samo co require, ale ustanów unikalną SA dla tego profilu (np. takie SA nie może być współdzielone z innymi profilami)

Deszyfrowanie

Gdy zaszyfrowany pakiet jest odebrany przez hosta lokalnego (po dst-nat i filtrze input), wybieranie jest odpowiednie SA w celu odszyfrowania pakietu (używając źródła pakietu, celu, protokołu bezpieczeństwa i wartości SPI). Jeżeli nie ma pasującego SA, pakiet jest odrzucany. Jeżeli jest odpowiednie SA pakiet jest deszyfrowany. Jeżeli proces deszyfracji ( lub autentykacji) przebiegł poprawnie jest "odbierany ponownie" - ponownie przechodzi przez dst-nat i routing (który decyduje co zrobić - przekazać dalej, czy miejscem docelowym jest sam router).

Zwróć uwagę, że przed łańcuchami firewalla forward i input pakiet nie odszyfrowany, zostaje porównany z odwróconym SPD w celu porównania z regułami. Jeżeli SPD wymaga deszyfracji (istnieje odpowiednie SA powiązane z pasującą regułą SPD), pakiet jest upuszczany. Jest to nazywane polityką sprawdzania ruchu przychodzącego.

Wymiana Klucza Internetowego

Internet Key Exchange (IKE) jest protokołem, który zapewnia autentykację materiału szyfrowanego dla struktury "Internet Security Association and Key Management Protocol" (ISAKMP). Istnieją inne projekty wymiany klucza, które działają z ISAKMP, ale IKE posiada najszersze zastosowanie. Razem są dobrym środkiem do zapewnienia autentykacji hostów i automatycznego zarządzania SA.

Przez większość czasu demony IKE nic nie robią. Są dwie możliwe sytuację, gdy są aktywowane:

  • Gdy wykryty jest ruch pasujący do reguły profilu, który musi być zaszyfrowany lub zautentykowany, ale profil nie ma żadnego SA. Profil informuje o tym demona IKE, który inicjalizuje połączenie ze zdalnym hostem.
  • Demon IKE odpowiada na zdalne połączenie

W obu przypadkach, obie strony zestawiają połączenie i wykonują 2 fazy:

  • Faza 1 - Obie strony uzgadniają algorytmy, które będą używane w wiadomościach IKE i autentykacji. Materiał kluczujący używany do dostarczania kluczy dla wszystkich SA. Generowana jest także ochrona wymiany ISAKMP pomiędzy hostami.
  • Faza 2 - Obie strony ustanawiają jedno lub więcej SA, które będą używane przez IPsec do deszyfracji danych. Wszystkie SA ustanowione przez demona IKE będą miały wartość długości życia (długość czasu, po którym SA staną się nieaktualne, lub ilość danych, który będą zaszyfrowane przez SA, lub obydwie liczby).

Istnieją dwie wartości długości życia - elastyczna i sztywna. Gdy SA osiąga swoją elastyczną wartość długości życia, demon IKE otrzymuje informację i zaczyna kolejną wymianę fazy 2 aby zastąpić SA nowym SA. Jeżeli SA osiągnie swoją sztywną długość życia, zostaje porzucony.

IKE can optionally provide a Perfect Forward Secrecy (PFS), which is a property of key exchanges, that, in turn, means for IKE that compromising the long term phase 1 key will not allow to easily gain access to all IPsec data that is protected by SAs established through this phase 1. It means an additional keying material is generated for each phase 2.

Generacja kluczy wymaga bardzo dużo obliczeń procesora. Dla przykładu, użycie grupy modp8192 może zająć kilka sekund na bardzo szybkim komputerze. Dzieje się to zazwyczaj raz na wymianę fazy 1, która odbywa się tylko raz pomiędzy parą hostów. PFS powoduje, że taka generacja zachodzi także przy wymianie fazy 2.

Grupy Diffie-Hellmana

Diffie-Hellman (DH) key exchange protocol allows two parties without any initial shared secret to create one securely. The following Modular Exponential (MODP) and Elliptic Curve (EC2N) Diffie-Hellman (also known as "Oakley") Groups are supported:

Grupa Diffie-Hellman'a Nazwa Odnośnik
Grupa 1 768-bitowa grupa MODP RFC2409
Grupa 2 1024-bitowa grupa MODP RFC2409
Grupa 3 grupa EC2N na GP(2^155) RFC2409
Grupa 4 grupa EC2N na GP(2^185) RFC2409
Grupa 5 1536-bitowa grupa MODP RFC3526

Ruch IKE

Aby uniknąć problemów z pakietami IKE, które pasują do reguły SPD i wymagają deszyfracji jeszcze nie ustawionym SA (które to ten pakiet próbuje ustawić), pakiety UDP pochodzenia lokalnego z portem źródłowym 500, nie są przetwarzane przez SPD. W ten sam sposób pakiety UDP o porcie docelowym 500 są dostarczane komputerowi lokalnemu i nie są przetwarzane przez porównanie ruchu przychodzącego (incoming policy check).

Procedura zestawiania

Aby włączyć IPsec z automatycznym przydzielaniem kluczy z IKE-ISAKMP trzeba skonfigurować wpisy policy, peer oraz proposal (opcjonalnie).

Dla ręcznego przydzielania kluczy trzeba skonfigurować wpisy policy oraz manual-sa.

Ustawienia profilu

Poziom menu: /ip ipsec policy

Opis

Tablicy profilu potrzebna jest do określenia czy ustawienia bezpieczeństwa mają być stosowane do pakietu.

Opis własności

action (none | discard | encrypt; default: accept) - określa jaka akcja zostanie wykonana na pakiecie, który pasuje do profilu

  • none - pakiet nie zostaje zmieniony
  • discard - porzuć pakiet
  • encrypt - zastosuj transformacje pakietu określoną w tym profilu oraz jego SA

dont-fragment (clear | inherit | set; default: clear) - Stan nie pofragmentowanego pola nagłówka IP

  • clear - wyczyść pole, dzięki czemu pakiety wcześniej oznakowane jako niefragmentowane mogą być fragmentowane. To ustawienie jest zalecane, ponieważ pakiety robią się większe, gdy zastosowany na nich zostanie protokół IPsec, więc duże pakiety z flagą 'nie fragmentuj' nie będą mogły przechodzić przez router.
  • inherit - nie zmieniaj pola
  • set - ustaw to pole, dzięki czemu każde pasowanie pakietu do reguły nie będzie fragmentowane. Opcja nie polecana.

dst-address (IP address/netmask:port; default: 0.0.0.0/32:any) - docelowy adres IP

dynamic (read-only: flag) - czy reguła została stworzona dynamicznie

in-accepted (integer) - jak dużo przychodzących pakietów zostało przepuszczonych przez profil bez próby deszyfracji

in-dropped (integer) - jak dużo przychodzących pakietów zostało opuszczonych przez profil bez próby deszyfracji

in-transformed (integer) - jak dużo przychodzących pakietów zostało odszyfrowanych (ESP) i/lub zweryfikowanych (AH) przez profil.

inactive (read-only: flag) - czy reguła jest nieaktywna (może się taka stać z powodu złej konfiguracji).

ipsec-protocols (multiple choice: ah | esp; default: esp) - określa jaka kombinacja protokołów AH i ESP będzie zastosowana na odpowiednim ruch. AH jest zastosowany po ESP - tym przypadku tryb tunelu ESP będzie zastosowany na trybie tunelowym i AH - w trybie ruchu transportowego. AH jest zastosowany po ESP - w tym przypadku tryb tunelu ESP będzie zastosowany po trybie tunelu i AH - w trybie transportowym.

level (unique | require | use; default: require) - określa co zrobić, jeżeli nie może być odnaleziona część SA dla tego profilu:

  • use - pomiń tą transformację, nie opuszczaj pakietów i nie pobieraj SA od demona IKE
  • require - upuść pakiet i pobierz SA
  • unique - upuść pakiet i pobierz unikalne SA, dzięki czemu zostanie zastosowane tylko dla tego konkretnego profilu

manual-sa (name; default: none) - nazwa szablonu manual-sa, który zostanie użyty do stworzenia SA dla tego profilu.

  • none - nie są ustawione ręcznie żadne klucze

out-accepted (integer) - jak dużo wychodzących pakietów przejdzie przez profil bez próby deszyfracji

out-dropped (integer) - jak dużo wychodzących pakietów zostanie upuszczonych przez profil bez próby deszyfracji

out-transformed (integer) - jak dużo wychodzących pakietów zostanie odszyfrowanych (ESP) i/lub podpisanych (AH)

ph2-state (read-only: expired | no-phase2 | established) - wskaźnik postępu uzyskiwania klucza

  • expired - są jakieś pozostałości z poprzedniej fazy 2. W ogólności podobne do no-phase2
  • no-phase2 - nie ma w tym momencie posiadanych kluczy
  • estabilished - odpowiednie istnieją odpowiednie SA i wszystko powinno działać poprawnie

priority (integer; default: 0) - profil żądania klasyfikatora. Większa liczba oznacza wyższy priorytet.

proposal (name; default: default) - nazwa deklarowanej informacji, która zostanie wysłana przez demona IKE w celu ustawienia SA dla tego profilu

protocol (name | integer; default: all) - protokół pakietu IP do porównania

sa-dst-address (IP address; default: 0.0.0.0) - Adres IP miejsca docelowego dla SA (zdalny host)

sa-src-address (IP address; default: 0.0.0.0) - Adres IP źródła SA SA source IP address (lokalny host)

src-address (IP address/netmask:port; default: 0.0.0.0/32:any) - Adres IP źródła

tunnel (yes | no; default: no) - określa czy używane jest tryb tunelowy

Uwagi

Wszystkie pakiety są enkapsulowane IPIP w trybie tunelowym, a ich nowe części nagłówka IP src-address- i dst-address' przyjmują takie same wartości jak sa-src-address i sa-dst-address tego profilu. Jeżeli nie korzystasz z trybu tunelu (lub korzystasz z trybu przezroczystego), to tylko pakiety, których adres źródłowy lub docelowy są takie same jak sa-src-address i sa-dst-address będą przetwarzane przez ten profil. Tryb przezroczysty będzie działać tylko dla pakietów, które pochodzą i są przeznaczone dla hostów IPsec (którzy ustanowili parametry bezpiecznego połączenia). Aby zaszyfrować ruch pomiędzy sieciami (lub siecią a hostem) trzeba użyć trybu tunelu.

Dobrze jest mieć pustą opcję dont-fragment, ponieważ zaszyfrowane pakiety są zawsze większe niż niezaszyfrowane i mogą wymagać fragmentacji.

Jeżeli używasz IKE do automatycznego ustanowienia SA, to profile obu routerów muszą do siebie pasować, dla przykładu src-address=1.2.3.0/27 na jednym routerze i dst-address=1.2.3.0/28 na drugim, nie są takie same i wtedy IKE nie będzie działać. Wartości adresów źródłowych na jednym routerze MUSZĄ być takie same jak wartości adresów docelowych na drugim i na odwrót.

Przykład

Aby dodać profil szyfrujący cały ruch pomiędzy dwoma hostami (10.0.0.147 i 10.0.0.148) należy:

[admin@MikroTik] ip ipsec policy> add sa-src-address=10.0.0.147 \
\... sa-dst-address=10.0.0.148 action=encrypt
[admin@MikroTik] ip ipsec policy> print
Flags: X - disabled, D - dynamic, I - inactive
 0   src-address=10.0.0.147/32:any dst-address=10.0.0.148/32:any protocol=all
     action=encrypt level=require ipsec-protocols=esp tunnel=no
     sa-src-address=10.0.0.147 sa-dst-address=10.0.0.148 proposal=default
     manual-sa=none priority=0

[admin@MikroTik] ip ipsec policy>

Aby zobaczyć statystyki profilu:

[admin@MikroTik] ip ipsec policy> print stats
Flags: X - disabled, D - dynamic, I - inactive
  0   src-address=10.0.0.147/32:any dst-address=10.0.0.148/32:any
      protocol=all ph2-state=no-phase2 in-accepted=0 in-dropped=0
      out-accepted=0 out-dropped=0 encrypted=0 not-encrypted=0 decrypted=0
      not-decrypted=0

[admin@MikroTik] ip ipsec policy>

Peery

Poziom menu: /ip ipsec peer

Opis

Konfiguracja ustawień peerów używana jest do zestawienia połączenia pomiędzy demonami IKE (faza 1 konfiguracji). To połączenie będzie później użyte podczas negocjowania kluczy oraz algorytmów dla SA.

Opis własności

address (IP address/netmask:port; default: 0.0.0.0/32:500) - prefiks adresów. Jeżeli adres zdalnego peera zgodny jest z prefiksem, to wtedy konfiguracja tego peera jest używana podczas autentykacji i ustanawiania fazy 1. Jeżeli kilka adresów peerów jest zgodnych z kilkoma wpisami konfiguracji, najbardziej specyficzny (z najwiekszą wartością netmask) zostanie użyty.

auth-method (pre-shared-key | rsa-signature; default: pre-shared-key) - metoda autentykacji

  • pre-shared-key - autentykacja poprzez podanie hasła wspólnego dla obu peerów
  • rsa-signature - autentykacja przy użyciu pary certyfikatów RSA

certificate (name) - nazwa certyfikatu po stronie lokalnej (podpisującego pakiety; certyfikat musi posiadać klucz prywatny). Potrzebny tylko, gdy używana jest metoda autentykacji przez podpis RSA.

dh-group (multiple choice: ec2n155 | ec2n185 | modp768 | modp1024 | modp1536; default: modp1024) - grupa Diffie-Hellman'a (silny szyfr)

enc-algorithm (multiple choice: des | 3des | aes-128 | aes-192 | aes-256; default: 3des) - algorytm szyfrowania. Algorytmy posortowane są według siły szyfru w porządku rosnącym.

exchange-mode (multiple choice: main | aggressive | base; default: main) - według RFC 2408, inny tryb wymiany fazy 1 ISAKMP. Nie używaj innych trybów niż główny, chyba że wiesz co robisz.

generate-policy (yes | no; default: no) - pozwala temu peerowi ustanowić SA dla nieistniejących profili. Takie profile tworzone są dynamicznie o długości życia równych SA. W ten sposób możliwe jest, np. stworzenie tuneli IPsec L2TM, lub innych, gdzie adres IP zdalnych peerów nie jest zdany w momencie konfiguracji.

hash-algorithm (multiple choice: md5 | sha1; default: md5) - algorytm haszowania. SHA (Secure Hash Algorithm) jest silniejszy, ale działa wolniej.

lifebytes (integer; default: 0) - czas życia fazy 1: określa jak dużo bajtów może zostać przetransferowanych zanim SA zostanie porzucony

  • 0 - Przedawnienie SA nie stanie się z powodu przekroczenia limitu bajtów

lifetime (time; default: 1d) - fczas życia fazy 1: określa jak długo SA będzie poprawne; SA zostanie porzucone po tym czasie.

nat-traversal (yes | no; default: no) - użyj mechanizmu Linux NAT-T aby rozwiązać problem niekompatybilności z routerami NAT pomiędzy peerami IPsec. Może to być użyte tylko z protokołem ESP (AH z założenia nie jest obsługiwane, jako oznaczanie kompletnych pakietów, włączając nagłówek IP, który jest zmieniony przez NAT, powodujący niepoprawną sygnaturę AH). Ta metoda enkapsuluje ruch IPsec ESP w potoki UDP w celu rozwiązania kilku mniejszych problemów, które powodują niekompatybilność ESP z NAT'em.

proposal-check (multiple choice: claim | exact | obey | strict; default: strict) - logika sprawdzenia długości życia fazy 2:

  • claim - bierze najkrótszy z proponowanych i skonfigurowanych czasów życia i informuje o tym inicjatora
  • exact - wymaga, aby długości życia były takie same
  • obey - przyjmij to, co zostało wysłane przez inicjatora
  • strict - jeżeli zaproponowany czas życia jest dłuższy niż domyślny, odrzuć proponowany, w przeciwnym przypadku przyjmij proponowany.

remote-certificate (name) - nazwa certyfikatu do autentykacji strony zdalnej (poprawność pakietów; nie jest wymagany klucz publiczny). Potrzebne tylko, gdy używana jest metoda sygnatur RSA

secret (text; default: "") - ciąg sekretny (w przypadku, gdy używany jest klucz autentykacyjny typu pre-shared). Jeżeli zaczyna się na '0x', traktowany jest jako wartość szesnastkowa.

send-initial-contact (yes | no; default: yes) - określa, czy wysyłać informację inicjalizującą IKE, czy czekać na stronę zdalną.

Uwagi

Algorytm szyfrowania AES ((Advanced Encryption Standard) jest dużo szybszy niż DES, więc jego użycie jest zalecane gdy to tylko jest możliwe. Ceną za prędkość AES jest to, że teoretycznie może zostać szybciej złamany, więc zleca się używanie AES-256 tam, gdzie potrzebne jest bezpieczeństwo, lub AES-128 gdzie ważna jest prędkość.

Obydwa peery MUSZĄ mieć te same algorytmy kodowania i autentykacji, grupę DH oraz tryb wymiany. Niektóry start sprzęt może obsługiwać tylko DES i MD5.

Powinieneś ustawić yes we fladze generate-policy tylko dla zaufanych peerów, ponieważ nie ma dla zestawionego profilu autentykacji. Aby chronić się przed możliwymi niechcianymi zdarzeniami, dodaj na szczycie listy profili, profile z action=none dla wszystkich sieci, które nie chcesz aby były szyfrowane. Od kiedy jest możliwość dodawania dynamicznych profili na dole listy, nie będą nadpisywać Twoich ustawień. Ewentualnie możesz zastosować priorytetowanie, aby zmusić niektóre profile, aby były zawsze aktywne.

Przykład

Aby zdefiniować nową konfigurację dla peera 10.0.0.147 z secret=gwejimezyfopmekun:

[admin@MikroTik] ip ipsec peer>add address=10.0.0.147/32 \
\... secret=gwejimezyfopmekun
[admin@MikroTik] ip ipsec peer> print
Flags: X - disabled
  0   address=10.0.0.147/32:500 auth-method=pre-shared-key
      secret="gwejimezyfopmekun" generate-policy=no exchange-mode=main
      send-initial-contact=yes nat-traversal=no proposal-check=obey
      hash-algorithm=md5 enc-algorithm=3des dh-group=modp1024 lifetime=1d
      lifebytes=0

[admin@MikroTik] ip ipsec peer>

Statystyki zdalnego peera

Poziom menu: '/ip ipsec remote-peers

Opis

To podmenu udostępnia Ci różne statystyki dotyczące zdalnych peerów, które aktualnie mają ustanowione połączenia fazy 1 z tym routerem. Pamiętaj, że jeżeli peer nie jest tutaj wyświetlony, nie oznacza to, że nie będzie z nim wymieniany ruch IPsec. Dla przykładu, ręcznie skonfigurowane SA nie będą tutaj wyświetlone.

Opis własności

local-address (read-only: IP address) - lokalne adresy ISAKMP SA

remote-address (read-only: IP address) - adresy IP peerów

side (multiple choice, read-only: initiator | responder) - pokazuje, która strona rozpoczęła połączenie

  • initiator - negocjacja fazy 1 została rozpoczęta przez ten router
  • responder - negocjacja fazt 1 została rozpoczęta przez peera

state (read-only: text) - stan negocjacji fazy 1 z peeerem

  • estabilished - normalny stan pracy

Przykład

Aby zobaczyć aktualnie zestawione SA:

[admin@MikroTik] ip ipsec> remote-peers print
  0 local-address=10.0.0.148 remote-address=10.0.0.147 state=established
    side=initiator
[admin@MikroTik] ip ipsec>

Zainstalowane SA

Poziom menu: /ip ipsec installed-sa

Opis

Ta usługa udostępnia informacje o zainstalowanych elementach bezpieczeństwa (security associations) włącznie z kluczami

Opis własności

add-lifetime (read-only: time) - elastyczny/sztywny czas przedawnienia liczony od zainstalowania SA

addtime (read-only: text) - czas, w którym SA zostało zainstalowane

auth-algorithm (multiple choice, read-only: none | md5 | sha1) - algorytmy autentykacji wykorzystywane w SA

auth-key (read-only: text) - klucz autentykacji zapisane w postaci ciągu szesnastkowego

current-bytes (read-only: integer) - ilość danych przedwarzanych przez algorytmy szyfrowania SA

dst-address (read-only: IP address) - adres docelowy SA pobrany z odpowiedniego profigu

enc-algorithm (multiple choice, read-only: none | des | 3des | aes) - algorytm szyfrowania używany w SA

enc-key (read-only: text) - klucz szyfrujący przestawiony w postaci ciągu szesnastkowego (nie stosowane w AH)

lifebytes (read-only: integer) - próg elastycznego/sztywnego czasu przedawnienia dla ilości przetworzonych danych.

replay (read-only: integer) - rozmiar okna odpowiedzi wyrażony w bajtach. Okno to ochrania odbiornik przez atakami odpowiedzi (replay attacks) poprzez odrzucanie starych lub zduplikowanych pakietów

spi (read-only: integer) - wartość SPI dla SA, przedstawiona w cyfrach szesnastkowych

src-address (read-only: IP address) - adres źródłowy SA pobrany z odpowiedniego profilu

state (multiple choice, read-only: larval | mature | dying | dead) - faza życia SA

use-lifetime (read-only: time) - elastyczny/sztywny czas przedawnienia liczony od pierwszego użycia SA

usetime (read-only: text) - czas, w którym SA zostało po raz pierwszy użyte

Przykład

Pojedynczy wydruk wygląda tak:

[admin@MikroTik] ip ipsec> installed-sa print
Flags: A - AH, E - ESP, P - pfs
  0 E   spi=E727605 src-address=10.0.0.148 dst-address=10.0.0.147
        auth-algorithm=sha1 enc-algorithm=3des replay=4 state=mature
        auth-key="ecc5f4aee1b297739ec88e324d7cfb8594aa6c35"
        enc-key="d6943b8ea582582e449bde085c9471ab0b209783c9eb4bbd"
        addtime=jan/28/2003 20:55:12 add-lifetime=24m/30m
        usetime=jan/28/2003 20:55:23 use-lifetime=0s/0s current-bytes=128
        lifebytes=0/0
        
  1 E   spi=E15CEE06 src-address=10.0.0.147 dst-address=10.0.0.148
        auth-algorithm=sha1 enc-algorithm=3des replay=4 state=mature
        auth-key="8ac9dc7ecebfed9cd1030ae3b07b32e8e5cb98af"
        enc-key="8a8073a7afd0f74518c10438a0023e64cc660ed69845ca3c"
        addtime=jan/28/2003 20:55:12 add-lifetime=24m/30m
        usetime=jan/28/2003 20:55:12 use-lifetime=0s/0s current-bytes=512
        lifebytes=0/0
[admin@MikroTik] ip ipsec>

Czyszczenie Tablicy SA

Nazwa polecenia: /ip ipsec installed-sa flush

Opis

Czasami po nieudanych/niezakończonych negocjacjach wymagane jest ręczne wyczyszczenie zainstalowanych SA, dzięki czemu SA mogą być renegocjowane. Ta opcja możliwa jest poprzez polecenie wyczyszczenia.

Opis własności

sa-type (multiple choice: ah | all | esp; default: all) - określa typy SA do wyczyszczenia

  • ah - usuwa wyłącznie protokoły AH z SA
  • esp - usuwa wyłącznie protokoły ESP z SA
  • all - usuwa obydwa protokoły

Przykład

Aby wyczyścić wszystkie zainstalowane SA:

[admin@MikroTik] ip ipsec installed-sa> flush
[admin@MikroTik] ip ipsec installed-sa> print
[admin@MikroTik] ip ipsec installed-sa>

Przykłady Aplikacji

Router MikroTik do routera MikroTik

Grafika:mtr_to_mtr.jpg

  • Przykład trybu transportowego używanego w automatycznym przydzielaniu kluczy ESP:

a) dla Router1:

            [admin@Router1] > ip ipsec policy add sa-src-address=1.0.0.1 sa-dst-address=1.0.0.2 \
            \... action=encrypt
            [admin@Router1] > ip ipsec peer add address=1.0.0.2 \
            \... secret="gvejimezyfopmekun"

b) dla Router2:

            [admin@Router2] > ip ipsec policy add sa-src-address=1.0.0.2 sa-dst-address=1.0.0.1 \
            \... action=encrypt
            [admin@Router2] > ip ipsec peer add address=1.0.0.1 \
            \... secret="gvejimezyfopmekun"
  • Przykład trybu transportowego z użyciem ESP z automatycznym przydzielaniem kluczy i automatycznym generowaniem profili na Router1 i statycznym na Router2:

a) dla Router1:

            [admin@Router1] > ip ipsec peer add address=1.0.0.0/24 \
            \... secret="gvejimezyfopmekun" generate-policy=yes

b) dla Router2:

            [admin@Router2] > ip ipsec policy add sa-src-address=1.0.0.2 sa-dst-address=1.0.0.1 \
            \... action=encrypt
            [admin@Router2] > ip ipsec peer add address=1.0.0.1 \
            \... secret="gvejimezyfopmekun"
  • Przykład trybu tunelowego z użyciem AH z ręcznym przydzielaniem kluczy:

a) dla Router1:

            [admin@Router1] > ip ipsec manual-sa add name=ah-sa1 \
            \... ah-spi=0x101/0x100 ah-key=abcfed
            [admin@Router1] > ip ipsec policy add src-address=10.1.0.0/24 \
            \... dst-address=10.2.0.0/24 action=encrypt ipsec-protocols=ah \
            \... tunnel=yes sa-src=1.0.0.1 sa-dst=1.0.0.2 manual-sa=ah-sa1

b) dla Router2:

            [admin@Router2] > ip ipsec manual-sa add name=ah-sa1 \
            \... ah-spi=0x100/0x101 ah-key=abcfed
            [admin@Router2] > ip ipsec policy add src-address=10.2.0.0/24 \
            \... dst-address=10.1.0.0/24 action=encrypt ipsec-protocols=ah \
            \... tunnel=yes sa-src=1.0.0.2 sa-dst=1.0.0.1 manual-sa=ah-sa1

IPsec pomiędzy dwoma routerami MikroTik z Maskaradą

Grafika:masq_mtr_to_masq_mtr.jpg 1. Dodaj reguły akceptowania i maskowania w SRC-NAT:

  • dla Router1:
            [admin@Router1] > ip firewall nat add chain=srcnat src-address=10.1.0.0/24 \
            \... dst-address=10.2.0.0/24 action=accept
            [admin@Router1] > ip firewall nat add chain=srcnat out-interface=public \
            \... action=masquerade
  • dla Router2:
            [admin@Router2] > ip firewall nat chain=srcnat add src-address=10.2.0.0/24 \
            \... dst-address=10.1.0.0/24 action=accept
            [admin@Router2] > ip firewall nat chain=srcnat add out-interface=public \
            \... action=masquerade

2. Skonfiguruj IPsec:

  • dla Router1:
            [admin@Router1] > ip ipsec policy add src-address=10.1.0.0/24 \
            \... dst-address=10.2.0.0/24 action=encrypt tunnel=yes \
            \... sa-src-address=1.0.0.1 sa-dst-address=1.0.0.2
            [admin@Router1] > ip ipsec peer add address=1.0.0.2 \
            \... exchange-mode=aggressive secret="gvejimezyfopmekun"
  • dla Router2:
            [admin@Router2] > ip ipsec policy add src-address=10.2.0.0/24 \
            \... dst-address=10.1.0.0/24 action=encrypt tunnel=yes \
            \... sa-src-address=1.0.0.2 sa-dst-address=1.0.0.1
            [admin@Router2] > ip ipsec peer add address=1.0.0.1 \
            \... exchange-mode=aggressive secret="gvejimezyfopmekun"

Router MikroTik z Routerem CISCO

Grafika:mtr_to_cisco.jpg Skonfigurujemy IPsec w trybie tunelowym w celu ochrony ruchu pomiędzy połączonymi podsieciami.

1. Dodaj peera (z parametrami fazy 1). DES i SHA1 zostaną użyte aby chronić ruch IKE

  • dla routera MikroTik :
[admin@MikroTik] > ip ipsec peer add address=10.0.1.2 \
\... secret="gvejimezyfopmekun" enc-algorithm=des
  • dla routera CISCO :
! Configure ISAKMP policy (phase1 config, must match configuration
! of "/ip ipsec peer" on RouterOS). Note that DES is default 
! encryption algorithm on Cisco. SHA1 is default authentication
! algorithm
crypto isakmp policy 9
 encryption des
 authentication pre-share
 group 2
 hash md5
 exit
            	
! Add preshared key to be used when talking to RouterOS
crypto isakmp key gvejimezyfopmekun address 10.0.1.1 255.255.255.255

2. Ustaw propozycję szyfrowania (propozycja fazy 2 - ustawienie, które będzie używane do szyfrowania danych), w celu używania DES do szyfrowania danych

  • dla routera MikroTik:
[admin@MikroTik] > ip ipsec proposal set default enc-algorithms=des
  • dla routera CISCO:
! Create IPsec transform set - transformations that should be applied to
! traffic - ESP encryption with DES and ESP authentication with SHA1
! This must match "/ip ipsec proposal"
crypto ipsec transform-set myset esp-des esp-sha-hmac
 mode tunnel                                        
 exit 

3. Dodaj regułę profilu, która będzie porównywać ruch pomiędzy podsieciami i wymaga szyfrowania z ESP w trybie tunelowym:

  • dla routera MikroTik:
[admin@MikroTik] > ip ipsec policy add \
\... src-address=10.0.0.0/24 dst-address=10.0.2.0/24 action=encrypt \
\... tunnel=yes sa-src=10.0.1.1 sa-dst=10.0.1.2
  • dla routera CISCO:
! Create access list that matches traffic that should be encrypted
access-list 101 permit ip 10.0.2.0 0.0.0.255 10.0.0.0 0.0.0.255
! Create crypto map that will use transform set "myset", use peer 10.0.1.1
! to establish SAs and encapsulate traffic and use access-list 101 to
! match traffic that should be encrypted
crypto map mymap 10 ipsec-isakmp
  set peer 10.0.1.1
  set transform-set myset
  set pfs group2
  match address 101
  exit
! And finally apply crypto map to serial interface:
interface Serial 0
  crypto map mymap
  exit

4. Przetestuj tunel IPsec

  • na routerze MikroTik możemy spojrzeć na listę zainstalowanych SA:
[admin@MikroTik] ip ipsec installed-sa> print
Flags: A - AH, E - ESP, P - pfs
  0 E   spi=9437482 src-address=10.0.1.1 dst-address=10.0.1.2
        auth-algorithm=sha1 enc-algorithm=des replay=4 state=mature
        auth-key="9cf2123b8b5add950e3e67b9eac79421d406aa09"
        enc-key="ffe7ec65b7a385c3" addtime=jul/12/2002 16:13:21
        add-lifetime=24m/30m usetime=jul/12/2002 16:13:21 use-lifetime=0s/0s
        current-bytes=71896 lifebytes=0/0
  1 E   spi=319317260 src-address=10.0.1.2 dst-address=10.0.1.1
        auth-algorithm=sha1 enc-algorithm=des replay=4 state=mature
        auth-key="7575f5624914dd312839694db2622a318030bc3b"
        enc-key="633593f809c9d6af" addtime=jul/12/2002 16:13:21
        add-lifetime=24m/30m usetime=jul/12/2002 16:13:21 use-lifetime=0s/0s
        current-bytes=0 lifebytes=0/0
            [admin@MikroTik] ip ipsec installed-sa>
  • dla routera CISCO:
cisco# show interface Serial 0
interface: Serial1
    Crypto map tag: mymap, local addr. 10.0.1.2
   local  ident (addr/mask/prot/port): (10.0.2.0/255.255.255.0/0/0)
   remote ident (addr/mask/prot/port): (10.0.0.0/255.255.255.0/0/0)
   current_peer: 10.0.1.1
    PERMIT, flags={origin_is_acl,}
   #pkts encaps: 1810, #pkts encrypt: 1810, #pkts digest 1810
   #pkts decaps: 1861, #pkts decrypt: 1861, #pkts verify 1861
   #pkts compressed: 0, #pkts decompressed: 0
   #pkts not compressed: 0, #pkts compr. failed: 0, #pkts decompress failed: 0
   #send errors 0, #recv errors 0
    local crypto endpt.: 10.0.1.2, remote crypto endpt.: 10.0.1.1
    path mtu 1500, media mtu 1500
    current outbound spi: 1308650C
    inbound esp sas:
     spi: 0x90012A(9437482)
      transform: esp-des esp-sha-hmac ,
      in use settings ={Tunnel, }
      slot: 0, conn id: 2000, flow_id: 1, crypto map: mymap
      sa timing: remaining key lifetime (k/sec): (4607891/1034)
      IV size: 8 bytes
      replay detection support: Y
    inbound ah sas:
    inbound pcp sas:
    outbound esp sas:
     spi: 0x1308650C(319317260)
      transform: esp-des esp-sha-hmac ,
      in use settings ={Tunnel, }
      slot: 0, conn id: 2001, flow_id: 2, crypto map: mymap
      sa timing: remaining key lifetime (k/sec): (4607893/1034)
      IV size: 8 bytes
      replay detection support: Y
    outbound ah sas:
    outbound pcp sas:

Router MicroTik i Linux FreeS/WAN

W tym scenariuszu mamy 2 prywatne sieci: 10.0.0.0/24 połączoną z MT oraz 192.168.87.0/24 połączoną z Linuksem. MT i Linux są połączone razem przez sieć publiczną 192.168.0.0/24:

Grafika:mtr_and_linux.jpg

  • Konfiguracja FreeS/WAN:
config setup
    interfaces="ipsec0=eth0"
    klipsdebug=none
    plutodebug=all
    plutoload=%search
    plutostart=%search
    uniqueids=yes

conn %default
    keyingtries=0
    disablearrivalcheck=no
    authby=rsasig

conn mt
    left=192.168.0.108
    leftsubnet=192.168.87.0/24
    right=192.168.0.155
    rightsubnet=10.0.0.0/24
    authby=secret
    pfs=no
    auto=add
  • Plik konfiguracyjny ipsec.secrets:
192.168.0.108 192.168.0.155 : PSK "gvejimezyfopmekun"
  • Konfiguracja routera MicroTik:
[admin@MikroTik] > /ip ipsec peer add address=192.168.0.108 \
\... secret="gvejimezyfopmekun" hash-algorithm=md5  enc-algorithm=3des \
\... dh-group=modp1024 lifetime=28800s

[admin@MikroTik] > /ip ipsec proposal auth-algorithms=md5 \
\... enc-algorithms=3des pfs-group=none

[admin@MikroTik] > /ip ipsec policy add sa-src-address=192.168.0.155 \
\... sa-dst-address=192.168.0.108 src-address=10.0.0.0/24 \
\... dst-address=192.168.87.0/24 tunnel=yes