VPN IKEv2 na routerze MikroTik dla systemów Windows i Android

Protokół IKEv2 jest częścią grupy protokołów IPsec. Cechują go m.in: wysoki poziom bezpieczeństwa oraz rozbudowane możliwości konfiguracji. Jest uważany (zaraz po OpenVPN) za najbezpieczniejszy protokół VPN. Niestety jego konfiguracja nie należy do najłatwiejszych, i to właśnie ją postaram się przybliżyć w tym artykule.


Poradnik był wykonany przy użyciu systemu RouterOS w wersji 6.46.3 (stable).

Założenia

W założeniu autoryzacja użytkowników będzie się odpytać przez użycie certyfikatów zamiast nazwy użytkownika, hasła i klucza współdzielonego.

Zakłam że w celu łączenia do serwera będziemy używać nazwy domenowej a nie bezpośrednio adresu IP ponieważ:

  • Duża część użytkowników posiada zmienny adres IP.
  • Uzyskanie nazwy domenowej nie jest rzeczą trudną a w dodatku bezpłatną – przykład TUTAJ.

Generowanie certyfikatów

Pierwszą rzeczą jaką musimy zrobić jest wygenerowanie certyfikatów. Finalnie będą trzy:

  • CA – certyfikat główny służący do podpisywania innych certyfikatów oraz sprawdzenia certyfikatu serwera przez klienta.
  • Serwera – ten certyfikat będzie wykorzystywany bezpośrednio przez serwer do komunikacji VPN.
  • Klienta – certyfikat klienta oprócz logicznego wykorzystania do szyfrowania transmisji będzie służył do autoryzacji klienta przez serwer.

W celu wygenerowania certyfikatów wchodzimy w RouterOS w menu System->Certificates i w pierwszej zakładce dodajemy nowy certyfikat.


Certyfikat CA

W zakładce General uzupełniamy:

  • Name – nazwa certyfikatu
  • Country – skrót kraju
  • State/Locality/Organization/Unit – pola opcjonalne
  • Common Name – nazwa podmiotu wystawiającego certyfikat
  • Key Site – 4096
  • Days Valid – można pozostawić wartość domyślną (1 rok) lub zwiększyć według potrzeb

Następnie przechodzimy do zakładki „Key Usage” zostawiając zaznaczone tylko „crl sign” i „key cert. sign” następnie klikamy Apply.

Aby wygenerować certyfikat klikamy Sign (upewniamy się że wybrany jest nasz CA) a następnie start. Po wyświetleniu napisu „done” certyfikat został wystawiony.


Certyfikat serwera

Zakładka General certyfikatu serwera wygląda identycznie z wyjątkiem nazwy certyfikatu, „Common Name” i „Subject Alt. Name” gdzie wpisujemy nazwę domenową serwera.

W zakładce „Key Usage” zaznaczamy: „digital signature”, „key encipherment”, „data encipherment” i „tls server”.

Podobnie jak przy certyfikacie CA klikamy w Sign wybieramy certyfikat serwera i w polu CA wybieramy wcześniej utworzony certyfikat CA. Po wyświetleniu napisu „done” certyfikat został wystawiony.


Certyfikat klienta

I w tym przypadku historia powtarza się po raz trzeci.

W zakładce General zmianie oprócz nazwy ulega wartość „Common Name” gdzie wpisujemy wartość charakteryzującą danego klienta. Przykładowo może to być adres e-mail.

I tak jak poprzednio klikamy w Sing wybieramy certyfikat serwera i w polu CA wybieramy wcześniej utworzony certyfikat CA. Po wyświetleniu napisu „done” certyfikat został wystawiony.


Po wygenerowaniu wszystkich certyfikatów należy się upewnić się czy każdy ma aktywną flagę Trusted (T). Jeśli tak nie jest należy wejść do danego certyfikatu i zaznaczyć ja w zakładce General.

Finalnie powinniśmy otrzymać taką listę certyfikatów:


Eksportowanie certyfikatów

Aby przenieść certyfikaty na klienta musimy je wyeksportować do pliku. Będzie to certyfikat CA oraz certyfikat klienta – jednak sposób ich eksportu się różni.

Certyfikat klienta eksportujemy kompleksowo (certyfikat i jego klucz prywatny). Robimy to wchodząc na niego i klikając Export lub na liście certyfikatów klikamy na niego prawym klawiszem myszy i wybieramy Export. Jako Type wybieramy PKCS12 i wpisujemy hasło którym zaszyfrowany będzie klucz prywatny certyfikatu.

Certyfikat CA eksportujemy wyłącznie w postaci samego certyfikatu (bez klucza prywatnego) ponieważ będzie on służył klientowi wyłącznie do potwierdzenia certyfikatu jakim przedstawi się serwer. Robimy to identycznie jak w przypadku certyfikatu klienta z są różnicą że wybieramy Type jako PEM i nie wpisujemy żadnego hasła.