OpenVPN szerverként és kliensként Windowson

először telepíteni kell az OpenVPN programot a szerver és a kliens oldalra is.

Windows alkalmazás telepítése

indítsuk el a telepítőt:

Telepít? indítása

Elfogadjuk a licensz-feltételeket:

Licensz feltétel elfogadása

Válasszuk ki az OpenVPN GUI, AutoStart OpenVPN GUI és OpenVPN Service komponenseket legalább, de a többit is érdemes a könnyebb konfiguráció miatt.

OpenVPN komponensek kiválasztása

Telepítési könyvtár elfogadása (alapesetben XP-n: C:\Program files\OpenVPN, Vista és Windows 7 (x64) esetén C:\Program Files (x86)\OpenVPN).

Telepítési könyvtár elfogadása

A virtuális TAP-Win32 Adapter V9 telepítésének jóváhagyása.

Figyelem!

Windows 7 és Vista esetén probléma van a régebbi OpenVPN verziókkal, mert a TAP driver nem Microsoft által aláírt változat! A jelenlegi V9-es változat ezt a problémát orvosolta.

TAP Win32 V9 driver elfogadása

tűzfal beállítása, ha van:

Az OpenVPN alapesetben az UDP vagy a TCP 1194-es portot használja, hacsak másképpen nem állítjuk be.

Szerver oldali beállítás

  • Ha tűzfal mögött vagyunk, akkor kifelé és befelé is engedélyezni kell a 1194-es TCP vagy UDP portot.
  • Ha router mögött vagyunk, akkor a számítógépünket állítsuk be fix IP címre és irányítsuk át a router 1194-es UDP vagy TCP portot a számítógépünk IP címére. (Egyes routereken ezt portforwarding, Application, NAT néven illetik)

Kliens oldalon

  • A kliens oldalon a tűzfal csak akkor probléma, ha a kifelé irányuló kapcsolatot sz?rik. Ekkor a tűzfalon a 1194-es UDP vagy TCP portot kell engedélyezni kifelé a számítógépünkről. Ha személyi tűzfalunk van, akkor még az OpenVPN alkalmazásra is engedélyezni kell a portot.
  • A router használata nem okoz problémát hacsak nincsen tiltva ez a port.

OpenVPN kulcsok generálása a szerveren

A telepítés során létrejött az <Telepítési könyvtár>\easy-rsa könyvtár. Ebben találhatók fájlok.

  • A vars.bat.sample fájlt át kell nevezni vars.bat-ra
  • az openssl.cnf.sample fájlt át kell nevezni openssl.cnf-re

Az ebben található bat file-ok segítségével lehet létrehozni a megfelelő kulcsokat a szerver és majd a kliens(ek) beállításához.

Meg kell nyitni a parancssort és utána futtatni kell a felsorolt parancsfájlokat az adott sorrendben.

Be kell állítani az alapvető értékeket

vars.bat- Azokat az alapvető beálításokat tartalmazza, amelyek a többi batch file-ban használandók. először át kell írni benne az alábbi értékeket a szükségesnek megfelelően. Például:

set KEY_COUNTRY=HU
set KEY_PROVINCE=HU
set KEY_CITY=Budapest
set KEY_ORG=Fzolee
set KEY_EMAIL=fz@fzolee.hu
vagy valami hasonló.

Futtassuk a vars.bat-ot.

Kell generálni egy ca cert-et

clean-all.bat- a key alkönvtárban törölni kell minden korábban létrehozott esetleges kulcsot
build-ca.bat  - a ca.crt generálása. Ez fogja a többi kulcsot aláírni

Szerver cert létrehozása

Ez azért kell, hogy azonosítani lehessen a szerver oldalt
build-key-server.bat <szervernév>

Kliens cert
Itt lehet előállítani a kliensek kulcsait. Minden kliensnek saját kulcsot lehet előállítani és a kapcsolat létrehozásához ezt kell kliens oldaln használni.
build-key kliens1
build-key kliens2
.....

