OpenVPN und Freetz, wie stricke ich mein eigenes VPN

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen

Das Board mit Freiheiten





Zebradem Fritzbox Wiki >> OpenVPN und Freetz, wie stricke ich mein eigenes VPN Magyar, Nederlands, Italiano, English
Community Modelle Freetz Fritzbox Tipps & Tricks

Einführung Freetz Pakete Freetz Addons Freetz Tipps Freetz chroot Freetz Images Freetz Faqs


OpenVPN@Freetz


Howto für OpenVPN mit Server@Freetz und Client@Windows


Damit ein "echtes" VPN gestrickt werden kann erkläre ich hier das ganze mit Zertifikaten zur Authentifizierung.

Es geht auch mit Key-Auhtentification, allerdings kann dann immer nur ein Client auf den Server connecten. Mit Zertifikaten können beliebig viele VPN CLients gleichzeitig verbunden werden.

Alle Befehle gebe ich per SSH Konsole ein, Files werden per SSH/WinSCP kopiert und editiert. Darauf gehe ich hier nicht weiter ein. Wer damit Probleme hat wird im Freetz/FAQ Bereich fündig.


Benötigt:

Image für Fritzbox mit OpenVPN
OpenVPN Client für Windows, z.B. SecurepointSSLVPN_RC3

Zum erstellen der Zertifikate für Server und Clients hab ich mir auf meinem Debian Server zusäzlich OpenVPN installiert:

Als "root" am Server angemeldet folgendes in der Konsole ausführen:

apt-get install openvpn openssl


Wenn alles installiert ist, mit WinSCP folgenden Ordner erstellen:

/etc/openvpn


Mit WinSCP wechseln nach

/usr/share/doc/openvpn/examples


Ordner "easy-rsa" kopieren nach

/etc/openvpn 


Wechseln nach:

/etc/openvpn/easy-rsa/2.0

Hier den Ordner "keys" anlegen.

Dann die Datei "vars" wie folgt editieren:

# easy-rsa parameter settings

# NOTE: If you installed from an RPM,
# don't edit this file in place in
# /usr/share/openvpn/easy-rsa --
# instead, you should copy the whole
# easy-rsa directory to another location
# (such as /etc/openvpn) so that your
# edits will not be wiped out by a future
# OpenVPN package upgrade.

# This variable should point to
# the top level of the easy-rsa
# tree.
export EASY_RSA="`pwd`"

#
# This variable should point to
# the requested executables
#
export OPENSSL="openssl"
export PKCS11TOOL="pkcs11-tool"
export GREP="grep"


# This variable should point to
# the openssl.cnf file included
# with easy-rsa.
export KEY_CONFIG=`$EASY_RSA/whichopensslcnf $EASY_RSA`

# Edit this variable to point to
# your soon-to-be-created key
# directory.
#
# WARNING: clean-all will do
# a rm -rf on this directory
# so make sure you define
# it correctly!
export KEY_DIR="$EASY_RSA/keys"

# Issue rm -rf warning
echo NOTE: If you run ./clean-all, I will be doing a rm -rf on $KEY_DIR 

# PKCS11 fixes
export PKCS11_MODULE_PATH="dummy"
export PKCS11_PIN="dummy" 

# Increase this to 2048 if you
# are paranoid.  This will slow
# down TLS negotiation performance
# as well as the one-time DH parms
# generation process.
export KEY_SIZE=1024

# In how many days should the root CA key expire?
export CA_EXPIRE=3650

# In how many days should certificates expire?
export KEY_EXPIRE=3650

# These are the default values for fields
# which will be placed in the certificate.
# Don't leave any of these fields blank.
export KEY_COUNTRY="DE"
export KEY_PROVINCE="ZD"
export KEY_CITY="ZDTOWN"
export KEY_ORG="Zebradem"
export KEY_EMAIL="[email protected]"

export OPENVPN=openvpn


Nun geht es an das erstellen der Zertifikate. Wenn man in der Konsole beim erstellen etwas eingeben muss, kann man einfach immer "ENTER" drücken.

Ausnahme: 
Wenn gefragt wird, ob Client-Zertifikate signiert werden sollen --> mit "y" (yes) bestätigen!!  


In der Konsole wechsel nach

/etc/openvpn/easy-rsa/2.0


vars einlesen und die CA initialisieren:

. ./vars
./clean-all ## ACHTUNG!! löscht Inhalt von Keys Verzeichnis, nur beim ersten mal ausführen !!


Wenn man zu einem späteren Zeitpunkt ein Client-Zertifikat erstellen möchte, muss vorher immer

. ./vars

ausgeführt werden!


CA-Key und CA-Cert erzeugen:

./build-ca


