IKEv2/IPsec VPN, Mikrotik i udaljeno spajanje klijenata

Vrijeme čitanja: 21 min

IKEv2/IPsec VPN veza je trenutno jedan od najsigurnijih načina privatne komunikacije preko javnog Interneta. IKEv2/IPsec nije protokol kao ostale VPN veze, već je to skup (Framework) više raznih sigurnosnih dijelova (protokola). Sav taj skup pojedinačnih dijelova je ono što ga čini trenutno najboljim odabirom za VPN sigurnost. No to ga ujedno čini da ga je i teže implementirati jer treba poznavati što svi ti dijelovi rade i kako ih koristiti. Zbog toga ga mnogi ne koriste već koriste neke slabije VPN protokole koje je jednostavnije za implementirati a koji ipak daju solidnu dozu sigurnosti.

U ovom članku ćemo se pozabaviti svim tim dijelovima, objasniti od čega se sastoji i čemu služi koji dio. Na kraju ćemo proći i kroz samu konfiguraciju IKEv2/IPsec na Mikrotik routeru te klijentima Windows i Android. Kad je riječ o konfiguraciji, ovdje će biti riječ kako postaviti IKEv2/IPsec kao server-klijent način rada – da se udaljeni klijenti mogu spajati na router, jer drugi način rada može biti i kao tzv. site-to-site kada je riječ o povezivanju dva međusobno udaljena routera.

Za početak nas čeka dosta teorije, ali kad se to svlada i razumije što radi koji dio u IKEv2/IPsec vezi, tada će konfiguracija na Mikrotiku biti brza i lagana.

Oprema koja je korištena u ovom članku

  • Mikrotik RB4011iGS+5HacQ2HnD-IN
  • RouterOS: 7.1.1
  • Winbox 3.32
  • Windows 10 21H2
  • Android 11
Mikrotik RB4011igs+5hacq2hnd-in

Idemo redom …

Pregled VPN protokola

Kratki pregled raspoloživih VPN protokola koji se mogu koristiti.

PPTP

PPTP (Point-to-Point Tunneling Protocol) je jedan od najstarijih VPN protokola kojeg je razvio Microsoft. Nema svoj vlastiti način kriptiranja već se mora oslanjati na Point-to-Point Encryption koji se danas smatra jako slabim, pogotovo zato jer ima primjera gdje je probijen.

Zbog slabog načina enkripcije, nije zahtjevan za resursima što ga čini brzim i lako ga je implementirati, pa ga dosta ljudi koristi i danas.

Nemojte ga koristit ako ne morate i ako vam je bitna sigurnost veze.

L2TP/IPSec

L2TP (Layer two tunneling protocol) je nastao s ciljem da zamjeni PPTP. Može samostalno odrađivati autentikaciju klijenata, ali slično kao PPTP, nema svoj način kriptiranja podataka kroz tunel. Zato se često uparuje sa IPsec koji na sebe preuzima dio za kriptiranje.

Zbog tog duplog posla kojeg odrađuje svaki dio za sebe (autentikacija, kriptiranje), protokol je sporiji u radu. Iako postoje neki izvještaji da mu je sigurnost oslabljena, ovaj protokol se danas još uvijek smatra sigurnim.

Raspoloživ je gotovo na svim uređajima odnosno operativnim sustavima, lagano ga je implementirati za korištenje.

Koristiti ako nema ništa bolje.

OpenVPN

Open-source protokol koji koristi SSL/TLS za razmjena javnih i privatnih ključeva. Podržava više tipova enkripcije, uključujući AES-256, što ga čini dosta sigurnim za korištenje.

Ako se koristi preko UDP porta, može biti značajno brz (u odnosu ako ide preko TCP).

Nema poznatih ranjivosti, a jak je onoliko koliko se dobro konfigurira.

WireGuard

WireGuard je open-source protokol koji je još uvijek u razvojnoj fazi. Trebao bi biti brži i sigurniji protokol u odnosu na IPsec a ujedno lakši za implementiranje jer nema toliko dijelova za slaganje. Ima svoje nove protokole, testiranja pokazuju da je brz i stabilan.

Najavljuju ga kao „VPN budućnosti“, vidjet ćemo hoće li zaista biti tako.

SSTP

SSTP (Secure Socket Tunneling Protocol) je razvio i održava Microsoft, što znači da je implementiran samo u Windows operativnom sustavu. Ima neke podrške za Linux sustave, ali nije toliko prošireno, zato se i dalje smatra kao VPN protokolom samo za Windows.

Ponaša se slično kao OpenVPN – koristi AES kriptiranje i SSL tip autentikacije, zbog čega je jako siguran protokol.

IKEv2/IPSec

Kao što je rečeni u uvodu, ovo nije protokol kao takav, već skup više njih pod jednim krovom. Zbog toga je ova vrsta VPN veze jedna od najsigurnijih. Uz visoki nivo sigurnosti, također je jedan od najbržih VPN tipova i ima veliku stabilnost u radu.

Ima podršku za gotovo sve platforme i operativne sustave. Visoki nivo sigurnosti može zahvaliti tome što podržava sve novije algoritme za kriptiranje.

Zbog svoje kompleksnosti, teže ga je implementirati u rad.

Nema poznate ranjivosti, stoga ga se jako preporuča da se koristi jer je to trenutno jedan od najboljih VPN opcija na tržištu.

Ovaj članak ima cilj da pobliže objasni dijelove IKEv2/IPsec, upravo zato da ga se razumije i nauči kako implementirati.

IKEv2 / IPsec teorija