Diffie Hellman paraméter legyártása
A Diffie Hellman paraméterekről nem írok semmit. Akit érdekel az rsa titkosítás területén keressen, például itt:
build-dh.bat

A fenti beállítások esetén XP-n az alábbi könyvtárban jönnek létre a kulcsok:

C:\Program Files\OpenVPN\easy-rsa\keys

Vista és Windows 7 (x64) esetén az alábbi könyvtárban jönnek létre a kulcsok:

C:\Program Files (x86)\OpenVPN\easy-rsa\keys

Ha a kulcsok létrehozásánál valamit elrontott, akkor futtassa a clean-all.bat fájlt, ami kitörli az összes korábban létrehozott kulcsot.

Szerver oldal bekonfigurálása

A konfigurációs állományokat a C:\Program Files\OpenVPN\config\ könyvtárba vagy annak egy alkönyvtárába helyezzük. Az OpenVPN a teljes könyvtárszerkjezetben megtalálja a megfelelő konfigurációs állományokat. A konfigurációs állomány kiterjesztése .ovpn. Ugyanebbe a könyvtárba tegyük a korábban legenerált szerver.key, szerver.crt, ca.cert, dh1024.pem fájlokat is.

Az alábbi példa egy szerver konfigurációt ír le.

###################################
# Példa OpenVPN 2.0 config file
# több klienssel
# 
# Ezt a fájlt a szerver oldalon kell használni
# of a many-clients <-> one-server             
#
# Ez a konfiguráció megy Linux és Windows szerveren is
#
# Windows esetén a \ helyett \\ kell használni# double backslashes, e.g.:
# "C:\\Program Files\\OpenVPN\\config\\foo.key"
#                                              
# A megjegyzések ilyen jelekkel kezdődhetnek:  '#' or ';'  
#################################################

# Milyen lokális IP címen figyel az OpenVPN
# Ha nem állítjuk be, akkor az összesen (opcionális)
local 192.168.0.1

# Milyen TCP vagy UDP porton figyel az OpenVPN
# Ha több OpenVPN példányt futtatunk, akkor mindegyiknek más portot kell beállítani
# A tűzfalon aportot meg kell nyitni
port 1194

# TCP vagy UDP szerver?
;proto tcp
proto udp

# "dev tun" route-olt IP csatornát hoz létre
# "dev tap" Ethernet csatornát hoz létre
# "dev tap0" -t használva ethernet bridge-et hozhatunk létre tap0 virtuális interface néven
# Ha eklérési szabályokat akarsz a VPN-re beállítani, akkor a tűzfalon szabályok kellenek a
# TUN/TAP interface-re beállítani.
# Linux rendszereken használd az explicit egység számot, pl. tun0.
# Windows rendszeren használd a "dev-node"-ot.
# A legtöbb esetben a tűzfalat teljesen ki kell kapcsolni a TUN/TAP interface-re
;dev tap
dev tun

# Windows rendszeren a TAP-Win32 lesz az adapter neve
# Ezt láthatod a Hálózati kapcsolatok ablakban.
# XP SP2 vagy későbbi rendszeren külön lehet a csatolókon kapcsolni a tűzfalat
# Más rendszeren erre nincsen szükség
;dev-node MyTap

# SSL/TLS root certificate (ca.crt),
# certificate (cert), server.crt
# private kulcs (key). server.key
# Minden kliensnek és szervernek van saját cert és key fájlja.
# A szerverek és a kliensek ugyanazt a ca.crt fájlt használjákT
#
# Az "easy-rsa\keys" könyvtárban jönnek létre generáláskor a fájlok
# A szervernél és minden egyes kliensnél kötelező használni a unique Common Name paramétert
#
ca ca.crt
cert server.crt
key server.key  # Ezt a fájl nem szabad kiadni
# Diffie Hellman paraméterek
dh dh1024.pem

# Konfigráljuk szerver üzemmódban a szervert, azaz
# hozzunk létre egy OpenVPN alhálózatot
# A szerver legyen a 10.8.0.1
# a többi IP legyen a klienseké. Minden kliens eléri a szervert
# az 10.8.0.1 címen.
server 10.8.0.0 255.255.255.0

