Beállítás (gyakorlat)
Előkészületek
Ennél a példánál a site-to-site példában megadott VPN környezetet feltételezzük. Ide értve az ott létrehozott tanúsítványokat is.
Az office router-en fogunk kialakítani egy olyan VPN szerver beállítást, road warrior kliensek csatlakozását is fogadni tudja. Ahogy ott, itt is nagyon fontos az NTP kliens helyes beállítása.
Tanúsítványok
Arra készülünk, hogy sok road warrior kliens fog csatlakozni. Ezért egy úgynevezet tanúsítvány sablont hozunk létre. Ebből később könnyebb lesz származtatni az egyes kliens tanúsítványokat.
/certificate
add name="~client-template@office.myserver.hu" \
country="HU" state="Heves" locality="Eger" \
organization="office.myserver.hu" \
key-size=4096 days-valid=1095 \
common-name="~client-template@office.myserver.hu" \
subject-alt-name="email:~client-template@office.myserver.hu" \
trusted=yes key-usage=tls-client
A template-et nem írjuk alá! Minden klienshez külön kliens tanúsítványt generálunk. Kliens alatt nem felhasználót kell érteni, hanem VPN kliens eszközt. Ha egy felhasználó több számítógépről is be akar jelentkezni (pl. a telefonjáról és a laptopjáról), akkor ezekhez külön tanúsítványt kell létrehozni. Mi most egy gandalf nevű felhasználóhoz és egy vivobook laptophoz tartozó tanúsítványt generálunk a template-ből:
/certificate
add copy-from=~client-template@office.myserver.hu \
name="gandalf-vivobook@office.myserver.hu" \
common-name="gandalf-vivobook@office.myserver.hu" \
subject-alt-name=email:gandalf-vivobook@office.myserver.hu
sign gandalf-vivobook@office.myserver.hu ca=ca.office.myserver.hu
Ezután exportáljuk a kliens és a CA cert-et. A kliens cert-hez a privát kulcsot is.
/certificate
export-certificate gandalf-vivobook@myserver.hu type=pkcs12 export-passphrase="not_telling_you"
export-certificate ca.office.myserver.hu
VPN kliensek alhálózata
A VPN klienseknek egy saját címtartományt adunk. A router-en fölveszünk egy hidat, és adunk neki egy címet ezen az alhálózaton belül. A kapcsolódó kliensek ebből a tartományból fognak címeket kapni.
/interface bridge
add name=bridge-vpn-rw comment="VPN Road Warrior"
/ip address
add address=10.10.10.254/24 comment="VPN Road-Warrior" name=pool-vpn-rw
mode-config
Az IKE/ISAKMP protokoll nem csak kulcsok és titkosítási algoritmusok egyeztetésére használható. Ezen keresztül lehet IP címet beállítani, közölni a másik féllel az elérhető alhálózatokat ("route push") stb. Ezen paraméterek megadására való a mode-config.
/ip ipsec mode-config
add address-pool=pool-vpn-rw address-prefix-length=32 \
name=modeconf-vpn-rw split-include=172.16.1.0/24,172.16.2.0/24 \
static-dns=172.16.1.1 system-dns=no responder=yes
- Az address-pool mondja meg, hogy melyik IP pool-ból osztunk címeket
- Az address-prefix-length mondha meg, hogy mennyi címet osztunk. (Nem csak egyedi címet lehet átadni, hanem teljes címtartományokat is.)
- A split-include segítségével lehet megadni egy vagy több helyi alhálózatot. A másik peer megkapja ezeket a hálózatokat. Értesül arról, hogy ezen a peer-en keresztül milyen hálózati címtartományok érhetők el. Ennek a policy generálásnál lesz szerepe (erről később írok)
- A static-dns megadásával lehet átküldeni azt a DNS szervert, ami a helyi hálózat címeit tudja feloldani.
- A system-dns=no beállítás akadályozza meg azt, hogy a helyi router DNS-t (/ip dns és /ip dns static) adja át a másik félnek
- A responder=yes beállítás hatására ez a peer küldi át a mode-config beállításokat a távoli peer-nek. Ha ez no-ra van állítva, akkor ez az initiator oldal.
IKE Phase 1 (ipsec profile) és phase 2 (ipsec proposal)
Hogy ez pontosan mit jelent, azt a site-to-site VPN résznél már leírtam. Ami ahhoz képest eltérés, az az algoritmusok megválasztása. Itt többféle kliensre számítunk: Windows 10, Linux, iOS, különböző android verziók stb. Próbálunk beállítani biztonságos algoritmusokat. De figyelembe kell vennünk azt, hogy várhatóan milyen típusú klienseket szeretnénk támogatni, és hogy ezek a kliensek milyen algoritmusokat támogatnak, plusz még azt is, hogy milyen algoritmusokhoz van hardveres gyorsítás a router-ben.
/ip ipsec profile
add dh-group=modp2048,modp1536,modp1024 \
enc-algorithm=aes-256,aes-192,aes-128 \
hash-algorithm=sha256 \
name=profile-vpn-rw \
nat-traversal=yes proposal-check=claim
/ip ipsec proposal
add auth-algorithms=sha512,sha256,sha1 \
enc-algorithms=aes-256-cbc,aes-256-ctr,aes-192-cbc,aes-192-ctr,aes-128-cbc,aes-128-ctr \
lifetime=8h name=proposal-vpn-rw pfs-group=none
Hogy melyik OS milyen algoritmusokat támogat, arról például itt is tájékozódhatsz:
Érdekes, hogy például a Windows 10 kliensek az első IKE fázisban támogatják a modp1024 + SHA256 beállítást, de a második fázisban hash algoritmusnak kizárólag az SHA1-et támogatja, pfs-t pedig egyáltalán nem tud használni. (Ezért engedélyeztem az SHA1-et, máskülönben Windows-ból nem lehetne csatlakozni.)
Policy group
A policy group egy névvel ellátott csoportot határoz meg. A nevén kívül semmit nem lehet itt megadni. Ennek az a jelentősége, hogy ezzel lehet összekapcsolni a peer-t és a policy template-eket.
/ip ipsec policy group
add name=group-vpn-rw