Idemo pogledati malo dublje o čemu se radi kod ovog tipa VPN protokola. Ranije smo već rekli kako ovo nije protokol u pravom smislu te riječi, već se radi o skupu više dijelova ujedinjenih pod jedno.

Ti sigurnosni dijelovi uključuju:

  • enkripciju podataka (DES, 3DES, AES …)
  • Integritet (hashing) podatka (MD5, SHA)
  • Autentikaciju spajanja (PSK, RSA)
  • IPsec negotiation

Potrebno je posebno konfigurirati svaki ovaj dio kako bi klijent mogao ostaviti uspješnu vezu s routerom. U Mikrotik routeru, svaka ova zasebna postavka se nalazi u svojem tabu, a kad dođemo do dijela za konfiguraciju proći ćemo kroz svaku od njih.

Da bi znali što i kako konfigurirati, moramo znati čemu koji dio služi i kako uopće radi IPsec.

IPsec komunikacija

IPsec može raditi u dva tipa (communication mode), ovisno o potrebi:

  • Transport mode
    • kriptira paket samo od Transport layera (OSI model) prema gore, dok IP adresa te niži slojevi OSI modela ostaju ne kriptirani
    • Koristi se uglavnom za unutar postojeće LAN mreže, kada se IP ionako zna ali se zato promet kriptira
  • Tunnel mode
    • Ovo je najčešći način korištenja, pogotovo jer sve ide preko javnog Interneta
    • Kriptira se sve od mrežnog sloja OSI modela prema gore, samo Layer 2 i niže nije kriptiran
    • Pošto je originalni IP primatelja i pošiljatelja kriptiran, u paket se dodaje novi IP header čija će adresa biti vanjska javna IP adresa, iz razloga da se može dalje routati po Internetu (jer da nema tog dijela, pošto je originalna IP adresa kriptirana, ISP ne bi znao kamo dalje treba usmjeriti takav paket)

Enkripcija

Glavni razlog zašto uopće koristimo VPN konekcije je da takve veze budu privatne i pod našom kontrolom. A da bi nešto bilo privatno na javnom Internetu, moramo ga kriptirati kako nitko drugi ne bi razumio o čemu se radi.

Tipovi enkripcije

Symmetric

  • obje strane koriste isti ključ za enkripciju/dekripciju podataka (shared secret)
  • Brži način rada
  • Manje siguran način

Asymmetric

  • router koristi jedan ključ za enkripciju, drugi ključ za dekripciju (Public/Private ključevi)
  • Sporiji način jer koristi više CPU i RAM resursa na routeru
  • Jača sigurnost

Korištenje pre-shared ključa (PSK) danas se ne smatra sigurnim načinom uspostave kriptiranja, stoga bi ga trebalo izbjegavati ako je to moguće.

Ako nije moguće, idealno rješenje je koristiti oba načina – tada se koristeći Asymmetric enkripcijom kriptira Shared Key koji se šalje na drugu stranu, a nakon toga se dalje koristi Symmetric i kriptirani Shared Key.

Protokoli za enkripciju

Symetric

  • DES: 56 bit key, ne koristiti jer je stari protokol koji je probijen
  • 3DES: 168 bit key, može poslužiti ako nema ništa bolje, ali ga ja osobno ne bih koristio
  • AES: noviji, jaki algoritam. Ima 128, 192 i 256 bit ključeve za jakost enkripcije, do sad još nije probijen. (što jači ključ, to je jača enkripcija ali i sporije radi jer treba to sve procesirati). Unutar AES protokola ima tri vrste načina kriptiranja: CBC, CTR, GCM. Neću ulaziti u opise svakog od njih jer su to velike teme za sebe, već ću kratko reći ako hardver ima podršku za to onda odaberite GCM. U svakom slučaju koristiti AES uvijek ako je raspoloživ.
  • Blowfish: napravljen kao zamjena za DES, koristi varijabilni ključ od 32 bit do 448 bit. Ovaj isto nemojte koristiti.
  • Camellia: isti kao AES, koristi također 128, 192 i 256 bit. Ako AES nema raspoloživo, slobodno koristiti ovaj.
     

Asymetric

  • RSA: koristi se za razne enkripcijske aplikacije (npr. za SSH). Jak i do sad nije probijen. Koristi  512, 768, 1024 ili veći bit key
  • DH: Diffie–Hellman, često se koristi u VPN vezama, koristi 768, 1024, 1536 ili veći bit key, jako siguran. Koristiti ovo uvijek kad se može. Diffie-Hellman grupe se uvijek spominju u IPsec razgovorima, a vrlo je važno znati što odabrati ovisno o OS podršci (Windows, Android …) jer inače spajanje neće raditi.

    Pregled DH grupa

Kratki video koji objašnjava kriptiranje: Public Key Cryptography: Diffie-Hellman Key Exchange (5:23 min)
 

Integritet podataka (hashing)

Služi za osiguravanje da paket od pošiljatelja do primatelja dođe isti, bez da bude promijenjen na svom putu od strane napadača.

Mikrotik ima dva hashing algoritma

  • MD5: 128 bit hash, slabi algoritam, danas se smatra nesigurnim, ne koristiti
  • SHA
    • SHA1: koristi 160 bit hash
    • SHA256: koristi 256 bit hash
    • SHA384: koristi 384 bit hash
    • SHA512: koristi 512 bit hash


Koristiti SHA uvijek ako je moguće, a koji ovisi o hardverskoj i softverskoj podršci opreme. Treba imati na umu da što jači, to bolji, ali i sporiji jer treba više resursa da procesira sve.

