IPSec IKEv2 + radius + Let’s Encrypt ROS7

W nowej wersji systemu operacyjnego firmy MikroTik dodano kilka nowych narzędzi lub technologii do tworzenia bezpiecznych tuneli.

Jedną z takich technologii jest protokół IPSec, który może wywołać panikę wśród niektórych użytkowników poprzez brak zrozumienia, jak go skonfigurować. Jednak taka konfiguracja jest skomplikowana tylko na pierwszy rzut oka. Zrobimy konfigurację takiego schematu dla użytkownika końcowego, czyli Road Warriora.

CHR w wersji 7.4 będzie używany jako VPN koncentrator z dodanym publicznym adresem IP i wpisanym adresem serwera do serwera DNS, aby można było korzystać z bezpłatnych certyfikatów generowanych za pomocą Let’s Encrypt. Przede wszystkim konieczne będzie zainstalowanie dodatkowej paczki user-manager do CHR.

Następnie dodamy certyfikat, który zostanie wygenerowany przez wbudowanego klienta do Let’s Encrypt.

/certificate/enable-ssl-certificate dns-name=ros7.mtik.pl

(ros7.mtik.pl trzeba podmienić na własną nazwę domeny).

Wynikiem wykonania polecenia będzie dodanie certyfikatu do systemu, jak widać na powyższym zrzucie ekranu.

Kolejnym krokiem jest konfiguracja serwera Radius, który znajduje się w paczce User manager.

Do zakładki Routery dodajemy adres routera lokalnego 127.0.0.1 (localhost) z odpowiednio złożonym hasłem (tu StrongPassword, które należy zastąpić własnym), aby serwer Radius zaczął przetwarzać zapytania od naszego klienta, czyli w tym przypadku sam od siebie.

Dodajmy użytkownika do serwera Radius w zakładce Users.

Dodajmy użytkownika do serwera Radius w zakładce Users

W tym przykładzie utworzono użytkownika z następującymi parametrami:

Nazwa: vpn

Hasło: vpn

Ilość jednoczesnych połączeń (Shared users): 1

I na koniec dodamy konfigurację klienta Radius.

konfiguracja klienta Radius

Na tym etapie otrzymaliśmy konfigurację serwera i klienta Radius, a także wygenerowaliśmy certyfikat, z którego korzysta serwer Radius i będziemy go później używać dla IPSec. Dodano również użytkownika do usługi VPN.

Kolejnym krokiem jest dodanie interface typu bridge z nazwą bridge-ikev2 oraz nadanie adresu IP 172.19.20.1/24.

interface bridge

Nie zapominamy o regule masquerade w tablicy Firewall/NAT.

reguła masquerade

Teraz możemy przystąpić do konfiguracji IPSec.

Pierwszym krokiem jest utworzenie dwóch konfiguracji dla Fazy 1 (IPsec Profile) i Fazy 2 (IPsec Proposal) w odpowiednich zakładkach menu IP —> IPsec, natomiast w konfiguracji drugiej fazy konieczne jest wyłączenie PFS pfs-group=none.

ipsec profile
ipsec proposal

Następnie dodajemy pulę adresów, z której klienci otrzymają adresy dla swoich urządzeń końcowych. Adresy powinny być w tym samym zakresie co adres naszego bridge-a.

dodanie puli adresów

Tworzymy mode-config, w parametrach którego należy określić wcześniej utworzoną pulę adresów, a także, jeśli to jest konieczne, można określić:

  • adresy sieci, do których powinni mieć dostęp użytkownicy (Split include, w którym jeśli określimy adres sieci 0.0.0.0/0, to wtedy ten tunel będzie trasą domyślną dla klienta)
  • serwer DNS.
ipsec mode config

Następnie dodajemy Policy group. Nie jest to wymagane, ale zalecane do oddzielenia naszych klientów podczas tworzenia szablonowych polityk.

tworzenie policy group

Tworzymy template polityki IPsec, na podstawie którego będą tworzone polityki dla klientów.

template ipsec policy 1
template ipsec policy 2

Następnie dodajmy peer-a, w konfiguracji którego zaznaczamy fazę 1 z poprzednio stworzonego profilu oraz Exchange Mode IKE2.

dodanie peer'a

Teraz dodajemy konfigurację identyfikacji naszego peer-a, czyli klienta zdalnego, korzystającego z uwierzytelniania za pomocą protokołu EAP, który z kolei będzie korzystał z serwera Radius.

ipsec peer identity

Należy również dodać więcej reguł do firewall/rules na łańcuchu forward, aby ruch tunelu IPsec był poprawnie przetwarzany.

firewall rule - forward
firewall rule - ipsec policy
frewall rule- action accept
firewall rule cd
frewall rule - ipsec policy out
frewall rule - action accept

Aby skonfigurować klienta, wystarczy podać adres serwera VPN, a także konto użytkownika na serwerze Radius.

Dla systemu MacOS konfiguracja wygląda następująco:

macos konfiguracja vpn
macos konfiguracja vpn cd
macos konfiguracja - authentication settings

Po udanym połączeniu możemy zobaczyć adres uzyskany z wcześniej utworzonej puli adresów oraz tablicę routingu naszego urządzenia.

macos - network connected view
macos - tablica routingu

Konfiguracja Windows 11 nie będzie bardziej skomplikowana niż MacOS.

Najpierw dodajmy połączenie VPN o parametrach wymienionych poniżej.

Podczas nawiązywania połączenia może pojawić się błąd:

win11 - connection error

W takim wypadku należy zainstalować w systemie pośredni certyfikat Let’s Encrypt (Intermediate Certificate, https://letsencrypt.org/certs/lets-encrypt-r3.der). Cały łańcuch poświadczeń jest dostępny pod adresem https://letsencrypt.org/certificates/

Certyfikat dodajemy automatycznie do Local maсhine.

win11- certificate info
win11 - certificate import wizard
win11 - certificate storage

Po dodaniu certyfikatu pośredniego połączenie powinno zostać skutecznie nawiązane:

win11 - connection succes

P.S. Dostęp do przykładowego CHR:

address: ikev2.mtik.pl

login: admin

hasło: brak