HowTO OpenVPN

[Fertiges (bugbereinigtes) HowTo .. --> FINAL ]

Ich habe diese erste Version meiner Anleitung bestehen gelassen, da sie ein paar andere interessante Ansätze beinhaltet wie zb. die Server-Bridge in der Serverkonfigurationsdatei (um ein hinter dem Server liegendes Netz einzubinden (Ethernetbridge muss realisiert werden)) das "Routing" und das automatische Zuweisen der IPs für den Server... etc.

________________________________________________________________________
Seit ein paar tagen arbeite ich mich jetzt schon intensiv in die materie ein.. der vpn server ist configuriert, ebenso der client.. gelößt habe ich dies mit "OPENVPN" !!
um sich vorstellen zu können welche art von vernetzung ich plane habe ich eine kleine zeichnung gemacht.



die meisten pcs in den beiden netzen sind windowspcs. der vpnserver und der vpnclient jedoch laufen mit suse9.2

hier die configs..
Code:
##### SERVER #####
dev tap0
server-bridge 10.0.0.1 255.255.255.0 10.0.0.2 10.0.0.10
ifconfig 10.0.0.1 255.255.255.0

route 192.168.123.0 255.255.255.0 10.0.0.2
port 1194
proto tcp-server

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem

tls-auth shared.key 0

client-to-client
keepalive 10 120

tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-tun
persist-key
comp-lzo
comp-noadapt
verb 3

Code:
##### CLIENT #####
client
tls-client
dev tap
remote YY.YY.YY.YY

route 192.168.0.0 255.255.255.0 10.0.0.1
port 1194
proto tcp-client

pull
ifconfig-nowarn

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/client1.crt
key /etc/openvpn/keys/client1.key

tls-auth shared.key 1

tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
ping 10
route-delay 10
persist-key
persist-tun
comp-lzo
comp-noadapt
verb 3


diese configs wurden eigentlich optimiert um dann das server-, sowie das client-netz mittels einer "netzwerkbrcke" in das vpn netz einzubinden.. (speziell die zeile "server bridge in der server config)
da ich mit netzwerkbrücken derzeit noch weniger erfahrung hab als mit vpn selbst, :a_augenruppel: hab ich das jedoch im endeffekt mittels ROUTING gelöst...

nun muss man zum schluss noch im (Server-LAN)ROUTER folgende statische routen eintragen:

Unter Linux würde so der Befehl so aussehen:
Code:
route add -net 192.168.123.0 netmask 255.255.255.0 gw 192.168.0.3
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.3


und im Client-lan-ROUTER diese 2:
Code:
route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.123.135
route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.123.135



:a_augenruppel: :a_augenruppel: :a_augenruppel:
Zur Erstellung der Zertifikate mehr im "finalen" HowTo --> final Howto
____________________________________________________________________________
____________________________________________________________________________

OpenVpn erlaubt weitaus einfacheren "tunnelbau", doch mir war maximale kompatibilität und maximale sicherheit sehr wichtig. daher hab ich zusätzlich zu den zertifikaten und der asymetrischen verschlsselung mit einem 1024bit langen schlüssel auch noch einen shared key in verwendung (welchen man ber eine sichere verbindung austauschen sollte), um DoS attacken abzuwehren...


Um mittels OpenVPN schnell und einfach ein Peer2Peer Netz aufzubauen bedarf es folgender simpler Konfigurationsdateien. (config für beide seiten)
Code:
remote YY.YY.YY.YY
##remote XX.XX.XX.XX # auf der anderen Tunnelseite

ifconfig 10.0.0.1 10.0.0.2
##ifconfig 10.0.0.2 10.0.0.1 # auf der anderen Tunnelseite

port 1194 #wie auch immer
dev tun #virtuelles device (layer3 - nicht für bridged network geeignet!)

secret shared.key
#zuerst mit "openvpn --genkey --secret shared.key" erstellen
#ein bisschen sicherheit muss sein


:d_niemals:

OpenSource 4TW



xapient.net



OpenVPN - mit Ethernet-Bridge

So.. da man mittels routen niemals das perfekte endergebnis erzielen kann da broadcasts nicht drber gehen .. (welche aber vorallem vom windowsnetzwerk und diersen spielen gebraucht werden) .. hier noch das endgltige howto fr eine VPN verbindung beliebig vieler netze mittels ethernet-brigde

:i_pc: :super::super: :i_pc:

wie erwähnt soll es möglich sein beliebig viele netze miteinander zu verbinden.. in folgender graphik sieht man das dies auch mit einzelnen clients möglich ist. hier muss man natrlich keine netzwerkbrcke einrichten.. wie man auch erkennen kann ist die adressenverteilung des VPN-Client1 netzes so angepasst dass diese sich nicht mit dem server netz berschneidet und im gleichen subnetz liegt.. dies gilt vorallem fr den 2ten router. bei aufbau einer vpn verbindung werden dem Client (wie man bei VPN-Client2 sehen kann) ip-adressen aus dem bereich des servers zugewiesen..



zu allererst richten wir den server ein.. man sollte sich die neueste openvpn version von hier downloaden.. openvpn.net

in diesem falle den windowsinstaller..
beim installationsvorgang wird ein neues device installiert.. der sogenannte Tap-win32 adapter..

nun richten wir die netzwerkbrücke ein damit es anderen clients möglich wird auch auf andere pcs im netz des servers zuzugreifen... hierzu muss man lediglich die LAN-Verbindung und den VPN-adapter markieren, mit der rechten maustaste draufklicken und "verbindung berbrcken" wählen.. (dies muss man später auf den VPN-Clients wiederholen) nun entsteht eine neue verbindung, die sogenannte Netzwerkbrcke.. eventuelle Ip oder Protokoll konfiguration muss inzukunft auf dieser durchgefhrt werden...

:i_compcrash:


nun muss man die zertifikate erstellen .. dazu öffnet man die "eingabeaufforderung" (START-AUSFÜHREN und dort " cmd " eintippen und absegnen) - Linux User sollten wissen was sie zu tun haben ;-)
(hier noch ein schönes howto zur erstellung der zertifikate unter linux)
HowTo Zertifikate


