sabek
Goto Top

openVPN Verbindung zwischen Win2003 und WinXP Pro, aber wie ?

Hallo zusammen,

ich würde gerne von überall (mit meinem Laptop) in mein privates Netzwerk reinkommen, damit ich auf die Freigeben zugreifen kann und meine Projekte mittels einen Subversion Server abgleichen kann. Eine funktionierende DynDNS Lösung habe ich ja schon. Mein Problem ist es das openVPN sicher und funktionsfähig zu machen.

Im Netz sind die meisten Anleitungen für Linux, bei den für Windows komme ich leider nicht zurecht.

Habe openVPN 2.1 installiert und dann wenn es um die Zertifikat-Erstellung geht bzw. die confings zu bearbeiten (im Ordner "easy-rsa"), verstehe ich nur Bahnhof.

gibt es jemanden der mir eine "Schritt für Schritt" Hilfestellung geben könnte.

Content-ID: 73834

Url: https://administrator.de/contentid/73834

Ausgedruckt am: 22.11.2024 um 18:11 Uhr

datasearch
datasearch 19.11.2007 um 00:19:17 Uhr
Goto Top
Das ist eigentlich nichts besonderes. Eine Step-by-Step Anleitung? Ok, mal sehen ob ich sowas zusammenbekomme.

Du benötigst ein Netz indem du die OpenVPN Tunnel "organisierst". Jeder Client bekommt auf seinem OpenVPN Interface eine IP aus diesem Netz. Nennen wir es mal VPN-Netz und geben ihm den Bereich 192.168.254.0/24. Der OpenVPN Server selbst benötigt eine IP in diesem Netz. Um nicht alles so komplex zu gestallten nehmen wir einmal die 192.168.254.1. Komprimierung im Tunnel sollte man bei einem Windows-Server lassen, hat bei mir früher oder später immer Probleme verursacht. Dürfen die Clients untereinander daten austauschen? Falls ja benötigen wir noch eine Option. Dazu später. Was brauchen wir auch noch? Ein Protokoll (TCP oder UDP) und einen passenden Port. Ich sage einfach mal nehmen wir 20088 UDP. Welches Netzwerk befindet sich auf der "anderen Seite"? Ich gehe mal davon aus das dein Internes LAN im Bereich 192.168.0.0/24 liegt. Was benötigen wir noch? Einen Router(server). Das MUSS Windows Server sein, da du sonst probleme mit dem IP-Forwarding bekommst (Theoretisch kannst du das auch unter XP freischalten oder Bridge-Tunnel verwenden, aber das werde ich hier nicht beschreiben.) Ok, alle Daten noch einmal im Überblick:

- VPN 192.168.264.0/24
- LAN 192.168.0.0/24
- Router-IP (VPN): 192.168.254.1
- Router-IP (LAN): 192.168.0.1
- Protokoll: UDP, Port 20088
- Client2Client soll möglich sein
- mehrfachverwendung der Zertifikate soll nicht möglich sein
- Windows Server mit aktivem LAN-Router (Routing&RAS im LAN-Routing Modus)

Nun die Server-Config:

openvpn.conf:
; der Port
port 20088
; das L4 Protokoll
proto udp
; interface-typ
dev tun
; MTU des tunnels Automatisch bestimmen
mtu-test
; wir haben einen tls-Server
tls-server
mode server
; der Server bekommt die 192.168.254.1/24
ifconfig 192.168.254.1 255.255.255.0
; verschlüsselung mit 256bit AES CBC
cipher AES-256-CBC
; keepalive-intervall
keepalive 15 30
; verbosity (debug-level)
verb 1
; Clients dürfen untereinander kommunizieren
client-to-client
; Zertifikate dürfen doppelt verwendet werden
duplicate-cn
; clients-IP´s merken und wieder vergeben
ifconfig-pool-persist pool.txt
; einige Options mitgeben
push "route 192.168.0.0 255.255.255.0"
push "dhcp-option DNS 192.168.0.10"
push "dhcp-option WINS 192.168.0.10"
; soll der default-GW des clients umgebogen werden?
push "redirect-gateway"