SHA1 se danas smatra slabijim i ne bi se trebao koristiti ako ima jači algoritam na raspolaganju.

Autentikacija

Koristi se da obje strane mogu potvrditi jedna drugu da su ispravne, odnosno da se IPsec promet odvija između valjanih sudionika, a ne zloćudnih.
 

Postoje dvije vrste

Pre-shared key (PSK)

  • Koristi se isti ključ na svim VPN stranama za autentikaciju onog drugog
  • Šalje se putem javnog Interneta na drugu stranu, ali ne u čistom tekstu već kao hash
  • Windows nema PSK podršku za IKEv2/IPsec

Certifikati

  • Obje strane moraju imati valjani certifikat kojim potvrđuju svoj identitet
  • Certifikat se dobije od CA (trusted Certificate Authority), bilo da je to server ili router na kojem je kreiran certifikat

Pregovarački protokol

Služi za dogovaranje što i kako će se ponašati podaci jednom kad se tunel uspostavi.

Postoje dvije vrste

Authentication Header (AH)

  • Ima samo Authentication i Data integrity, nema enkripciju
  • U pravilu se ne koristi uopće upravo zato jer nema enkripciju podataka

Encapsulating Security Payload (ESP)

  • Ima Authentication, Data integrity, Encryption
  • Ovo se koristi u 99.99 % slučajeva

Proces spajanja

IKE je protokol koji služi za uspostavljanje skupa pravila koji će se koristiti u IPsec komunikaciji između uređaja.

Pravila koja uređaji dogovaraju prilikom uspostave tunela su:

  • Koji hashing (MD5, SHA)
  • Kakav tip autentikacije
  • Koja DH grupa i način razmjene ključeva će biti
  • Koji tip enkripcije
  • Vremenska dužina stvorenog tunela (Lifetime)

Cijeli ovaj skup pravila se zove Security Associations (SA). U svakoj IKEv2/IPsec literaturi se spominje ovaj termin, stoga bi ga bilo dobro zapamtiti.

IKEv2 je nadogradnja IKEv1 protokola. Danas se mogu koristiti oba, ali zbog svoje jednostavnosti i naprednijih mogućnosti bolje je koristiti IKEv2 protokol. Jedna od tih naprednijih mogućnosti je propuštanje NAT prometa, nešto što IKEv1 nema. To znači da kad se u IKEv1 uspostavi IPsec tunel, paketi i dalje ne putuju jer treba napraviti dodatnu konfiguraciju za NAT. Kod IKEv2 je NAT propuštanje uključeno u samom protokolu (NAT Traversal) i nema potrebe za dodatnom konfiguracijom.

Bez obzira na verziju IKE protokola, uspostava IPsec tunela odvija se u dvije faze. Ukratko:

  1. Prva faza – ovdje se dogovaraju gore spomenuta SA pravila između uređaja, te se uspostavlja kriptirani tunel. U Mikrotiku se to definira pod IP > IPsec > Profiles.
  2. Druga faza – nakon što je uspostavljen kriptirani tunel, slijedi autentikacija uređaja koji sudjeluju u tom tunelu. Koristi se da obje strane mogu potvrditi jedna drugu da su ispravne, odnosno da se IPsec promet odvija između valjanih sudionika, a ne zloćudnih.
    U Mikrotiku se to definira pod IP > IPsec > Proposals.

Važno je znati kako se odvija proces IPsec spajanja, poznavati ove dvije faze, jer ako dođe do problema i treba raditi troubleshooting, najčešće je riječ o krivoj postavci za neku od ovih faza. Znajući što se događa u kojoj fazi, lakše se dođe do uzroka problema.

Detaljnije o IKE procesu spajanja se može pročitati u Cisco dokumentaciji.

Konfiguracija – Mikrotik

Sad kad znamo kako radi IKEv2/IPsec i što je potrebno sve postaviti da bi bilo ispravno, možemo krenuti u postavljanje Mikrotik (serverske) strane.

Mikrotik RB4011iGS+5HacQ2HnD-IN koji koristim ima poseban hardverski dio za obradu IPsec enkripcije (IPsec hardware acceleration) što mi omogućuje postavljanje jače enkripcije bez da utječe na glavni CPU routera. Time dobijem da se jača enkripcija brzo odradi. Jer sjećate se da smo ranije rekli kako jača enkripcija zahtjeva više hardverskih resursa za procesiranje enkripcije.

Predradnja

1. U firewall-u otvoriti UDP portove 500 i 4500, da bi se klijenti mogli uspješno spojiti preko IKEv2/IPSec

Mikrotik
/ip firewall filter add action=accept chain=input comment="IKEv2/IPsec VPN spajanje " dst-port=500,4500 protocol=udp

500/udp – Internet Key Exchange (IKE)
4500/udp – NAT traversal

2. Kako Windows nema podršku za Pre-shared key, a ne bi tu opciju koristili ni da je ima, potrebno je izraditi certifikate koji će služiti za međusobnu autentikaicju uređaja.

Mikrotik ima mogućnost izrade i potpisivanja certifikata.

Izrada certifikata

Potrebno je napraviti dvije vrste certifikata

  • Certificate Authority (CA) – služi kao glavni certifikat kojim se dalje potpisuju (ovjeravaju) drugi certifikati koji će se koristiti na uređajima.
  • Klijentski certifikati

1. Certificate authority (CA)

Mikrotik može biti sam svoj CA koji dalje izdaje i potpisuje certifikate za korištenje.