hier welchseln wir in das verzeichnis C:\Programme\OpenVPN\easy-rsa und beginnen mit der prozedur..
wir machen also folgendes..
Code:
cd C:\Programme\OpenVPN\easy-rsa
init-config
edit vars.bat


in dieser datei ändern wir folgende zeilen:

Code:
set KEY_COUNTRY=AT
set KEY_PROVINCE=Vienna
set KEY_CITY=Vienna
set KEY_ORG=XapeOrg
set KEY_EMAIL=sowas@hobi.net


freilich mssen die einträge nicht ident mit meinen sein.. sie sollten aber fr die einzelnen zertifikate der clients und des servers nicht geändert werden.. diese werte stehen nun als standarts zu verfgungn und mssen beim erstellen der zertifiakte nur noch mit "enter" bestätigt werden..

speichern und den editor beenden!

Nun werden die Zertifikate erstellt :
(Der Reihe nach ausführen)

Code:
vars

clean-all

build-ca

(man kann fast alles mit enter bestätigen bis auf:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
hier schreiben wir "ca" hin)

build-dh

build-key-server server

(man kann fast alles mit enter bestätigen bis auf:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
hier schreiben wir "Server" hin.. die anfragen am schluss mit Y bestätigen)

build-key client1

(man kann fast alles mit enter bestätigen bis auf:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:
hier schreiben wir "client1" hin.. die anfragen am schluss mit Y bestätigen)


die zertifikate wurden erstellt und liegen nun im verzeichnis "keys".
:a_bowing:
Für jeden weiteren Client muss man den letzten Schritt erneut ausführen und client1 selbstverständlich in client2 bzw. client3 etc. ändern..

Die Dateien
_________
client1.crt
client1.key
ca.crt
_________
müssen auf dem VPN-CLIENT (der Konfigurationsdatei entsprechend) im Verzeichnis C:\Programme\OpenVPN\easy-rsa\keys\
abgelegt werden.. ebenso müssen folgende Dateien in das, in der Konfigurationsdatei definierte Verzeichnis am Server gelegt werden.
_________
ca.crt
server.crt
server.key
dh1024.pem
_________

alles was wir jetzt noch benötigen um openvpn zu starten und die verbindung aufzubauen sind die konfigurationsdateien fr den VPN-Server und die VPN-Clients

dazu erstellen wir am server im verzeichnis C:\Programme\OpenVPN\config die datei "Server.ovpn" und tragen folgenden code ein... (ich verwende den port 1194 welcher bei einem router geöffnet und an die LAN-IP des VPN-Servers weitergeleitet werden muss. )

#### OpenVPN Windows-Server Config ####

port 1194
mode server
dev tap
client-to-client
tls-server

dh C:\\Programme\\OpenVPN\\easy-rsa\\keys\\dh1024.pem
ca C:\\Programme\\OpenVPN\\easy-rsa\\keys\\ca.crt
key C:\\Programme\\OpenVPN\\easy-rsa\\keys\\server.key
cert C:\\Programme\\OpenVPN\\easy-rsa\\keys\\server.crt