; Zertifikate

; Zertifizierungsstellen-Zertifikat
ca ca.crt
; Server-Certifikat
cert server.crt
; DER GEHEIME SCHLÜSSEL DES SERVER ZERTIFIKATS
key server.key
; DH-Parameter zum aushandeln des Schlüsselmaterials
dh dh-2048.pem


So, nun erstellen wir schnell noch eine CA und ein Server-Cert.

Öffne eine konsole, wechsle in das Easy-RSA Verzeichniss und starte init-config.bat
Nun sollte eine vars.bat irgendwo rumliegen. Öffne diese Datei in Notepad und gib deine Werte für KEY_COUNTRY, PROVINCE, CITY, ORG usw. ein. Bitte hier sorgfältig vorgehen, das steht später in deinen Zertifikaten.
Irgendwo steht auch etwas von KEY_SIZE. Setze diese bitte auf 2048. Hast du alle Variabeln mit werten gefüllt, starte in der konsole (die hoffentlich noch geöffnet ist) folgendes:
vars.batclean-all.batbuild-ca.bat
Bitte auch in dieser folge face-wink
Aso, falls dich das Script nach einem CN (Common Name) fragt, verwende bitte einen eindeutigen Namen für die Zertifizierungsstelle. Dieser Name darf in KEINEM Cert doppelt vergeben werden.

Anschließend kannst du das Zertifikat für den Server erstellen, der von der eben erstellten CA signiert wird. Wieder in der hoffentlich noch geöffneten Konsole gibst du folgendes ein:

build-key-server.bat vpn-server

und zum Abschluss noch ein Client-Zertifikat. Das geht wieder in der Konsole mit folgendem Befehl:

build-key user1

oder was auch immer. PASS BITTE IMMER AUF DEN CN AUF!!!

Nun brauchen wir noch die DH Parameter. Der folgende Befehl erledigt auch das.

build-dh.bat


Zertifikate:

Auf dem Server:
ca.crt
dh-2048.pem
server.crt
server.key


Auf dem Client:
ca.crt
user1.crt
user1.key


Ich benenne die user1-2000000.crt(.key) immer in user.crt und user.key um, um am client immer die selbe config verwenden zu können. Habe ein script das das client-package erstellt und zipp´t.

Fehlt noch etwas? Aso, die client-config. Werde ich morgen nachholen. Ist schon zu spät. probier erstmal nur den Zertifikat-Teil mit deiner Config.
sabek
sabek 19.11.2007 um 08:40:25 Uhr
Goto Top
@datasearch Danke ertsmal, dass du die soviel Zeit genommen hast und eine sehr ausführliche Antwort gegeben hast. Deinen Vorschlag werde ich aber erst heute nach 20.00 Uhr ausprobieren können und die dann berichten.

Zwischendurch hätte ich aber noch ein Paar Fragen:

- Wenn ich mir das standard-example anschaue (von openVPN 2.1), dann ist es 3 Mal so groß.
Reicht dein Beispiel (Server-Config) aus ?


- Ich benutze den Server nicht als Router. Dafür habe ich einen anderen normalen WlanRouter von Netgear. Dieser kann zwar kein VPN aber ich habe an dem ein Port-Forwarding eingestellt mit dem Verweis auf die ServerIP (hat eine statische 192.168.1.2). Desweiteren habe ich in der Registry den Schlüssel
HKEY_LOCAL_MACHINE/System/Services/TcpIP/Parameters/IPEnableRouter von "0" auf "1" gestellt.
Ist das dann noch möglich ?


- Habe ich das richtig verstanden, dass mein lokales Netz 192.168.1.0 bestehen bleibt und mein VPN ein zweites bekommt. Um es besser auseinander zu halten würde ich dann 10.10.10.10 nehmen.
Geht das in Ordnung ?


