VPN megoldások I. – PPTP VPN szerver

Napjainkban a VPN (Virtual Private Networking) -virtuális magánhálózat- főként az IT szektorban dolgozók számára nem kuriózum. Napi szinten kell használniuk (nekem is), ami teljesen érthető: biztonságossá és kényelmessé teszi az otthoni munkát (home office). Segítségével a munkahelyi és az otthoni hálózaton való munka közötti különbség elenyészik.  Az OpenBSD biztonságosságáról már esett szó; ennek magas foka miatt előszeretettel használják tűzfalak, security gatewayek, VPN szerverek operációs rendszereként. A VPN megoldások egyik fajtája a PPTP VPN (Point-Point Tunneling Protocol). A következőkben ennek a konfigurálását szeretném bemutatni – OpenBSD-n.

VPN megoldások I. – PPTP VPN szerver

Nem szeretnék mélyebben belemenni a PPTP VPN ismertetésébe  (nem akarom az írást hálózatbiztonság felé elúsztatni), de pár szó erejéig kénytelen vagyok megtenni a jobb megértés kedvéért. A PPTP-t az RFC 2637 írja le részletesen. Maga a PPTP a TCP 1723 portot és a GRE (IP 47-es) protokollt használja a tunnel felépítéséhez, és mivel PPP enkapszulációt (emlékezzünk a modemes dial-in-re anno, az is PPP volt) használ, innen a neve is: tunnelezett PPP protokoll. Ez volt az első VPN protokoll, mely a Microsoft által támogatottá vált (mind kliens (Windows 95 OSR2 óta!!!), mind szerver oldalon (RRAS service)). Titkosításra az MPPE 128 algoritmust használja, mely -meglepő módon- 128 bites titkosítást biztosít.

Előnyei:
–    egyszerű megvalósítás, mind kliens, mind szerver oldalon
–    beépített kliensoldali támogatás Windows platformon
–    a legtöbb mobilplatform (Android, iOS, Windows Mobile, MacOS) is tartalmazza beépítve

Hátrányai:
–    a VPN megvalósítások között csak közép-erősen számít biztonságosnak
–    esetenként nehézkes egyedi route-k kiosztása a kliensnek
–    magasabb fokú biztonságra csak jóval több adminisztrációval lehet felkészíteni (pl. (P)EAP-TLS)

Topológia:

A topológia szerint van nekünk egy munkahelyi hálózatunk, kiszolgálókkal, köztük egy irodai pc-vel és van egy otthoni PC-nk, melyről szeretnénk biztonságos módon elérni a munkahelyi hálózatot.  Mivel én most a tesztet otthoni virtual pc-s környezetben végeztem, nem szimuláltam külön szolgáltatói hálózatot, de ez nem is fontos a teszt szempontjából.

A teszt irodai PC IP-je: 10.0.0.2
A VPN szerver irodai hálózat felé „néző” IP-je: 10.0.0.1
A VPN szerver publikus IP-je: 192.168.55.13
Az otthoni PC IP-je: 192.168.55.14

Router nincs köztük,  és a VPN szerveren sincs route, csak maga a futó PPTP daemon. A cél: az otthoni pc érje el az irodai pc-t.

Konfiguráció – szerver oldalról:

OpenBSD-n  PPTP VPN szerver funkciót a PoPToP nevű port tudja biztosítani. Ezt a szokott módon a port-fából tudjuk telepíteni:

# cd /usr/ports/net/poptop/
# make install

Ezzel meg is vagyunk. Nézzük a konfigurációt lépésenként:

1., A tun interfacek létrehozása

# cd /dev
# ./MAKEDEV tun? (ahol a ? a tunnel interface száma, >4-től indul)

2., az /etc/pptpd.conf file tartalma

option /etc/ppp/ppp.conf
# Ez az IP egy subnetben van az irodai pc-vel
localip 10.0.0.1

# Ebből a tartományból fog kapni a kliensünk IP-t
remoteip 10.0.0.3-10

# Ez az IP a VPN szerver külső “lába”
# Ide fog csatlakozni a kliens