Upute za izradu CA

  1. Otići na System > Certificates
    Ovdje pod tabom Certificates kliknuti na znak “plus” za dodavanje novog certifikata.
  2. Pod tabom General navesti slijedeće stvari:
    • Name: ime certifikata
    • Common name: staviti vanjsku adresu routera preko koje će se s Interneta dolaziti na router. Ako se koristi IP > Cloud, onda onu adresu koja je navedena. Ako imate svoju web adresu, u prijašnjim sam uputama objasnio kako tu adresu koristi za Mikrotik.
    • Key Size: 4096
    • Days Valid: vremensko trajanje certifikata prije nego ga treba obnoviti
  3. Pod tabom Key Usage odabrati
    • Crl sign
    • Key cert. sign
  1. Još uvijek u istom prozoru, desno u izborniku kliknuti na Sign
    • Ovdje odabrati taj CA certifikat koji se radi, a u polje CA CRL Host unijeti javnu adresu routera preko koje će se spajati s Interneta
    • Zatim kliknuti na Start i pričekati da se CA certifikat potpiše

Time je napravljen glavni CA certifikat kojim se dalje potpisuju svi ostali certifikati.

2. Klijentski certifikati za IKEv2/IPsec VPN

Postupak za izradu korisničinih certifikata koji će se koristiti na uređajima je sličan kao za izradu CA.

Za IKEv2/IPsec VPN vezu potrebno je uz CA imati još dva certifikata – serverski i klijentski.

  1. Otići na System > Certificates
    Ovdje pod tabom Certificates kliknuti na znak “plus” za dodavanje novog certifikata.
  2. Pod tabom General navesti slijedeće stvari:
    • Name: ime certifikata
    • Common name: staviti isto ime kao i za Name gore
    • Subject Alt. Name: služi za dodatnu provjeru podataka certifikata kada se spoji na Mikrotik. Ovdje pod DNS treba staviti vanjsku adresu preko koje će se uređaji spajati na Mikrotik
    • Key Size: 4096
    • Days Valid: vremensko trajanje certifikata prije nego ga treba obnoviti
  3. Pod tabom Key Usage odabrati
    • tls server
  1. Još uvijek u istom prozoru, desno u izborniku kliknuti na Sign
    • Označiti certifikat koji se izrađuje
    • Pod CA odabrati CA certifikat koji je napravljen ranije
    • Kliknuti na Start da se certifikat potpiše
  1. Za kraj vratiti se natrag na tab General u istom prozoru
    • Staviti kvačicu na Trusted.
    • Kliknuti na OK za potvrdu i zatvaranje prozora

Ovime je napravljen serverski certifikat koji će trebati za VPN vezu.

Još treba napraviti klijentski certifikat koji se radi na isti način kao server, uz jedinu razliku što pod Key Usage treba odabrati tls client.

Može se napraviti samo jedan klijentski certifikat i njega koristiti na svim uređajima sa kojih će se spajati.

Za veću kontrolu i možda bolju organizaciju, može se napraviti da svaki uređaj ima svoji certifikat. Ovime se može dobiti da se uređivanjem pojedinog certifikata može odrediti koji uređaj će se spajati, koliko dugo će trajati takav certifikat i time koliko dugo će biti omogućeno spajanje.

3. Export certifikata

Klijentske certifikate treba staviti na uređaje, a opcijom Export se izvuku iz Mikrotik routera.

  1. Desni klik na željeni certifikat > Export
  2. Pod Type nalazi se dva tipa: PEM i PKCS12
    • PEM – sadrži samo željeni certifikat
    • PKCS12 – sadrži željeni certifikat i CA certifikat


Potrebno je odabrati PKCS12 jer kod ubacivanja certifikata u klijente potrebna su oba certifikata.

  1. Export Passphrase – potrebno je navesti neku lozinku.
    Ako se lozinka ne navede, onda se radi Export samo certifikata bez privatnog ključa. Zato treba navesti lozinku, neku privremenu koja će se koristiti samo kod ubacivanja certifikata u klijenta.
  2. File name – navesti neko prepoznatljivo ime.
  3. Klikom na Export željeni certifikat se sprema pod Files.
  4. U glavnom Winbox izborniku s lijeve strane otići na Files i od tamo jednostavno kopirati certifikate.

IPsec konfiguracija

Sve predradnje su gotove i imamo certifikate. Vrijeme je da napokon krenemo konfigurirati Mikrotik za IKEv2/IPSec VPN vezu.

Sva IPsec konfiguracija se radi u IP > IPsec.

Kad se otvori IPSec prozor, svaki tab je jedna komponenta koja je potreba da se konfigurira za uspješnu IKEv2/IPsec vezu.

1. Mode Configs

Služi za konfiguraciju atributa koje će klijent imati.

Opis postavki

  • Name: navesti neko ime konfiguracije
  • Responder: određuje da li će router biti inicijator ili onaj koji se odaziva. Pošto je ovdje riječ o vezi gdje će se razni klijenti spajati na Mikrotik koji će biti server, ovdje treba staviti kvačicu. Time će router slati klijentima postavke.
  • Address Pool: ovdje se određuje raspon adresa koje će dobivati  klijenti koji se spajaju. Ako se želi koristiti ovo, prethodno je u IP > Pool potrebno definirati raspon adresa za ovo.
  • Address: služi da se ručno odredi koju IP adresu će klijent dobiti. Ovo je korisna opcija kada se želi imati kontrolu nad time koji klijent se nalazi na kojoj adresi. Tada je potrebno za svakog klijenta napraviti svoju konfiguraciju, jer će svaki imati svoju IP adresu.
  • Split Include: služi da se navedu IP adrese mreža koje će trebati biti kriptirane ovim tunelom. Mreže koje nisu navedene ovdje neće biti u prometu koji je kriptiran (iako je tunel uspostavljen). Ako se ništa ne navede ovdje, sav promet će prolaziti kroz tunel i biti kriptiran.
  • Split DNS: služi za određivanje DNS servera koje će klijent koristit za specifične upite, ne za sve DNS upite
  • System DNS: Kad je označena ova opcija, klijent će dobiti DNS servere koji su definirani u IP > DNS
  • Static DNS: služi da se ručno odrede DNS serveri koji će biti poslanu klijentu na korištenje