- Ich meine was ist , wenn ich einen bestimmten Client nicht mehr erlauben möchte sich einzuwählen. Dann müsste ich doch ein neues Zertifikat erstellen und an die restlichen verteilen.
Deswegen würde ich gerne verschiedene Zertifikate an die Clients vergeben. Aber wie ?


Danke nochmal und bis später.
sabek
datasearch
datasearch 19.11.2007 um 10:37:52 Uhr
Goto Top
- Wenn ich mir das standard-example
anschaue (von openVPN 2.1), dann ist es 3 Mal
so groß.
Reicht dein Beispiel (Server-Config) aus ?

Das sind die minimal erforderlichen Optionen. Du kannst natürlich die Original config nehmen und die Parameter einfach nur anpassen. Mir sind jetzt auf die schnelle nicht alle Parameter eingefallen die da default vorhanden sind.

Die config soll dir ja auch nur zeigen welcher Parameter was macht.

- Ich benutze den Server nicht als Router.
Dafür habe ich einen anderen normalen
WlanRouter von Netgear. Dieser kann zwar kein
VPN aber ich habe an dem ein Port-Forwarding
eingestellt mit dem Verweis auf die ServerIP
(hat eine statische 192.168.1.2).

Alles kein Problem. Du musst eben nur den Port und das Protokoll das du in deiner Config angibst (hier UDP 20088) im Netgear forwarden. Ich bin auch davon ausgegangen das du das so machst. Alles andere währe nicht gut.

Desweiteren
habe ich in der Regiswie den Schlüssel
HKEY_LOCAL_MACHINE/System/Services/TcpIP/Parameters/IPEnableRouter von "0" auf "1"
gestellt.
Ist das dann noch möglich ?

Jepp. Das geht auch. Du kannst den router auch mit netsh oder sonst einem Tool aktivieren. Alle diese Tools setzen sowieso nur diesen RegKey.
ABER...wie gesagt. Es ist komplizierter zu verwalten da du keine GUI für das Routing hast.
Hast du denn keinen WindowsServer der für diese Dinge abgestellt werden kann? Kann auch W2Ksrv sein.

- Habe ich das richtig verstanden, dass mein
lokales Netz 192.168.1.0 bestehen bleibt und
mein VPN ein zweites bekommt. Um es besser
auseinander zu halten würde ich dann
10.10.10.10 nehmen.
Geht das in Ordnung ?

Sind alles Beispiele da oben. OpenVPN nutzt ja TUN/TAP Interfaces. Diese bekommen bei erfolgreicher Verbindungsherstellung eine IP (entweder statisch oder per DHCP vom openVPN server). Damit du das auch Routen kannst, musst du für diesen Netz ein extra "subnetz" angeben. Welches das ist ist wurscht, es darf sich eben nur nicht mit dem internem LAN überschneiden. 10.10.10.0/24 ist auch OK 10.10.10.1 würde ich ehr für den Router nehmen.


- Ich meine was ist , wenn ich einen
bestimmten Client nicht mehr erlauben
möchte sich einzuwählen. Dann
müsste ich doch ein neues Zertifikat
erstellen und an die restlichen verteilen.
Deswegen würde ich gerne verschiedene
Zertifikate an die Clients vergeben. Aber wie?

Schau doch einmal oben. Im dritten Schritt bei der Zertifikaterstellung erstellen wir ein Zertifikat mit dem Namen client1.crt und dem Schlüssel client1.key.
Du müsstest in deiner openvpn.conf noch den folgenden Parameter hinzufügen:

crl-verify revoke.pem

ein Zertifikat sperrst du in der easy-RSA mit folgendem Befehl:
WICHTIG! starte immer zuerst die vars.bat wenn du Zertifikate erstellst/sperrst.

start -> ausführen -> cmdcd EASYRSA-PFAD!varsrevoke-full client1

Anschließend die crl.pem in den openvpn config-ordner schieben ODER in der konfig den absoluten Pfad zur CRL angeben.
Ist ein Zertifikat einmal gesperrt, ist Feierabend für den Client. Du musst ein neues ausstellen.

