2024. április 18., csütörtök

Gyorskeresés

VPN szerver routerből IKEv2 Certificate + EAP (Username/Password) módban

Írta: | Kulcsszavak: VPN . Virtual Private Network . Virtuális Magánhálózat . Openwrt . IKEv2 . StrongSwan . IPsec

[ ÚJ BEJEGYZÉS ]

Előző VPN-nel kapcsolatos írásomban IKEv2 IPsec StrongSwan alapokon készítettem OpenWrt-s routeremből virtuális magánhálózat szervert. Akkor nulla ismerettel álltam neki a rendszernek netes leírások, script fájlok alapján, nem teljesen tudva, hogy mi miért és hogyan van, de így is sikerült egy működőképes konfigurációt létrehozni. Aztán megfogalmazódott bennem néhány elvárás, ami az első működő konfiguráció változtatását igényelte. Ezt fogom ebben a blogposzban bemutatni.

Mit tudott az előző konfig és mik voltak a módosítási igényeim?

- Az előző konfig (lásd fentebbi link) lehetőséget nyújtott sima IKEv2 Certificate VPN type bejelentkezésre és EAP (Username/Password) bejelentkezésre is, de kombinált IKEv2 Certificate + EAP (Username/Password) módú bejelentkezésre nem. Szerettem volna, hogy csak ebben a kombinált módban lehessen bejelentkezni, azaz tanúsítvánnyal és EAP jelszóval egyszerre, csak user tanúsítvánnyal és csak EAP (Username/Password) móban nem.
- Az előző konfigban csak IPv4-es címeket kapott a kliens. Szerettem volna, ha újdonsült VPN szerverem IPv6 címet is adna.

Ezekre megoldást találtam az új konfiggal, de úgy tűnik Widowsos belépéshez kénytelen leszek EAP (Username/Password) only módot is visszaállítani a címben említett kombinált mód mellett, mivel azthiszem a Windows nem támogatja ezt a módot (legalábbis Win7 nem, Win8-10 nem tudom), Androidos telefonom kliens programja viszont minden további nélkül támogatja ezt a módot.

A szükséges csomagok telepítése a routerre
SSH-n opkg paranccsal a StrongSwan-t kell letölteni (lásd előző blogposzt)

A konfiguráció

Tanúsítványok
Lehet úgy is csinálni, ahogy az előző bejegyzésemben volt, én mégis áttértem egy másik módszerre, amihez a parancsokat ebben a kommentben írtam le. Ezeket SSH-n belépve lehet kiadni. Létrehozza a tanúsítványokat, amik szükségesek a működéshez. A létrehozott CA cert és a CLIENT CERT a felhasználó kliensgépére másolandó, így tud majd bejelentkezni az EAP felhasználói neve és jelszava mellett.

IPsec konfiguráció
conn %default
# Dead Peer Discovery
dpdaction=clear
dpddelay=300s

# Do not renegotiate a connection
#if it is about to expire
rekey=no

conn BASE
#server side
leftfirewall=yes
#leftid=btzdomainje.com
leftcert=eapSERVER_CERT.pem
leftsubnet=0.0.0.0/0,::/0

#client side
#rightsendcert=never

keyexchange=ikev2
auto=add

conn EAP0
also="BASE"
rightauth=pubkey
leftauth=pubkey
rightauth2=eap-md5
eap_identity=%any
leftsendcert=always
right=%any
rightdns=8.8.8.8,8.8.4.4
rightsourceip=%dhcp,2001:1:2:3500::/56

conn %default
Ez az IPsec alap kapcsolata. Ez érvényes minden további conn kapcsolatra, azaz a saját konfigurációmban lévő BASE és EAP0 kapcsolatokra is.
Miért nem lehet, akkor egy default conn-om és kész? Lehetne és működne is, de akkor nem tudnék a későbbiekben új típusú EAP csatlakozási lehetőséget felvenni. Ha a "leftauth=pubkey rightauth2=eap-md5" is a default conn része lenne, akkor már nem tudnék mellette más EAP konfigurácíót is létrehoni. (Ha épp kellene, pl majd a Win7-hez az EAP (Username/Password) only-hoz)

Also paraméter
Az egyik legfontosabb paraméter! Majdnem úgy működik, mint a conn %default, csak ez nem minden másik conn-ra illeszkedik, hanem csak a megadott nevűre. Itt a példában Az EAP0-ra illeszkedik a BASE conn.
Mi történne, ha a conn BASE paramétereit átemelném a conn %defaulba, a conn BASE-t pedig kitörölném a konfigból? Akkor ki kéne törölnöm a conn EAP0-ból az also paramétert. Ebben az esetben sima IKEv2 Certificate VPN type bejelentkezésre is lehetőség nyílna. Emellett tudnék további EAP1 EAP2 EAPn conn-okat létrehozni különböző EAP bejelentkezésekhez. (pl EAP-TLS (Certificate) ). Így is tudok, ahogy a fenti konfig alapján van, de így a sima IKEv2 Certificate nem működik, és ugye a cél az ez volt, hogy ez ne működjön. Ezért ilyen ez a konfig.

right-left
IPsecben a right-al kezdődő dolgok mindig a kliensgépre, left pedig a szerverre vonatkozó opciók. Pl a rightsourceip a kliens IP címét határozza meg.

IPv6
IPv6-hoz csak annyi kellett, hogy a leftsubnethez hozzá kellett adnom az IPv4-es 0.0.0.0/0 mellé egy ::/0-t is, rightsourceip-nél pedig a szolgáltatómtól kapott prefixből egy szabadon választott /56-os subnetet adtam hozzá.

...további ipsec.conf opció itt olvasható(Angolul)

StrongSwan és tűzfal beállítások
Az előző poszthoz képest ezek nem változtak, így ajánlom az előző blogposztom elolvasását (fent linkeltem)

Kliensoldali beállítások
- Készítek egy conn EAPx-t a windows kliens kapcsolódásához, ezt egy külön blogposztban fogom bemutatni, ha sikerrel járok.
- Androidra Playről letöltjük a StrongSwan klienst, előző blogposzthoz hasonlóan az ADD VPN PROFILE menüben a szervercím megadása mellett az IKEv2 Certificate+EAP (Username/Password) VPN type-ot válasszuk.

Köszönöm, hogy elolvastad, a bejegyzés topicjában várom a visszajelzéséket, kérdéseket, kiegészítéseket! :)

Copyright © 2000-2024 PROHARDVER Informatikai Kft.