# A kliensek virtuális IP címeit tároló fájladdress
# HA a szerver vagy az OPenVPN lekapcsolódik, akkor az újrakapcsolódáskor
# ugyanazt az IP-t kapják meg a kliensek
;ifconfig-pool-persist ipp.txt

# Ethernet bridge esetén használandó beállítások
# először az OS bridge lehetőségeit kell beállítani a TAP interface-re
# a NIC interface felhasználásával
# Utána állíthatod be az IP/netmask-ot a bridge-elt interface-re.
# A példában 10.8.0.4/255.255.255.0 a tartomány
# a kezdete 10.8.0.50, a vége 10.8.0.100.
# Ne használjuk, ha nem ethernet bridge-elést használunk
;server-bridge 10.8.0.4 255.255.255.0 10.8.0.50 10.8.0.100

# Ethernet Szerver bridge esetén használjuk ezt is.
# akkor használjuk, ha a szerver oldali DHCP-t használunk,
# ami az általa kiosztott IP-kel és DNS szerver címmel dolgozik.
# először be kell állítani a rendszer bridge lehetőségét a TAP interface-re.
# Megjegyzés: ez csak akkor működik, ha a kliens (pl. Windows) kliens oldali TAP adaptere
# egyben DHCP kliens is.
;server-bridge

# Routolási adatok átküldése a kliensnek.
#Szükséges, hogy az OpenVPN kliensek lássák a hálózati tartományt (10.8.0.0/255.255.255.0)
;push "route 192.168.10.0 255.255.255.0"
;push "route 192.168.20.0 255.255.255.0"

# To assign specific IP addresses to specific
# clients or if a connecting client has a private
# subnet behind it that should also have VPN access,
# use the subdirectory "ccd" for client-specific
# configuration files (see man page for more info).

# EXAMPle: Suppose the client
# having the certificate common name "Thelonious"
# also has a small subnet behind his connecting
# machine, such as 192.168.40.128/255.255.255.248.
# First, uncomment out these lines:
;client-config-dir ccd
;route 192.168.40.128 255.255.255.248

# Then create a file ccd/Thelonious with this line:
#   iroute 192.168.40.128 255.255.255.248
# This will allow Thelonious' private subnet to
# access the VPN.  This example will only work
# if you are routing, not bridging, i.e. you are
# using "dev tun" and "server" directives.

# EXAMPle: Suppose you want to give
# Thelonious a fixed VPN IP address of 10.9.0.1.
# First uncomment out these lines:
;client-config-dir ccd
;route 10.9.0.0 255.255.255.252
# Then add this line to ccd/Thelonious:
#   ifconfig-push 10.9.0.1 10.9.0.2

# Windows-specifikus beállításként átküldhetünk további parancsokat is
# DNS vagy WINS szerver elérésére
;push "dhcp-option DNS 208.67.222.222"
;push "dhcp-option DNS 208.67.220.220"

# A következő beálítás esetén a kliensek látják egymást
# A megfelelő tűzfal beállításokra szükség lehet
;client-to-client

# A kapcsolat ping-szerű tesztelését lehet beállítani
# Ping 10 másodpercenként, és ha a túlsó oldal nem megy
# 120 másodpercig, akkor fejezi be a próbálkozást
keepalive 10 120

# Töörítés beállítása a kapxcsolatban
# Lassú internet kapcsolat esetén hasznos.
# A kliensen is alkalmazni kell.
comp-lzo

# A maximális párhuzamos kapcsolatok száma
;max-clients 100

# Az OpenVPN démon jogosultságainak csökkentése
# Nem Windows rendszeren használjuk
;user nobody
;group nobody

# The persist options will try to avoid
# accessing certain resources on restart
# that may no longer be accessible because
# of the privilege downgrade.
persist-key
persist-tun

# Naplófájl helye és neve
status openvpn-status.log