Za potrebe ovog članka, ja želim da znam kojom IP adresom se spaja klijent svaki put, pa sam postavke stavio ovako:

2. Profiles

Ovdje se konfigurira Phase1 za IKEv2/Ipsec – koja enkripcija će se koristiti za uspostavljanje prvog tunela.

Opis postavki

  • Name: navesti neko prepoznatljivo ime profila
  • Hash Algorithms: koji algoritam će se koristiti za data integrity, što veći to sigurniji
    • Kod sebe sam stavio sha384
  • PRF Algorithms: služi za nasumično generiranje ključeva
    • Kod sebe sam stavio isto sha384, ali može ostati i na Auto
  • Encryption Algorithms: odabrati koja enkripcija će se koristiti za prvu fazu
    • Kod sebe sam stavio AES-256
  • DH Group: odabir Diffie-Hellman grupe, koji tip će se koristiti za sigurnu razmjenu javnih i privatnih ključeva
    • Kod sebe sam stavio modp2048 zato jer Windows ne podržava jače grupe
  • Lifetime: ovo je vremensko trajanje koliko će dogovorena SA pravila biti aktivna. Ako se stavi prekratko vrijeme, dogovorena SA pravila će trajati kratko te će nakon isteka trebati ponovo dogovarati nova pravila za IPsec vezu, a to može biti problem ako uređaj na kojem se to radi nema jake resurse.
    Predugo vrijeme trajanja SA pravila može teoretski dati napadaču dovoljno vremena da probije trenutno aktivnu enkripciju.
  • Lifebytes: koliko bytova će se prenijeti preko IPsec veze uz postojeća SA pravila prije nego istekne.
  • Proposal Check: odabir logike koja će se koristiti za odabir Lifetime dogovora.
    • claim – koristiti najkraće predloženo vrijeme i obavještava inicijatora veze za to
    • exact – zahtjeva da lifetime bude isto na obje strane
    • obey – prihvaća ono što god inicijator veze predloži
    • strict – ako je predloženo vrijeme duže od postavljenog na routeru, tada odbija predloženo vrijeme, a ako nije onda ga prihvaća

Kod sebe sam stavio na Claim.

  • NAT-Traversal: omogućava komunikaciju kad se koristi IKEv2 (IKEv1 nema podršku za NAT)
    • Staviti kvačicu da bude uključeno

3. Peers

Služi za uspostavljanje prvog koraka veze između dvije strane, preko koje će se dalje dogovarati i razmjenjivati ključevi i algoritmi.

S obzirom da ovo slažemo za spajanje bilo kojeg udaljenog klijenta na router i gdje se neće znati koje su javne adrese tih klijenata, dio za adrese se ne koristi.

Opis postavki

  • Name: navesti neko prepoznatljivo ime
  • Profile: odabrati profil koji je napravljen za prvu fazu
  • Exchange Mode: ovdje se odabire da li će veza koristiti IKEv1 ili IKEv2. IKE2 je jasno što je, a sve ostale opcije se odnosne na IKEv1.
  • Passive: označava da će router biti u pasivnom modu i čekati da udaljeni klijent bude taj koji će inicijalizirati konekciju
    • Staviti kvačicu da se opcija uključi
  • Send INITAL_CONTACT: služi da Mikrotik router pošalje IKE paket i uspostavi tunel ako je to potrebno. S obzirom da je ovdje riječ o tunelima koje uspostavljaju udaljeni klijenti (i uključena je Passive opcija), ovo se može isključiti micanjem kvačice


Dovoljno je napraviti jedan peer zato jer će svi udaljeni klijenti koristiti taj jedan. Također nije moguće imati više peerova s istim Exchange Mode odabirom, jer je Exchange Mode jedinstveni faktor prepoznavanja između peerova.

4. Identities

Koristi se za postavljanje konfiguracijskih parametara za svakog klijenta koji će se spajati na router.

Opis postavki

  • Peer: odabir kreiranog peera na koji će se ovaj identitet odnositi
  • Auth. Method: odabir tipa autentikacije
    • Odabrati Digital signature
  • Certificate: odabir certifikata koji se nalazi na routeru (serverski certifikat)
  • Remote certificate: Odabir certifikata koji će se nalaziti na klijentu
  • Match by: odabir logike koja će se koristiti za provjeru identiteta klijenata
    • Kod sebe sam odabrao certifikate jer svaki klijent ima svoj certifikat
  • Mode Configuration: odabir konfiguracijskih parametara koji su prethodno konfigurirani (u prvom koraku gore) a koji će ovaj identitet koristiti
  • Generate Policy: služi tome da se odredi kako će nastati SA pravila. Pošto će ovdje udaljeni klijenti biti ti koji će kreirati SA pravila, to znači da će takva SA pravila biti dinamično kreirana i trajati za vrijeme aktivne IPsec veze.
    • Ovdje odabrati port-strict, zato da se koristite portovi koje klijent predloži, a i ostale opcije su stare koje se više ne koriste.

