OpenVPN

From Frotmail Projects
Jump to navigation Jump to search

Installatie in Ubuntu

Bron: [1]

De installatie van OpenVPN kan eenvoudig via de apt-get repository

apt-get install openvpn

Opbouwen CA

OpenVPN is gebaseerd op een CA systeem. Dit kan je handmatig opbouwen maar hier gebruiken we een set scripts welke bij OpenVPN worden geleverd:

mkdir /etc/openvpn/easy-rsa/ 
cp -R /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/

In de vars file kan je de informatie over de CA owner instellen:

vi /etc/openvpn/easy-rsa/vars
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"

Als dit is aangepast kunnen we verder gaan met het genereren van de keys en het certificaat.

cd /etc/openvpn/easy-rsa/
source ./vars
./clean-all
./build-dh
./pkitool --initca
./pkitool --server server

Kopieren van de files naar de OpenVPN map:

cd keys
openvpn --genkey --secret ta.key
sudo cp server.crt server.key ca.crt dh1024.pem ta.key ../../

Configureren OpenVPN Server

Eerst kopieren we de sample config naar de /etc/openvpn map:

zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz > /etc/openvpn/server.conf

Daarna passen we deze file aan naar wens. Mijn config zonder het commentaar:

root@vps:/etc/openvpn# grep -v "^\;" server.conf | grep -v ^$ | grep -v ^#
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "route 10.8.0.0 255.255.255.0"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC   # AES
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log         openvpn.log
verb 4
mute 20

Configureren OpenVPN Client

Om met behulp van Easy-RSA een client aan te maken dien je de volgende commando's uit te voeren:

cd /etc/openvpn/easy-rsa
source ./vars
./pkitool [clientname]

Daarna moeten we de client.conf maken:

client
remote vps.frotmail.nl 1194
nobind
proto tcp
;proto udp
;dev tap
dev tun
ca ca.crt
cert [clientname].crt
key [clientname].key
tls-auth ta.key 1
cipher AES-256-CBC   # AES
comp-lzo
persist-key
persist-tun
verb 4

Tenslotte moeten we een aantal files kopieren naar de client:

[clientname].crt
[clientname].key
client.conf
ca.crt
ta.key

Deze kan de openvpn client starten met:

openvpn --config client.conf

In deze opstelling heeft iedere client een uniek certificaat nodig en kunnen ze niet dubbel inloggen. Bekijk als je dit anders wil de optie duplicate-cn

Routing

Op de server is het VPN netwerk een 'connected subnet' waardoor alle VPN users kunnen pingen naar de server en terug. Als een user probeert verbindingen te maken naar een ander netwerk aan de server zal hiervoor nog wat extra moeten worden aangepast.

Als je bijvoorbeeld de volgende setup hebt:

         [ VPN User ]
               |
         [ INTERNET ]
               |              <--- LAN subnet: 10.7.0.0/24
         [  WAN  Router  ]
           |           |
           |           |
[ OpenVPN Server ]  [ Client ]

Zal de VPN User niet de client kunnen pingen omdat de client niets weet van het VPN netwerk 10.8.0.0/24 Om dit op te lossen zal je op de WAN Router een statische route moeten maken naar het LAN ip van de server. Of, wat nog mooier is, je installeert Quagga en start een OSPF, RIP of BGP router en zorgt voor dynamische routering tussen je WAN Rotuer en OpenVPN server.