SSTP VPN szerver Mikrotik Routerboardon

Ez a bejegyzés nem utolsósorban Misi cimborámnak szól, aki tudomásom szerint egy ideje már keresgél olyan VPN megoldást, ami bárhonnan, tűzfal, proxy mögül működik, kellőképpen biztonságos, és lehetőség szerint nem kell hozzá 3rd party klienst telepíteni. Az SSTP, hasonlatosan az OpenVPN-hez, nem igényli az ilyen-olyan kimenő portok nyitását, elég neki egy standard 443-as port, ezen keresztül építi fel a tunnelt. Ennek mutatom be a következőkben egy működő megoldását, amelynek a kiszolgáló oldalát a Mikrotik OS testesíti meg.

Áttekintés

Mi is az SSTP?
Az SSTP (Secure Socket Tunneling Protocol) egy Microsoft által kifejlesztett SSL alapú VPN, amely felváltani hivatott az eddigi implementációkat a megnövelt biztonsággal, kompatibilitással és teljesítménnyel.

Milyen operációs rendszerrel lehet használni?
Windows Vista SP1 és az utána megjelent PC és szerver Windows kiadások beépítve tartalmazzák. E mellett Linux alatt (pl. SoftEther, ez open-source) és Mikrotik routereken fut.

Mit jelent a megnövelt biztonság?
Az SSTP SSL (v3.0) kódolással csatlakozik, ami a mai kódolások között a legtöbbet használt és legbiztonságosabbnak tekintett készlet. Megoldásra kerültek a PPTP/L2TP biztonsági hibái. Hasonló SSL megoldást használ az OpenVPN.

Mit jelent a megnövelt kompatibilitás?
Az SSTP 443/HTTPS porton kommunikál, így gond és egyéb beállítás nélkül használható szinte minden tűzfal és NAT megoldás mögött. Az OpenVPN-hez hasonló módon proxyn keresztül is tud kommunikálni, de csak authentikáció nélkülin. Mivel a klienst beépítve tartalmazza Windows Vista SP1-től az összes M$ op. system, így nem kell telepíteni semmi kliensoldalon ezen a platformon, és nagyon egyszerű a kliensbeállítás is.

Mit jelent a megnövelt teljesítmény?
Mivel a Windows kernel szinten beépítve tartalmazza az SSTP VPN-t, így nincs az OpenVPN-hez hasonló userspace overhead, ezért jobb eredmények várhatóak sebességben.

Topológia

1_remote1

Megvalósítás

Szerveroldali lépések (konfiguráció a Routerboardon)

1., Certificate megkreálása. Itt én az egyszerűség (és persze költséghatékonyság szempontjából) egy self-signedet fogok használni; technikailag ez is ugyanolyan tökéletes. Ha az anyagiak engedik, akkor hivatalos tanúsítvány kibocsátótól is vásárolhatunk). Itt szükség lesz egy számítógépre, lehetőleg Linux OS-sel, és installált OpenSSL csomaggal.

# openssl genrsa 2048 > router_priv.pem (ez lesz a privát kulcsunk, 2048bit-es)
# openssl req -x509 -days 999 -new -key router_priv.pem -out router_pub.pem (ez fogja generálni a self-signed certificatet. Itt fogunk kapni pár kérdést, ezek közül az egyetlen ami nagyon fontos a CN (Common Name). Ennek meg kell egyeznie azzal az FQDN domainnévvel, amire majd a későbbiekben, mint SSTP szerver névre hivatkozunk)
# openssl pkcs12 -export -in router_pub.pem -inkey router_priv.pem -out router_pfx.pfx (ez konvertál nekünk egy .pfx kimenetet a certificateból (Personal Information Exchange), melyet majd, mint root CA-t kell importálnunk kliens oldalon (mivel nincs hivatalos kibocsátó, elhitetjük a windowssal, hogy mi vagyunk az)

2., Az elkészült certificate importálása a Mikrotikben

# certificate import file-name=router_pub.pem
# certificate import file-name=router_priv.pem

1

Hasonlót kell látnunk az importálás ellenőrzésekor.

3.,  Hozzunk létre egy PPP profile-t, külön az SSTP VPN serverhez.

# ppp profile add change-tcp-mss=yes name=sstp use-compression=yes use-encryption=yes use-vj-compression=yes

4.,  Hozzunk létre egy accountot, amivel majd a kliens csatlakozni tud (itt ez egy helyi user, de ha van a hálózaton RADIUS szerver, onnan is authentikálni)

# ppp secret add local-address=192.168.1.1 name=testuser password=testpassword profile=sstp remote-address=192.168.1.245 service=sstp

Ezt az utolsó parancsot nézzük meg alaposabban. Létrehoz tehát egy ‘testuser’ nevű usert, a megfelelő jelszóval. A ppp profil, amelyet használ, az előbbiekben létrehozott ‘sstp’ nevű lesz. A local-address a 192.168.1.1, mely a router local LAN felé néző interface, a remote-address pedig az az IP cím, amelyet a sikeresen becsatlakozott kliens kap meg. A létrehozott user csakis az sstp service-n valid, tehát pl. ssh loginként nem fogadja el a router.