listen 192.168.55.13

pidfile /var/run/pptpd.pid
noipparam

3., az /etc/ppp/ppp.conf file tartalma

loop:
set timeout 0
set log phase chat connect lcp ipcp command
set device localhost:pptp
set dial
set login
set mppe * stateful
set ifaddr 10.0.0.1 10.0.0.3-10 255.255.255.255
set server /tmp/loop “” 0177

loop-in:
set timeout 0
set log phase lcp ipcp command
allow mode direct

pptp:
load loop
disable pap
disable chap
enable mschapv2
disable deflate pred1
deny deflate pred1
disable ipv6
accept mppe
enable proxy
accept dns
set dns 192.168.55.1
set nbns 192.168.55.1
set device !/etc/ppp/secure

4., az /etc/ppp/secure file tartalma (futtatható)

#!/bin/sh
exec /usr/sbin/ppp -direct loop-in

5., az /etc/ppp/ppp.secret tartalma

# Authname Authkey      Peer’s IP address        Label   Callback

tompika    testpass     10.0.0.3
horsedick  bigbraner    10.0.0.4
secuser    securepass   10.0.0.5

6., Indítás (/etc/rc.conf-ba pptpd=YES)

/etc/rc.d/pptpd start

Szerver oldalról készen is vagyunk!

Konfiguráció – kliens oldalról:

A kliens legyen egy Windows7 (ezzel fogom bemutatni), de lehet XP, Vista, stb.

1., Vezérlőpult\Minden vezérlőpultelem\Hálózati és megosztási központ

2., Új kapcsolat vagy hálózat beállítása

3., Kapcsolódás munkahelyhez (majd: Tovább)

4., Saját internetkapcsolat (magánhálózat) használata (majd: Tovább)

5., Töltsük ki az internetcímet (ez az az IP cím mely a /etc/pptpd.conf ‘listen’ szekciójában szerepel).

6., a szerveren levő /etc/ppp/ppp.secret -ban szereplő username-pass páros valamelyike (majd Kattintsunk a ‘Létrehozás’ gombra )

7., Az itt levő képernyőn NE kattintsunk a ‘Csatlakozásra’, csak zárjuk be az ablakot.

8., Menjünk a Vezérlőpult\Hálózat és internet\Hálózati kapcsolatok ablakba.

9., Nyomjunk jobb egérgombot a létrehozott ‘First OpenBSD PPTP test’ csatolón, és válasszuk a ‘Tulajdonságok’ menüpontot.

10., Itt az IPv4 protokoll tulajdonságait válasszuk!

11., Ez fontos lépés! Vegyük ki a pipát az ‘Alapértelmezett átjáró használata a távoli hálózaton’ xheckbox-ból. Ha ezt nem tesszük, akkor MINDEN internet forgalmunkat ide fogja irányítani a tunnel (ezt nem akarjuk).

12., OK-zzunk le mindent, majd:

12., Nyomjuk meg a ‘Csatlakozás’ gombot!

13., Kész vagyunk! Ellenőrizzük, mit csináltunk!

Részletek:

Mindeközben a PPTP szerven is megjelent egy interface:

A tesztünk tehát sikeres volt. A PPTP VPN tunnel a két, egymástól független hálózat között felépült. Az ellenoldali node-k látják egymást, elérik egymást.

Összegzés:

Maga a leírás a sok screenshottal talán hosszú volt, de a fentebbi működő konfiguráció életre keltése negyed órán belül történt. A PPTP  gyakran használt protokoll VPN tunnel felépítésére. Vállalati vagy Small Office környezetben, ahol az infrastruktúra és az erre fordítható összeg véges, gyakran találkozhatunk ezzel a megoldással. Egyszerű, megbízható és könnyen is konfigurálható; ehhez hasonló szájbarágós leírás alapján rendszergazdai ismeretek nélkül is könnyen beállítható (itt természetesen kliensoldalról beszélek). A szerveroldalon, mint szintén látható, minimális odafigyeléssel fel lehet építeni a PPTP kiszolgálót. Bízom benne, hogy e leírás segítségére lesz másnak is.