# Alapesetben a syslog-ba illetve windowson szervízként futtatva
# a "\Program Files\OpenVPN\log" könyvtárba logol a rendszer.
# A log újraindul, ha az OpenVPN elindul.
# "log-append" hozzáf?zi a további logokat
;log         openvpn.log
;log-append  openvpn.log

# A log fájl szintjét állítjuk be
#
# 0 csak végzetes hibát logol
# 4 általános használat
# 5 és 6 segít a kapcsolat hibakeresésében
# 9 mindent ír
verb 3

# Az üzenetek ismétlésének beállítása.
# 20 ugyanolyan üzenetet eldob.
;mute 20

Kliens oldal konfigurálása

Az alábbiakban egy példa kliens konfigurációs állományt írunk le. A kliens.crt, kliens.crt, ca.crt fájlokat a szerveren állítjuk elő. A fájlokat a kliensen az alábbi könyvtárba célszerű tenni:

C:\Program files\OpenVPN\config\<szerverkliens>

, ahol a <szerverkliens> könyvtár egy tetszőlegesen elnevezett könyvtár. A config könyvtár minden alkönyvtárában lévő .ovpn fált megtalál a GUI.

#########################################
# Kliens oldali példa                    
# több klienses kapcsolat esetén         
#                                        
# Minden kliensnek van saját kulcsa (key)
# és cert fájlja                 
# Windows rendszeren a fájlnak a 
# kiterjesztése .ovpn     
#########################################

# Megmondjuk, hogy ez kliens
# Néhány beállítást a szervertől kap
client

# Ugyanaz a beállítás kell, mint a szerveren
# A tűzfalat be kell állítani megfelelően
;dev tap
dev tun

# Windows rendszeren a TAP-Win32 lesz az adapter neve
# Ezt láthatod a Hálózati kapcsolatok ablakban.
# XP SP2 vagy későbbi rendszeren külön lehet a csatolókon kapcsolni a tűzfalat
# Más rendszeren erre nincsen szükség
;dev-node MyTap

# TCP vagy UDP kapcsolatot használ? 
# Ugyanaz kell beállítani, mint a szerveren
;proto tcp
proto udp

# A domain név vagy IP és port beállítása a szerveren.
# Ha több szervert adunk meg, akkor terhelésmegosztásként
# más szerverekre kapcsolódhatunk
remote szerver01 1194
;remote szerver02 1194

# Válasszon a fent megadott szerverek közöt
# Különben a fenti sorrendet használja
;remote-random

# A szerver nevének ismételt feloldása.
# Akkor használható, ha a gépnek nincsen állandó kapcsolata
resolv-retry infinite

# Port bindelés lokális portra, ha szükséges. Általban nem szükséges
nobind

# Nem Windows esetén. Inicializálás utáni jog lefokozás
;user nobody
;group nobody

# Néhán beállítás megtartása újraindítás után
persist-key
persist-tun

# Wifi hálózatonm gyakori az ismételt újraküldés.
# Ez nem figyelmeztet az ismételt újraküldés esetén.
;mute-replay-warnings

# SSL/TLS paraméterek.
# A szerver cert és key, továbbá a kliens cert és key fájl a szerveren készül
# Minden kliens kapjon más .crt/.key fájl párt
# Minden kliensnek ugyanazt a ca fájlt kell használnia
ca ca.crt
cert kliens.crt
key kliens.key

# Szerver certificate ellenőrzése.
# A szerver nsCertType mez?je ki van-e töltve.
# A megfelelő mez?t a szerver cert generálásakor kell beállítani
ns-cert-type server

# tls-auth kulcs használata. Ha használjuk, akkor a klienseken is kell lennie
;tls-auth ta.key 1

# titkosítási mód.Select a cryptographic cipher.
# Ugyanazt állítsuk be, mint a szerveren
;cipher x

# A VPN kapcsolat tömörítése
comp-lzo

# A log fájl b?beszéd?sége
verb 3

# Az ismételt üzenetek elhallgatása
;mute 2