Ako se koristi IP > Pool za klijente, odnosno kada nije bitno za znati koje IP adrese su dodijeljene kojem udaljenom klijentu, tada je dovoljno imati jedan Identitet ovdje (i pod Match by ostaviti na Remote ID).

No ako se želi znati koji IP je određen za kojeg klijenta (što se definira u Mode Configs), tada je potrebno kreirati i Identitet za svakog tog udaljenog klijenta i prilagoditi konfiguraciju identiteta prema određenom klijentu.

5. Proposals

Ovdje se konfigurira Phase2 za IKEv2/IPsec.
Isključiti Default unos, da ne smeta.

Opis opcija

  • Name: navesti neko prepoznatljivo ime
  • Auth. Algorithms: koji algoritam će se koristiti za drugu fazu autentikcije.
    • Odabrati SHA1 zato jer Windows nema podršku za nešto jače u ovoj drugoj fazi
  • Encr. Algorithms: odabrati koji algoritmi će se koristit za enkripciju u drugoj fazi
    • Odabrati AES-256-CBC zato jer Windows nema podršku za nešto jače u ovoj drugoj fazu (AES-256 GCM bi bilo bolje)
  • Lifetime: isto kao za fazu 1.
  • PFS Group: perfect forward secrecy, služi za odabir koja DH grupa će se koristiti za ovu drugu fazu. Ovdje se ne treba odabrati ništa, ali može ako se želi imati jača sigurnost veze.
    • Kod sebe sam odabrao isto kao za prvu fazu: modp2048

6. Policies

Određuje koje sigurnosne politike će biti primijenjene.

Kako ovo koristimo za spajanje udaljenih klijenata na router, ne treba raditi novi Policy, već se može koristiti postojeća uz neke promjene.

Kad se otvori default Policy, otići na tab Action.

  • Action: služi za odabir što će se dogoditi s paketom koji zadovoljava SA pravila
  • IPsec Protocols: za odabir tipa protokola
    • Odabrati ESP jer AH nema enkripciju
  • Proposal: odabrati ranije kreirani Proposal koji će se koristiti za fazu 2 uspostavljanja veze

Kad se IKEv2/IPsec veza uspostavi, pod Tunnel će pisati Yes. Kad ne piše Yes, tada se koristi Transport mode. U teoretskom djelu članka smo objasnili koja je razlika između Tunnel i Transport načina rada.

Kad je veza u cijelosti uspostavljena, pod PH2 State će pisati established. To znači da je faza 2 uspostavljena i tunel se može koristiti.

Pod Level će pisati unique, to i želimo jer to znači da će svaka konekcija imati svoja SA pravila. Ovo se koristi u slučajevima kada više različitih udaljenih klijenata pristupa sa iste javne IP adrese.

Ovime je IPsec  konfiguracija na Mikrotik routeru gotova.

Dodatak

Tab Active Peers

  • Prikazuje sve trenutno aktivne IKEv2/IPsec veze prema routeru
  • Pod ID je navedeno ime certifikata koji se koristi za spajanje

Tab Installed SA

  • Prikazuje koja su trenutno SA pravila aktivna i između kojih klijenata

Konfiguracija – Windows

Windows nema podršku za korištenje pre-shared key (PSK) uz IKEv2/Ipsec, zato se koriste certifikati za autentikaciju.

Kao predradnju treba kopirati klijentski certifikat u Windows, npr. na Desktop.

1. Ubaciti certifikat

  • Kliknuti na certifikat da se pokrene Import Wizard i odabrati Local Machine
  • Kliknuti na Next sve dok se ne dođe do dijela za upisati lozinku – ovdje unijeti istu lozinku koja je bila definirana na Mikrotiku prilikom Export radnje
  • Na slijedećem koraku ostaviti odabrano “Automatically select the certificate store based on type of certificate“. Razlog ovome je to što pkcs12 certifikat koji se dobije od Mikrotika sadrži dva certifikata u sebi: jedan CA certifikat i drugi potrebni certifikat. Ovim odabirom će Windows automatski ubaciti ta dva certifikata na potrebna mjesta. Kad bi se oba stavila na isto mjesto, ne bi radilo.

    Windows ih stavi ovdje:
    • CA certifikat ide u Trusted Root Certification Authorities.
    • Drugi potrebni certifikat ide u Personal.
       
  • Za kraj klik na Finish i time je certifikat ubačen. 

2. Kreiranje VPN veze

Može se napraviti preko grafičkog sučelja ili kroz Powershell jednom naredbom.
 

  1. Kroz grafičko sučelje
    1. Settings > Network & Internet > VPN
      Add a VPN connection
    2. Unijeti potrebne vrijednosti
      • VPN provider: Windows built-in
      • Connection name: navesti neko svoje prepoznatljivo ime
      • Server name or address: ovdje navesti javnu adresu koja može doći do Mikrotika s javnog Interneta (ista javna adresa kojom je napravljen CA)
      • VPN type: IKEv2
      • Type of sign-in info: Certificate

Za kraj kliknuti na Save.

 3. Još treba postaviti da VPN veza zaista koristi certifikat kao način autorizacije.

  • Settings > Network & Internet
    Odabrati Change adapter options
  • Desni klik na kreiranu VPN vezu pa Properties
  • Pod tabom Security odabrati Use machine certificates


Kilk na OK za potvrdu.

b. Ovo se može sve riješiti jednom Powershell naredbom:

PowerShell
Add-VpnConnection -Name ime_veze -ServerAddress adresa_mikrotika -TunnelType Ikev2 -AuthenticationMethod MachineCertificate