Wie du ein weiteres erstellst? Ok, das geht wieder genauso.

start -> ausführen -> cmdcd EASY-RSA PFADvarsbuild-key user2 BEI DEM CN AUFPASSEN! build-key user3...

Du musst dann client2.crt, client2.key ca.crt MÖGLICHST SICHER an den Client weitergeben.

easyRSA erstellt immer 3 Dateien pro Request. Eine Zertifikatanforderung, einen Privaten Schlüssel und ein Zertifikat. Wenn du in deiner Domäne einen Windows Zertifikatserver hast, kannst du den request auch dort einreichen. Die .crt und die .key sind für dich die wichtigen. Alles andere einfach liegen lassen. Ich bin mir jetzt auch nicht sicher ob du bei dem revoke die serial des Zertifikates oder den Namen angeben musst (ich mache das über die Windows Zertifizierungsstelle). Er sollte aber einen Fehler melden falls du das falsche angegeben hast.
sabek
sabek 20.11.2007 um 00:08:05 Uhr
Goto Top
Danke erstmal für deine ausführliche Antwort.
Könntest du mir die User-Config noch zusenden.

[; interface-typ
dev tun]
- wo ist den eigentlich der Unterschied zwischen TAP und TUN ?
- ist für meine Verwendung "tun" richtig ?

[Zertifikate:
ca.crt
user1.crt
user1.key]
- wo sollen diese platziert werden ?

[Habe ein script das das client-package erstellt und zipp´t.]
- warum ein package ?
- braucht man dieses package unbedingt und wenn ja, könntest du dein script zu verfügung stellen ?

[Hast du denn keinen WindowsServer der für diese Dinge abgestellt werden kann? Kann auch W2Ksrv sein]
- leider nicht.
- reicht die Umstellung des REG-Schlüssels nicht oder muss ich noch das RAS-Dienst starten und irgenwelche Routing Tabellen erstellen ?

[ ..10.10.10.0/24 ist auch OK 10.10.10.1 würde ich ehr für den Router nehmen.]
- welchen Router meinst du ?
- habe ja nur den Netgear und der hat 192.168.1.1

[Du müsstest in deiner openvpn.conf noch den folgenden Parameter hinzufügen:
crl-verify revoke.pem]
- "openvpn.conf" meinst du die "server.ovpn" ?
- soll ich den Parameter auf jeden Fall hinzufügen, oder nur dann wenn schon welche Clients auf der Balcklist stehen ?

[easyRSA erstellt immer 3 Dateien pro Request. Eine Zertifikatanforderung, einen Privaten Schlüssel und ein Zertifikat.]
- wo sollen diese platziert werden ?

[Zertifizierungsstelle]
- kann ich momentan nicht ausführen, da noch irgendwelche Dienste installiert werden müssen.
die WinCD ist aber im Kinderzimmer. Kann ich erst morgen machen.

[ch bin mir jetzt auch nicht sicher ob du bei dem revoke die serial des Zertifikates oder den Namen angeben musst]
- Was muss ich an der Zertifizierungsstelle machen (revoke??) ?
Habe es bis jetzt nie benutzt, deswegen auch kein Plan. Aber warten wir bis morgen abend bis ich es nachinstalliert habe.

Im großen und ganzen bin ich ja dank deiner Hilfe ja schon weit gekommen. Nur mit dem Router habe es noch nicht richtig verstanden, wer welche IP haben muss. ;)

Danke nochmal.
sabek
datasearch
datasearch 20.11.2007 um 14:37:29 Uhr
Goto Top
Ich habe da mal ein kleines Howto zusammengebastelt. Kannst es ja mal anschauen. Ich habe im erstem Teil die Grundlagen sowie die zertifikaterstellung beschrieben.

OpenVPN - Teil 1 - Installation, Konfiguration und erstellung der Zertifikate
sabek
sabek 20.11.2007 um 22:05:43 Uhr
Goto Top
Leider ist dort nichts zu sehen face-sad
Überprüfe bitte nochmal den Link.