Diffie-Hellman Parameter erzeugen:

./build-dh


Erzeugen von Server-Schlüsselpaar direkt von der CA:

./build-key-server server


Erzeugen eines Client-Schlüsselpaars (ohne Passwort), für jeden Client eindeutigen Namen oder aufsteigende Nummer angeben:

./build-key client01


Zertifikate liegen nun in "/etc/openvpn/easy-rsa/2.0/keys"


Wenn man Client-Zertifikate mit Passwortschutz erstellen möchte:

./build-key-pass client01


Für Client benötigte Zertifikate und Dateien:

ca.crt
client01.crt
client01.key

Die 3 Dateien für den Client auf einen USB-Stick oder Client-Rechner kopieren.


Für Server benötigte Zertifikate und Dateien:

ca.crt
server.crt
server.key
dh1024.pem


Nun gehts in Freetz weiter :)


OpenVPN Einstellungen öffnen, Optionen wie folgt setzen:

[x] Automatisch
[x] Server
[x] UDP
[x] Brücke(TAP)
Port: 1194
[x] Zertifikate
Cipher: Blowfish
Lokale IP-Adresse:	10.8.0.1 (Dies wird die virtuelle IP vom Server, kann natürlich auch eine andere IP sein)
Netzmaske: 		255.255.255.0
DHCP-Range:		10.8.0.150 10.8.0.160 (Je nach bedarf der virtuelle IP Bereich für Clients)
Lokales Netz: 		192.168.178.0 255.255.255.0 (Tatsächlicher IP Bereich des LAN hinter dem Server, das von außen erreichbar sein soll)
[x] Erweiterte CLientkonfiguration (nicht unbedingt nötig, aber so wird es eine Runde Sache)
Client01 | 10.8.0.150 | 192.168.88.0 255.255.255.0  (Name des Client/Zertifikat | Fest zugewiesene VPN IP für Client | Zuletzt das echte Netz/LAN des Client mit Subnet)

Client02 | 10.8.0.151 | 192.168.55.0 255.255.255.0

Client03 | 10.8.0.152 | 192.168.33.0 255.255.255.0


Falls die Clients sich auch sehen sollen:

[x] Client-zu-Client
Anzahl der Maximalen Clients angeben.
DNS Server: 10.8.0.1

Den Rest so lassen wie er ist und speichern.

Mit WinSCP die folgenden Dateien öffnen und jeweils den gesamten Inhalt an genannte Stelle der OpenVPN Einstellung kopieren:

server.crt        --> Box Cert (übernehmen)
ca.crt            --> CA Cert  (übernehmen)
dh1024.pem        --> DH Param (übernehmen)
server.key        --> Private Key (übernehmen)

Unter OpenVPN/CRL einfach einmal "Übernehmen" drücken, damit eine leere Datei erzeugt wird. Sonst startet OpenVPN nicht!


AVM-Firewall Settings:

lowinput sowie highoutput gleich einstellen:

Quelle              --> any
Ziel                --> any
Protokoll           --> UDP
Start- und End-Port --> 1194
Aktion              --> permit

(übernehmen)


Port Forwarding:

Protokoll  --> UDP
Ziel       --> Fritz!Box
Quell Port --> 1194
Ziel Port  --> 1194
(übernehmen)

Fritzbox neu starten.


Weiter auf Client Rechner:

SecurepointSSLVPN_RC3 installieren.

VPN Client starten, neue Konfig anlegen:

Name
IP des Server (DynDns Adresse)
Root CA = ca.crt
Zertifikat = client01.crt
Schlüssel = client01.key
[x] Server Zertifikat
[ ] Auth user/pass (Haken entfernen!)
Rest so lassen, "Next" und "Finish" drücken.

Neu erstellte Konfig mit rechter Maustaste anklicken --> Editieren wählen

"DEV" von "tun" auf "tap" umstellen, "OK" klicken.

Wenn dies alles erledigt ist, am besten mal eine Sicherung der Freetz Settings sowie ein Export der Client-VPN-

Settings durchführen. War ja nun auch genug Arbeit ;)


Wenn man einen anderen Router als Client zum VPN Server verbindet, sollten beide LANs untereinander ereichbar sein. Wenn ein PC den Client darstellt, gibt es noch folgenden Trick:

Regedit auf Client-Rechner starten.

HKEY_LOCAL_MACHINE\ System\ CurrentControlSet\ Services\ Tcpip\ Parameters

Eintrag "IPEnableRouter" Wert auf 1 setzen.

Rechner neu starten.

Gateway der übrigen Rechner im Client LAN auf die IP des Client Rechner setzen.

Nun sollte man schön hin und her Pingen können...

Wichtige Links