3. Jačanje VPN veze 

Windows default postavke za IPsec nisu dovoljno jake jer koristi DF grupu 2 (1024 bit) koja se danas smatra slabom i neučinkovitom. To je navedeno i u službenoj Microsoft dokumentaciji.

Zato za kraj trebamo još kod Registry napraviti da se ovo ojača.

  1. Otvoriti Registry Editor i otići na putanju:
    Computer\ HKEY_LOCAL_MACHINE\ SYSTEM\ CurrentControlSet\ Services\ RasMan\ Parameters
  2. Ovdje napraviti novu DWORD vrijednost i nazvati je NegotiateDH2048_AES256
  3. Za Value data staviti broj 2.

    Moguće vrijednosti su:
    • 0 = default, bez utjecaja
    • 1 = omogućava da se ove opcije reklamiraju uz ostale nesigurne vrijednosti prilikom uspostave IPsec tunela
    • 2 = omogućava da se izričito ove vrijednosti reklamiraju, bez onih default nesigurnih. Zato smo kod sebe stavili broj 2.

Ovime se dobije koliko toliko jača i sigurnija VPN veza koristeći IKEv2/IPsec.
Windows nema veliku mogućnost odabira jačih algoritama.

Popis protokola za Phase1 i Phase 2 što je kompatibilno s Windows 10.

PS: Postoji dodatna mogućnost izmjene sigurnosti IPsec veze koristeći Powershell naredbu
Set-VpnConnectionIPsecConfiguration

Set-VpnConnectionIPsecConfiguration | Microsoft Docs

No što god bih stavio od vrijednosti, nisam mogao uspostaviti vezu. Jer i dalje gleda SHA1 za Phase2 komunikaciju.

To je to.

Klikom na Connect trebala bi se uspostaviti VPN veza, a u Mikrotiku pod Active Peers bi se trebala pokazati komunikacija između routera i klijenta.


 

Konfiguracija –  Android

Pred koraci

  1. Android nema jaku nativnu podršku za IKEv2/Ipsec, zato sa Google Play Store treba skinuti strongSwan VPN Client aplikaciju i koristiti nju za spajanje.
  2. U Android mobitel je potrebno ubaciti oba certifikata (CA i klijentski).

Ubacivanje klijentskog certifikata (.p12) koji se eksportira sa Mikrotik routera nije problem, to će raditi.

No CA certifikat koji se nalazi u Mikrotiku neće raditi na Android mobitelu, zato se do njega može doći tako da se napravi export tog CA certifikata iz Windowsa (gdje je prethodno ubačen CA kao .p12 certifikat):

  1. U Windowsima otići u Control Panel > Internet Options
  2. Pod tabom Content odabrati Certificates
  3. U novootvorenom prozoru pod tabom Trusted Root Certification Authorities pronaći CA certifikat koji je ubačen s Mikrotika i kliknuti ispod na Export
  4. Otvorit će se prozor za Export certifikata
    • Ostaviti označenu prvu opciju DER encoded binary X.509 (.CER)
    • Odabrati gdje će certifikat biti spremljen i pod kojim imenom
    • Za kraj kliknuti na Finish

Sad imamo oba certifikata koja treba ubaciti u Android mobitel.

1. Ubacivanje certifikata

  1. Preuzeti certifikate na mobitel
  2. Otići u Settings > Biometrics and security > Other security settings
    • Instalacija CA certifikata:
      • Install from device storage > CA certificate
        Javit će da je sigurnosni rizik i tražiti potvrdu da to stvarno želim.
        Nakon potvrde, otići na mjesto gdje je skinut CA certifikat (.cer) i odabrati ga da se instalira
    • Instalacija klijentskog certifikata
      • Install from device storage > VPN and app user certificate
        Otići na mjesto gdje je skinut klijentski certifikat (.p12) i odabrati ga da se instalira.
        Tražiti će unos lozinke koja je postavljena kada se radio export certifikata s Mikrotika.
        Nakon toga potvrditi ime i instalacija je gotova.

Za provjeru da li su oba certifikata dobro instalirana, treba pogledati View security certificates (za CA) i User certificates (za klijentski certifikat).

2. Kreiranje VPN veze

  1. Otvoriti aplikaciju strongSwan a zatim Add VPN profile
  2. Pod Server navesti javnu adresu Mikrotik routera, preko koje će se mobitel spajati
  3. VPN Type – odabrati IKEv2 Certificate
  4. User certificate – odabrati klijentski certifikat koji je instaliran u prethodnom koraku
  5. CA certificate – maknuti kvačicu sa Select automatically i odabrati CA certifikat koji je instaliran u prethodnom koraku (nalazit će se pod tabom User)
  6. Stisnuti Save za kraj i spremanje profila

Ako je sve dobro složeno, pritiskom na ime profila započeti će spajanje a nakon par sekundi će pisati Connected.

Time je uspostavljena IKE2v2/IPsec  veza s Android mobitela, a dodatna potvrda je u Mikrotiku gdje se pod Active Peers vidi ta veza.

Završna riječ

Ako ste došli do ovdje u jednom komadu – čestitam!

Sad vidite zašto je IKEv2/IPsec komplicirano za implementirati ovako na prvu. No kad se malo prouči materija i svi dijelovi koji čine tu cjelinu, onda je ipak nešto lakše.

Na ovaj način smo si osigurali jako sigurnu i brzu VPN vezu prema Mikrotik routeru s Windows računala i Android mobitela.

AUTOR
Picture of Hrvoje Matešić

Hrvoje Matešić