Weiß zwar nicht was in deinem HowTo drin steht, aber die Schlüssel habe ich ja erstellt.
Nur was ist ab jetzt ?
datasearch
datasearch 21.11.2007 um 23:08:11 Uhr
Goto Top
okokokok sry, kommt ja schon.

OpenVPN Client-Konfiguration:

; Verbindungremote DEINSERVER.DYNDNS.ORGport 20088proto udp; Modus und Device-Typdev tuntls-client; Verschlüsselngcipher AES-256-CBC; keepalivekeepalive 15 30; verbosityverb 1; Zertifikateca ca.crtcert client1.crtkey client1.key

Dateien:

openvpn.conf Konfigurationsdatei des Clients
ca.crt Zertifizierungsstellen-Zertifikat
client1.crt Zertifikat für Client1
client1.key Geheimer Schlüssel für das Zertifikat


Das ist zwar etwas sehr kurz, ich bin gerade dabei den zweiten Teil für mein openVPN HowTO vorzubereiten. Dort kannst du das dann noch einmal nachlesen. Falls noch fragen sind, jederzeit face-wink
sabek
sabek 22.11.2007 um 01:00:40 Uhr
Goto Top
[Dort kannst du das dann noch einmal nachlesen.].
- Würde ich ja gerne, aber wo ?
Wie schon gesagt unter deinem Link ist nichts. Es öffnet sich die Seite aber die ist ganz weiß, also nichts ist zu sehen.

Weiß erst mal nicht wo ich die Zertifikate platzieren soll und wie ich den beiden sage (Server und Client) von wo sich diese befinden.

Ich kann aber gerne warten bis du dei HowTo zu ende schreibst und lese mir das erst mal an.
Denke an den leeren Link ;)

Bis bald
datasearch
datasearch 22.11.2007 um 10:56:32 Uhr
Goto Top
Schau mal in meinen letzten Beiträgen. Da sollte das easyRSA howto zu finden sein.

Wir haben doch weiter oben in den Postings Zertifikate für den Server und Client erstellt. Diese müssen in den OpenVPN Konfigurationsordner zusammen mit der openvpn.conf gelegt werden.
sabek
sabek 24.11.2007 um 20:26:24 Uhr
Goto Top
datasearch
datasearch 24.11.2007 um 21:33:19 Uhr
Goto Top
C:\Programme\OpenVPN\bin>openvpn.exe --config c:\programme\openvpn\config\server.ovpn

Das startet den Server. Wenn alles klappt (der Server nicht mit einer Fehlermeldung abbricht) kannst du auch den Dienst starten. Falls du nicht weiterkommst, gib mit die Ausgabe des obenstehenden befehls.
sabek
sabek 25.11.2007 um 00:14:09 Uhr
Goto Top
Hallo datasearch

Dein HotTo habe ich über deine Hompage gefunden und werde mir diese später durchlesen.

Ein Feedback kommt auf jeden Fall.

Bis dann
sabek
sabek 28.11.2007 um 00:23:40 Uhr
Goto Top
Danke. Nach der Anleitung klappt es wie am Schnürchen ;)

Jetzt warte ich gespannt auf den zweiten Teil deines HowTo.

Somit werde ich auch weitere Kommentare in den Beitrag schreiben wo auch das Howto ist.
datasearch
datasearch 01.12.2007 um 16:21:14 Uhr
Goto Top
Das mit dem 2 Teil kann leider noch eine Weile dauern. Meine Testumgebung hat sich verabschiedet. Habe das HowTO zu 70% fertig, es fehlt aber noch die Implementierung in Produktivsystemen. Mal sehen, sobald ich neue Hardware habe und meine Testumgebung wieder online ist vervollständige ich das HowTo (auf jeden fall noch bis jahresende). Blind möchte ich das nicht fertigstellen (könnte ja sein das sich in der config tipp, syntax oder designfehler einschleichen). Alternativ könnte ich es auch veröffentlichen und später fertigstellen. Mal sehen.