5., A local LAN interfacen engedélyezzük a proxy-arp-t. Mivel a tunnel nem Layer2 szinten működik, így a becsatlakozott kliens MAC-addresse nyilvánvalóan nem fog “átjönni” a belső hálózat gépei számára. MAC-address nélkül azonban nincs kommunikáció sem, tehát erre szükség van. Ezt a szerepet fogja a local LAN interface ellátni azzal, hogy proxyzza a saját MAC addressét a kliensek és belső hálózati node-k között.

# interface bridge set bridge-local arp=proxy-arp (itt a bridge-local a belső hálózat felé néző interface)

6., Hozzuk létre az SSTP server virtuális interface-t.

# interface sstp-server add comment=”SSTP VPN” name=sstp-in1 user=””

7.,  Az SSTP server engedélyezése és beállítása

# interface sstp-server server set authentication=mschap2 certificate=cert_6 enabled=yes

Az autentikáció mschapv2-n történik, és a szerver certificate a cert_6 lesz, amit beimportáltunk.

8., Ha eddig nem tettük volna meg, a tűzfalon a 443-as portot ki kell nyitnunk a routeren, hogy az SSTP szerver fogadhassa a kéréseket.

#  ip firewall filter add chain=input protocol=tcp dst-port=443 action=accept

A szerveroldali konfiguráció a Routerboardon elkészült.

Kliensoldali lépések (konfiguráció  Windows 7-en jelen esetben)

1., Navigáljunk a ‘Control panel’ -> ‘Network and Sharing Center’ menüjébe, majd pedig kattintsunk a ‘Setup a new connection or network’ lehetőségre.

2

2., Válasszunk a ‘Connect to a workplace’ lehetőséget.

3

3., VPN connection létrehozása

4

4., Töltsük ki a mezőket az alábbi képen látható módon.

5

5., Felhasználónév és jelszó a csatlakozáshoz

6

6., A VPN kapcsolat kész, de még nem teljesen!

7

7., Zárjuk be az ablakot, majd újból navigáljuk a  ‘Control panel’ -> ‘Network and Sharing Center’ menübe. Bal oldalt a ‘Change adapter settings menüpontot válasszuk ki. Valami hasonlót fogunk látni (a kitakart részek nélkül, természetesen):

8

8., A létrehozott VPN kapcsolaton jobb egérgomb, majd pedig ‘Properties’ fül.

8
9

9., A ‘Security’ fülön a VPN típust állítsuk SSTP-re (enélkül is működni fog, de jóval több idő, mert először PPTP, majd L2TP/IPSec-kel próbálkozik, és csak utoljára SSTP-vel). Majd ugorjuk a ‘Network’ fülre.

10

IPv6-ra nincs szükség, az IPv4-es beállításoknál az IP cím és minden egyéb automatikus.

10., Az ‘Advanced’ fül alatt a következő pipát vegyük ki:

11

A ‘Use default gateway on remote network’-re nincs szükségünk, hacsak nem akarunk minden forgalmunkat a tunnelbe irányítani. Mi ezt nem szeretnénk, csak a távoli hálózatot elérni, az egyébként működő internetforgalom pedig menjen a saját default gateway-e felé

Tulajdonképpen készen is vagyunk!

11., Opcionális!! Ha a certificate-t nem vásároltunk, hanem self-signed, akkor a következő dolgot kell még megtennünk:

a., Start Menu ->Run -> mmc (Enter)
b., File menu -> Add/remove snap-in -> Certificates (Add)
c., Válasszuk a ‘Computer accountot’ -> Next -> Local computer (Finish)(OK)
d., Certificates (Local computer) -> Trusted root certification authorities -> Jobb egér
e., All tasks -> Import (cert-k kitallózása: router_pub.pem és router_pfx.pfx: itt, ha adtunk, akkor adjuk meg a passphrase-t)
f., Import, majd minden ‘Close’

Ez az a bizonyos lépés, amellyel a Windows számára “tesszük hivatalossá” a certificate-t.

Készen vagyunk!

12

Jobb egér gomb a létrehozott VPN kapcsolaton, majd ‘Connect’. Ha mindent jól csináltunk, a titkosított tunnel felépül, és nekünk tudnunk kell pingelni a belső hálózati node-okat.

Összegzés

Ez a típusú VPN nagyon leegyszerűsítette azt a problémát, amelyet a kliens tűzfal és/vagy proxy szerver mögött való elhelyezkedése vet föl. Mivel csak a 443-as célportot szükséges a kliensnek elérni, ez a legtöbb hálózaton nem akadály, a proxyk is általában átengedik. Tény és való: minderre képes az OpenVPN is. Ám annak a kliensoldali konfigurációja bonyolultabb, és ráadásul külön kell beszereznünk, míg ez a kliens a Windowsban integrálva van. Nagyfokú biztonsága, jó átviteli képessége, könnyű konfigurálhatósága pedig ötvözi azt, amit én egy jó VPN megoldástól elvárok.

Mind Windows nem-szerver verziókra, mind Linux-ra, továbbá Solaris-ra, FreeBSD-re és MAC OS X-re elérhető a szerver alkalmazása:

http://www.softether-download.com/en.aspx?product=softether