KAVA

Sviđa ti se pročitano?

Revolut QR

MOGLO BI TE ZANIMATI
PODIJELI ČLANAK
PRETPLATI SE
Saznaj kad napišem novi članak
Subscribe
Notify of
guest
14 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
dado
dado
30.12.2022. 11:34

Pohvale za tutorial. Uspio sam ostvariti konekciju sa android mobitela, tunel je kreiran, prođe autentifikacija i obe faze povezivanja međutim ne prolazi promet, nema pinga.

Rjesio sam prateci dodatne upute, potrebno je kreirati bridge i dodjeliti mu ip adresu iz opsega koji se dodjeljuje vpn klijentima.

Dalje u NAT firewall kreirati pravilo za prihvatanje konekcije po portovima 500 i 4500 i to u input chainu, kao i po jedno pravilo u input i forward chainu, za prihvat konekcije za opseg IP adresa koje se dodjeljuju VPN klijentima.

U Firewall/NAT dodati još jedno masqurade pravilo za navedeni opseg IP adresa.

Gore navedeno napravio sam u RB-951-2n ruteru koji se nalazi u route načinu rada, iza modema koji je također u router načinu rada (odrađuje PPOE) u kojem sam morao forwardovati portove 500 i 4500 prema mikrotiku.

Interesuje me u kom slučaju su Vaše upute primjenjive, kada je Mikrotik u PPPoe načunu rada ili u router načinu rada.

Hvala

Davor
Davor
15.11.2023. 09:37

Hrvoje bok,
tutorial je odličan i iz prve sam složio povezivanje na routeru na kojem imam statičku vanjsku adresu.
Problem je ako se koristi Mikrotik cloud adresa jer stalno dobivam grešku “IKE authentication credentials are unacceptable”, testirano na WIN10 i WIN11 računalima, a pokušao sam i na dva routera (dvije različite lokacije) i ista stvar (oba su u PPPoE modu kada je glavni ISP router u bridge modu).
LP
Davor

Davor
Davor
Reply to  Hrvoje Matešić
15.11.2023. 16:22

Jesam, provjerio sam dvadesetak puta i pokušao iznova sve, al bez uspjeha, mada je postupak gotovo identičan kao i na routeru sa fiksnom vanjskom ip adresom, koji mi je proradio iz prve tako da ne znam više što da radim.

Davor
Davor
Reply to  Hrvoje Matešić
15.11.2023. 19:28

Imam neke adrese kod NO-IP-a pa cu pokusati s tim mada nisam to nikad radio, valjda nije prekomplicirano…
Citam da treba neke skripte raditi za update, nije ko kod ostalih routera?

Davor
Davor
Reply to  Hrvoje Matešić
16.11.2023. 12:09

Evo složio sam upravo preko vlastite DDNS adrese po tvojim uputama i sve je proradilo iz prve kao što sam i mislio.
Mrzim kada izgubim nekoliko sati vremena na nešto što ne radi iz nekog drugog razloga a kao i obično prvo mislim da ja nešto krivo radim.
U svakom slučaju hvala ti na pomoći i da ponovim još jednom, tutorial je odličan, jednostavan i lako razumljiv.
Pozdrav
Davor

Davor
Davor
Reply to  Hrvoje Matešić
17.11.2023. 16:05

Još jedno pitanjce, sve radi savršeno osim što klijenti nemaju pristup internetu dok su spojeni VPN-om?
Jesam li nešto propustio ili je potrebno nekakvo dodatno podešavanje?

Davor
Davor
Reply to  Hrvoje Matešić
21.11.2023. 08:52

Zanimljivo da kod routera sa fiksnom vanjskom adresom ovo radi po defaultu.
Hvala na hintu, kod drugih routera koji nemaju fiksnu vanjsku adresu sam uspio na kraju dobiti internet kod klijenata na ovaj način:

/ip pool
add name=IKEv2-pool ranges=192.168.6.100-192.168.6.200

/ip firewall filter
add action=accept chain=forward src-address=192.168.6.0/24
add action=accept chain=forward dst-address=192.168.6.0/24

/ip firewall nat
add action=masquerade chain=srcnat src-address=192.168.6.0/24

E sad kad sve radi došto je do još jednog problema, naime kod importiranja više različitih klijentskih certifikata na WIN 10/11 računalo moguće je ostvariti VPN konekciju prema samo jednom routeru, a prema drugima dobijem opet grešku “ike authentication credentials are unacceptable”.
Ako izbrišem certifikate i koristim samo jedan onda taj jedan radi najnormalnije, tj. rade svi ali u računalu može biti samo jedan jer čim dodam još jednog ili dva, tri radit će opet samo jedan.

Davor
Davor
Reply to  Davor
23.11.2023. 16:14

Uspio sam riješiti i problem kada se koristi više certifikata na klijentskom računalu, jer glupi windowsi ne znaju kojeg da koriste za koju VPN konekciju.
Evo rješenja u Powershellu:

$ca = Get-ChildItem Cert:\LocalMachine\Root\ | ? SerialNumber -EQ <serial number>

Set-VpnConnection -Name <your VPN profile name> -MachineCertificateIssuerFilter $ca

<serial number> je serijski broj certifikata
<your VPN profile name> je naziv VPN-a

Mislim da je ovo gore postupak za WIN 10, a kod WIN 11 ide ovako:

$ca = Get-ChildItem Cert:\LocalMachine\Root\ | ? SerialNumber -EQ <serial number>

Set-VpnConnection -Name <your VPN profile name> -MachineCertificateIssuerFilter $ca -AllUserConnection