OpenVPN Server mit DD-WRT: Unterschied zwischen den Versionen
Dario (Diskussion | Beiträge) (→Services/VPN) |
Dario (Diskussion | Beiträge) |
||
Zeile 323: | Zeile 323: | ||
float | float | ||
ca root_ca.crt | ca root_ca.crt | ||
− | cert | + | cert vpn_client1.crt |
− | key | + | key vpn_client1_key.pem |
verb 3 | verb 3 | ||
== Verbindung aufbauen == | == Verbindung aufbauen == |
Version vom 14. Januar 2010, 10:33 Uhr
Inhaltsverzeichnis
Zertifikatsbasierter OpenVPN Server unter DDWRT
Hier eine Anleitung um einen OpenVPN Server unter DDWRT einzurichten.
Voraussetzungen
- Router mit DDWRT Firmware mit VPN Unterstützung, ich nutze v24-sp2 (10/10/09) mega (SVN revision 13064)
- XCA Zertifikatsverwaltung, ich nutze die Windows Version Version : 0.8.1
- OpenVPN GUI for Windows
PKI erzeugen
Hier werden Schlüssel und Zertifikate erzeugt.
XCA laden und installieren
- Zuerst XCA hier herrunterladen.
- Dann XCA installieren, das kann wohl jeder selbst.
- XCA Starten
Datenbank anlegen
XCA speichert alle Schlüssel und Zertifikate in einer Datenbank, die zuerst angelegt werden muss, was mit Datei/New Database initiiert wird. Dann einen Namen für die Datenbank angeben und ein Passwort vergeben. Nur mit dieser Datei und dem Passwort kann man später Veränderungen vornehmen, also gut merken. Achtung: Das Passwort aber auch nicht zu leicht wählen, denn wer die Datei und Passwort hat erzeugt sich selber Zertifikate und kann sich dann auch am VPN-Server anmelden (ohne Veränderungen am VPN-Server vornehmen zu müssen - das ist übrigens der Sinn der Zertifikate)
XCA Optionen
Unter Datei/Optionen SHA-256 als Standard Hash Algorithmus einstellen.
Templates erstellen
Damit man später vieles einfacher hat legen wir nun zuerst Templates an. Kann man drüber streiten, ob das für die CA und die Server sinnvoll ist, für die Clients lohnt es sich auf jeden Fall. Unter der Lasche Vorlagen den Knopf Neues Template und dann zuerst die CA Vorlage:
- Preset Template Values: CA
- Besitzer
- Interner Name: Vorlage_CA
- Länder Code: DE
- Bundesland, Kreis: NRW (bzw. Euer Bundesland)
- Ort: BOCHUM (bzw. Euren Ort)
- Firma: local
- Firmenabteilung: it
- Üblicher Name: (leer lassen)
- E-Mail Adresse: xca@mail.com (oder die eigene Adresse)
- Erweiterungen
- Zeitspanne: 10 Jahre
Dann die Vorlage für den Server:
- Preset Template Values: HTTPS_server
- Besitzer
- Interner Name: Vorlage_Server
- Länder Code: DE
- Bundesland, Kreis: NRW (bzw. Euer Bundesland)
- Ort: BOCHUM (bzw. Euren Ort)
- Firma: local
- Firmenabteilung: it
- Üblicher Name: (leer lassen)
- E-Mail Adresse: xca@mail.com (oder die eigene Adresse)
- Erweiterungen
- Zeitspanne: 5 Jahre
Zuletzt die Vorlage für die Clients:
- Preset Template Values: HTTPS_client
- Besitzer
- Interner Name: Vorlage_Client
- Länder Code: DE
- Bundesland, Kreis: NRW (bzw. Euer Bundesland)
- Ort: BOCHUM (bzw. Euren Ort)
- Firma: local
- Firmenabteilung: it
- Üblicher Name: (leer lassen)
- E-Mail Adresse: xca@mail.com (oder die eigene Adresse)
- Erweiterungen
- Zeitspanne: 365 Tage
Zertifikate erstellen
Jetzt können wir die Zertifikate erstellen, dabei erzeugen wir gleichzeitig die Schlüssel.
Wir fangen an mit dem Root-Zertifikat, dazu unter der Lasche Zertifikate den Knopf Neues Zertifikat.
- Herkunft
- Erstelle ein Selbst signiertes Zertifikat mit der Seriennummer 1
- Signatur algorithmus SHA-256
- Vorlage für das neue Zertifikat: Vorlage_CA
- Knopf Übernehmen drücken (das füllt die restlichen Felder mit denen der Vorlage aus)
- Besitzer
- Interner Name: root_ca
- Länder Code: DE
- Bundesland, Kreis: NRW
- Ort: BOCHUM
- Firma: local
- Firmenabteilung: it
- Üblicher Name: root_ca
- E-Mail Adresse: xca@mail.com
- Knopf Erstelle einen neuen Schlüssel drücken
- Name: root_ca_key
- SchlüsselTyp: RSA
- Schlüssellänge: 1024 bit (auch 2048 bit sind möglich, benötigen dann aber mehr Speicher im NVRAM des Routers)
- Knopf Erstellen drücken
- Erweiterungen
- Zeitspanne: 10 Jahre
- Nochmal unter Herkunft den Signatur algorithmus prüfen
- Signatur algorithmus SHA-256
- OK
Jetzt das Zertifikat für den VPN-Server
- Herkunft
- Verwende das Zertifikat zum Unterschreiben: root_ca
- Signatur algorithmus SHA-256
- Vorlage für das neue Zertifikat: Vorlage_Server
- Knopf Übernehmen drücken
- Besitzer
- Interner Name: vpn_server
- Länder Code: DE
- Bundesland, Kreis: NRW
- Ort: BOCHUM
- Firma: local
- Firmenabteilung: it
- Üblicher Name: vpn_server
- E-Mail Adresse: xca@mail.com
- Knopf Erstelle einen neuen Schlüssel drücken
- Name: vpn_server_key
- SchlüsselTyp: RSA
- Schlüssellänge: 1024 bit (alternativ 2048 bit)
- Knopf Erstellen drücken
- Erweiterungen
- Zeitspanne: 5 Jahre
- Nochmal unter Herkunft den Signatur algorithmus prüfen
- Signatur algorithmus SHA-256
- OK
Für jeden Client, der sich einwählen soll jetzt ein eigenes Zertifikat
- Herkunft
- Verwende das Zertifikat zum Unterschreiben: root_ca
- Signatur algorithmus SHA-256
- Vorlage für das neue Zertifikat: Vorlage_Client
- Knopf Übernehmen drücken
- Besitzer
- Interner Name: vpn_client1
- Länder Code: DE
- Bundesland, Kreis: NRW
- Ort: BOCHUM
- Firma: local
- Firmenabteilung: it
- Üblicher Name: vpn_client1
- E-Mail Adresse: xca@mail.com hier könnte auch die E-Mail adresse des entsprechenden Users eingegeben werden
- Knopf Erstelle einen neuen Schlüssel drücken
- Name: vpn_client1_key
- SchlüsselTyp: RSA
- Schlüssellänge: 1024 bit (alternativ 2048 bit)
- Knopf Erstellen drücken
- Erweiterungen
- Zeitspanne: 365 Tage
- Nochmal unter Herkunft den Signatur algorithmus prüfen
- Signatur algorithmus SHA-256
- OK
So können Zertifikate für weitere User (vpn_client2, vpn_client3) erzeugt werden.
Fertig, wir haben nur drei Zertifikate erstellt
Schlüssel exportieren
Für jeden Client müssen wir nun seinen eigenen Schlüssel exportieren, dazu
- Private Schlüssel den Client Schlüssel auswählen
- Export anklicken
- Dateiname: c:\vpn_clientN_key.pem (oder beliebigen anderen Pfad)
- Exportformat: PEM
- Den privaten Teil des Schlüssels mit exportieren JA
- Exportieren als PKCS#8 NEIN
- Den Schlüssel mit einem Passwort sichern JA (das Passwort muss der Client beim Verbindungsaufbau eingeben)
- OK
- Passwort
- Passwort zweimal eingeben
Den Schlüssel für den Server exportieren:
- Private Schlüssel den Server Schlüssel auswählen
- Export anklicken
- Dateiname: c:\vpn_server_key.pem (oder beliebigen anderen Pfad)
- Exportformat: PEM
- Den privaten Teil des Schlüssels mit exportieren JA
- Exportieren als PKCS#8 NEIN
- Den Schlüssel mit einem Passwort sichern NEIN (wir können beim Booten des DDWRT kein Passwort eingeben)
- OK
Zertifikate exportieren
Jetzt müssen noch alle drei Zertifikate exportiert werden, dazu die Zertifikate nacheinander auswählen und auf export klicken:
- root_ca
- Dateiname: c:\root_ca.crt (oder beliebigen anderen Pfad)
- Exportformat: PEM
- vpn_server
- Dateiname: c:\vpn_server.crt
- Exportformat: PEM
- vpn_clientN
- Dateiname: c:\vpn_clientN.crt
- Exportformat: PEM
Diffie-Hellman Parameter erzeugen
Zusammen mit XCA sollte OPENSSL installiert worden sein und sich auch im Pfad befinden, sodass wir auf der Kommandozeile folgenden Befehl ausführen können um die Diffie-Hellman Parameter zu erzeugen.
C:\>openssl dhparam -outform PEM -out dh1024.pem 1024 Loading 'screen' into random state - done Generating DH parameters, 1024 bit long safe prime, generator 2 This is going to take a long time ...................................................................+............ ................................................................................ [einige weitere Zeilen] ..................++*++*++*
Für 2048 Bit kann selbstverständlich auch 2048 angegeben werden.
Ergebnis
Jetzt sind wir fertig und haben wir die folgenden sechs Dateien (4 + 2 je Client) erzeugt:
dh1024.pem root_ca.crt vpn_server.crt vpn_server_key.pem vpn_client1.crt vpn_client1_key.pem
Openvpn Server unter DDWRT konfigurieren
Jetz müssen die erzeugten Daten auf den Router kopiert werden, dazu sollte man sicher sein im NVRAM noch genug Platz zu haben. Den Verfügbaren Platz kann im WEB-Interface unter Administration/Command mit dem Kommando nvram show | grep size ermitteln. Laut DDWRT Wiki werden bei einer Schlüssellänge von 1024 Bit ca. 5200 Byte benötigt und bei 2048 Bit ca. 6000 Byte.
Services/VPN
- Start OpenVPN: Enable
- Start type: Wan Up
- Public Server Cert: Inhalt von root_ca.crt per copy&pase eingefügen
- Public Client Cert: Inhalt von vpn_server.crt eingefügen
- Private Client Key: Inhalt von vpn_server_key.pem eingefügen
- DH PEM: Inhalt von dh1024.pem eingefügen
- OpenVPN Config
push "route 192.168.66.0 255.255.255.0" server 192.168.77.0 255.255.255.0 verb 5 dev tun0 proto udp keepalive 10 120 dh /tmp/openvpn/dh.pem ca /tmp/openvpn/ca.crt cert /tmp/openvpn/cert.pem key /tmp/openvpn/key.pem
- Apply Settings
Hierbei eventuell die beiden ersten Zeilen anpassen:
push "route 192.168.66.0 255.255.255.0"
192.168.66.0 ist der Adressbereich des LAN mit dem der VPN-Client hinterher verbunden werden soll.
server 192.168.77.0 255.255.255.0
192.168.77.0 ist der Adressbereich aus dem der VPN-Client seine IP bekommt
Administration/Command
Jetzt müssen noch Firewall regeln konfiguriert werden:
iptables -I INPUT 2 -i vlan1 -p udp --dport 1194 -j ACCEPT iptables -I INPUT 2 -i tun0 -j ACCEPT iptables -I FORWARD -i br0 -o tun0 -j ACCEPT iptables -I FORWARD -i tun0 -o br0 -j ACCEPT
und dann den Button Save Firewall drücken.
Client mit OpenVPN GUI konfigurieren
Auf dem Windows Rechner OpenVPN GUI installieren. Am einfachsten konfiguriert man OpenVPN GUI indem man die folgenden Dateien direkt in das Konfig Verzeichnis c:\Programme\OpenVPN\config\ kopiert:
root_ca.crt vpn_client1.crt vpn_client1_key.pem
Dazu erzeugt man im selben Verzeichnis eine Datei mit der Endung ovpn, zum Beispiel home.ovpn mit dem Inhalt:
# (Internet-)Adresse des VPN Servers remote meineadresse.dyndns.org ns-cert-type server client dev tun0 proto udp resolv-retry infinite nobind persist-key persist-tun float ca root_ca.crt cert vpn_client1.crt key vpn_client1_key.pem verb 3
Verbindung aufbauen
Rechtsklick auf das kleine Traysymbol Connect
Verbindung aufbauen
Rechtsklick auf das kleine Traysymbol Disconnect