keepalive 10 60
verb 4
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-tun
persist-key
comp-lzo
comp-noadapt




Für einen Linux-Server, dessen lokales Netz ebenso in das VPN eingebunden werden sollte, sieht die Konfigurationsdatei folgendermassen aus: (Die Zeile Serverbridge ist relevant)

####### OpenVPN Linux-Server Config #########

port 1100
##beliebiger fix definerter Port
mode server
dev tap
client-to-client
tls-server

server-bridge 192.168.0.1 255.255.255.0 192.168.0.2 192.168.0.255
##Die Netzwerkbrücke br0 sollte mit der IP 192.168.0.1 konfiguriert werden (vorsicht vor Adresskonflikten!

chroot /etc/openvpn
## diese Zeile verbannt den Server in ein Verzeichnis. Alle benötigten Daten (Config, Keys) müssen in diesem Liegen (Sicherheitsfeature: Erfolgreiche Angreifer würden aus dem Verz. nicht rauskommen.)

ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/server.crt
key /etc/openvpn/keys/server.key
dh /etc/openvpn/keys/dh1024.pem


keepalive 10 60
verb 5
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-tun
persist-key
comp-lzo
comp-noadapt

Das virtuelle Device tap0 und die Netzwerkschnittstelle eth0 (zum LAN) müssen mittels BridgeUtils auf eine Netzwerkbrücke (br0) gebracht werden welche dann wie gewohnt konfiguriert wird und eine IP im Adressbereich des VPN erhält.

und am Client1 im verzeichnis C:\Programme\OpenVPN\config die datei "Client1.ovpn" und tragen folgenden code ein... (xxx.xxx.xxx.xxx ist die WAN-IP des VPN-SERVERSs und muss an die eigene angepasst werden.. auch www.meinsever.at wäre möglich falls man keine feste ip hat und dies per dyndns gelöst hat.. )
"client1" muss bei Client2 oder Client3 dementsprechend abgeändert werden..
Zitat:


port 1194
remote xxx.xxx.xxx.xxx

dev tap
tls-client

ca C:\\Programme\\OpenVPN\\easy-rsa\\keys\\ca.crt
key C:\\Programme\\OpenVPN\\easy-rsa\\keys\\client1.ke y
cert C:\\Programme\\OpenVPN\\easy-rsa\\keys\\client1.cr t

ns-cert-type server
keepalive 10 60
tun-mtu 1500
tun-mtu-extra 32
mssfix 1450
persist-tun
persist-key
comp-lzo
comp-noadapt
rout e-delay 10


nun muss man nur noch mit der rechten maustaste auf die Server.ovpn klicken und mit "start openvpn on this configfile" den VPN-SERVER starten.. vollzieht man diesen letzten schritt auch auf dem VPN-CLIENT sollte der VPN tunnel nun aufgebaut werden und das VPN-Netz funktionsbereit sein..

mfg xapient


:k_knienieder:

OpenSource 4TW



xapient.net


Aufbau einer Bridge (Linux)

Hier in Form eines kleinen Shellscripts.
Die Variablen müssen selbstverständlich angepasst werden.

#!/bin/bash

IF="eth0"
BRIDGE="br0" #bridged network
TAPDEV="tap0" # dev "tun" wird nicht unterstützt :p - wir arbeiten mit netzwerkbruecken
VPNIP="192.168.0.100" #muss aus dem Server Adressbereich sein
VPNBCAST="192.168.0.255"
VPNMASK="255.255.255.0"
VPNGATEWAY="192.168.0.200"
CONFIG="/etc/openvpn/client.conf"
VPNEXEC="openvpn"


#vpn starten (tap0 device wird angelegt)
exec sudo $VPNEXEC $CONFIG&


#bridge initialisieren
sudo brctl addbr $BRIDGE
sudo brctl addif $BRIDGE $TAPDEV
sudo brctl addif $BRIDGE $IF


#interfaces in den promiscious modus setzen
sudo ifconfig $IF 0.0.0.0 promisc up
sudo ifconfig $BRIDGE 0.0.0.0 promisc up
sudo ifconfig $TAPDEV 0.0.0.0 promisc up


#interface configurieren
sudo ifconfig $BRIDGE $VPNIP netmask $VPNMASK broadcast $VPNBCAST


#default gateway setzen
sudo route add default gw $VPNGATEWAY



Comments:

Warning: fopen(LOG.log): failed to open stream: Permission denied in /var/www/virtual/xapient.net/flexible/htdocs/wp-content/pages/postit.txt on line 12 ------------------------------------
03:59:25
Xapient:
Post your favorite commands

__________________________________________________________________

   (line break)    bold    italic