Website-Icon Sugar Camp

Anleitung: openVPN Server auf Debian 7.8 installieren und anschließend mit Android, iOS oder Windows verbinden

openvpn

OpenVPN ist ein wirklich Klasse Tool und immer wieder werde ich gefragt wie man ein virtuelles Netzwerk einrichtet und ob ich dabei helfen kann.

Natürlich kann ich das! Und deswegen schreibe ich hier eine kleine Anleitung mit den einzelnen Schritten um am Ende ein virtuelles Netzwerk zu haben.

Ich gehe davon aus, dass Grundkenntnisse mit Debian vorhanden sind.

Ziel ist es ein virtuelles Netzwerk einzurichten in dem man nur mittels Zertifikat hinein kommt. Somit werden keine Logins benötigt und man kann einen User jederzeit sperren.

 

Inhalt:

 

 

Voraussetzungen:

  1. ein Server mit mindestens 512 MB Ram, mindestens eine 800 Mhz CPU (Mehr ist natürlich besser) und mindestens 5 GB freien Festplattenspeicher
  2. TUN / TAP Unterstützung aktiviert
  3. installiertes Debian System
  4. SSH Zugang mit Root Rechten

Das sind die minimalen Voraussetzungen die euer Server erfüllen muss. Solltet Ihr einen besseren Server haben, sollte dies kein Problem sein.

Wenn der Server kein TUN/TAP aktiviert hat, müsst Ihr euch zu erst an euren Hoster wenden und um die Aktivierung bitten. Einige Hoster erlauben auch eine Aktivierung im Control Panel des jeweiligen Hosters.

 

OpenVPN installieren und konfigurieren

1. Verbindung zum Server aufbauen und Updates einspielen 

Stellt mittels Putty oder ähnlichem Client eine Verbindung zu eurem Server her.

Ist die Verbindung erfolgreich hergestellt werden erst mal eventuelle Updates installiert.

Dazu einfach in der Konsole folgenden Befehl ausführen:

[su_note note_color=“#c1c1b6″]root@vpn:~# apt-get update && apt-get upgrade[/su_note]

 

2. Prüfen ob TUN/TAP aktiviert ist 

Um zu prüfen ob das TUN/TAP Device aktiv ist und korrekt arbeitet einfach folgenden Befehl in der Konsole eingeben:

[su_note note_color=“#c1c1b6″]root@vpn:~# cat /dev/net/tun[/su_note]

Die Ausgabe sollte dann so aussehen:

[su_note note_color=“#c1c1b6″]cat: /dev/net/tun: File descriptor in bad state[/su_note]

[su_box title=“Hinweis“ style=“glass“ box_color=“#269d13″]Wenn in der Ausgabe eine Meldung der Art “File descriptor in bad state” erscheint, ist alles in Ordnung und TUN/TAP ist aktiviert. Wenn in der Ausgabe hingegen eine Meldung der Form “No such device” erscheint, sollte man den Hoster mit der Bitte um Aktivierung des TUN/TAP Devices kontaktieren.[/su_box]

 

3. Installation von openVPN und udev 

Einfach den Befehl eingeben und Entern

[su_note note_color=“#c1c1b6″]root@vpn:~# apt-get install openvpn udev[/su_note]

 

4. Kopieren der Beispielkonfigurationen von openVPN 

Bei der Installation hat openVPN bereits alles mitgeliefert was wir benötigen. Die entsprechenden Dateien müssen lediglich kopiert werden.

Das geschieht mittels:

[su_note note_color=“#c1c1b6″]root@vpn:~# cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn/[/su_note]

 

5. OpenVPN Beispielkonfiguration bearbeiten 

Als erstes editieren wir die Datei “vars” mit vi oder nano oder was Ihr sonst gern verwendet. Die Werte für “KEY_COUNTRY”, “KEY_PROVINCE”, “KEY_CITY”, “KEY_ORG” und “KEY_EMAIL” einfach mit den eigenen Werten anpassen. Kein muss aber eine ganz klare Empfehlung ist die 1024-Bit Verschlüsselung zu erhöhen da diese heutzutage durchaus zu knacken ist.

Dazu einfach „KEY_SIZE“ auf 4096 stellen.

Nun die Datei einfach speichern und schließen.

[su_note note_color=“#c1c1b6″]root@vpn:~# vi /etc/openvpn/easy-rsa/2.0/vars[/su_note]

Die Datei sieht so aus mit entsprechenden Stellen die editiert werden müssen:

[su_note note_color=“#c1c1b6″]# 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=“B oder euer Bundesland“

export KEY_CITY=“Berlin oder sonst etwas“

export KEY_ORG=“Organisation oder Domain“

export KEY_EMAIL=“eure@mailadresse.de“

export KEY_SIZE=4096[/su_note]

 

6. OpenVPN Zertifikat erstellen 

Dazu einfach nachfolgende Befehle, nacheinander in die Shell eingeben.

Wir wechseln in das korrekte Verzeichnis mit:

[su_note note_color=“#c1c1b6″]root@vpn:~# cd /etc/openvpn/easy-rsa/2.0/ [/su_note]

Hier laden wir die vorhin erstellte „vars“ Datei

[su_note note_color=“#c1c1b6″]root@vpn:~# . /etc/openvpn/easy-rsa/2.0/vars [/su_note]

Mit diesem Befehl werden alle Altlasten und bereits erstellten Schlüssel gelöscht

[su_note note_color=“#c1c1b6″]root@vpn:~# . /etc/openvpn/easy-rsa/2.0/clean-all [/su_note]

Jetzt erstellen wir ein Server Zertifikat. Dabei werden einige Eingaben erforderlich die Ihr einfach ausfüllen könnt

[su_note note_color=“#c1c1b6″]root@vpn:~# . /etc/openvpn/easy-rsa/2.0/build-ca[/su_note]

[su_box title=“Wichtig!“ style=“glass“ box_color=“#e15908″]Die beiden Fragen bzw. Werte müssen einzigartig sein und dürfen nicht doppelt vergeben werden!

Common Name (eg, your name or your server’s hostname) [changeme]:vpn.euer-host.com

Name [changeme]:einmaliger-name[/su_box]

 

7. OpenVPN privaten Server Schlüssel erstellen 

Nun gilt es wieder, wie so oft, einen Befehl in der Shell ein zutippen um damit den privaten Schlüssel für den Server zu erstellen. Im Zuge dessen wird man auch wieder aufgefordert einige Daten einzugeben. Die Eingaben bitte auf eure persönlichen Bedürfnisse anpassen. Das “challenge password” und den “company name” kann man in diesem Fall leer lassen. Die Eingaben muss man im Anschluss noch 2x mit der Taste “y” oder der „j“ Taste (engl.: yes, dt.: ja) bestätigen.

 [su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0# . /etc/openvpn/easy-rsa/2.0/build-key-server vpn-server[/su_note]

 

8. OpenVPN Schlüssel für einen Client erstellen 

Um einen Schlüssel für einen Client zu erstellen einfach den nachfolgenden Shell Befehl eintippen wobei dabei das “windowspc” in diesem Befehl unbedingt durch eine eigene Bezeichnung ersetzt werden sollte. Es darf weiterhin keine 2 Clients geben die mit genau der gleichen Bezeichnung arbeiten. Sie müssen vom Namen her paarweise also immer verschieden sein.

Das “challenge password” und den “company name” kann man in diesem Fall auch leer lassen. Die Eingaben muss man im Anschluss noch 2x mit der Taste “y” oder der „j“ Taste (engl.: yes, dt.: ja) bestätigen.

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0# . /etc/openvpn/easy-rsa/2.0/build-key windowspc[/su_note]

 Möchte man später noch weitere Clients hinzufügen so muss man dieses Prozedere einfach mit folgenden Befehlen wiederholen und die Bezeichnung „linuxpc“ wieder entsprechend ändern:

[su_note note_color=“#c1c1b6″]root@vpn:~# cd /etc/openvpn/easy-rsa/2.0/ [/su_note]

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0# . /etc/openvpn/easy-rsa/2.0/vars [/su_note]

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0# . /etc/openvpn/easy-rsa/2.0/build-key linuxpc[/su_note]

 

9. Diffie-Hellman-Parameter erstellen 

Einfach folgenden Befehl ausführen:

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0# . /etc/openvpn/easy-rsa/2.0/build-dh[/su_note]

 

10. OpenVPN Dateien auf den Client kopieren 

Ich kopiere die Dateien per scp auf meinen Rechner und verteile diese von da aus an meine Clients per USB Stick oder als verschlüsseltes Archiv über eine verschlüsselte https Verbindung.

[su_box title=“Hinweis“ style=“glass“ box_color=“#269d13″]Wichtig ist, dass Ihr das eben nicht einfach nur unverschlüsselt per Browser, E-Mail, FTP oder ähnliches übertragt. Dann ist die Sicherheit eurer VPN-Verbindung, die ihr später einmal nutzen wollt, gegebenfalls bereits mitunter schon nicht mehr gewährleistet.[/su_box]

Benötigt wird für jeden Client die ca.cert. Weiterhin gibt es für jeden Client 2 Dateien die mit obigen Befehlen erstellt werden. In meinem Beispiel also die windowspc.crt und windowspc.key

Die Dateien liegen unter:

[su_note note_color=“#c1c1b6″]/etc/openvpn/easy-rsa/2.0/keys[/su_note]

 

11. OpenVPN Server Dateien kopieren 

[su_box title=“Hinweis“ style=“glass“ box_color=“#269d13″]Beachtet bitte die “server.crt”, “server.key”, “server.conf” und “windowspc.conf” hat bei euch gegebenenfalls einen anderen Namen. Je nachdem wie ihr euren Server bzw. Client einige Schritte zuvor genannt habt.[/su_box]

Zuerst wechseln wir ins openvpn Verzeichnis, wo unsere Zertifikate und Keys gespeichert sind:

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0# cd /etc/openvpn/easy-rsa/2.0/keys[/su_note]

Nun kopieren wir die erstellten Serverkeys und Serverzertifikate

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0/keys# cp ca.crt ca.key dh4096.pem server.crt server.key /etc/openvpn[/su_note]

Jetzt holen wir uns die Server Konfigurationsdateien

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn/easy-rsa/2.0/keys# cd /usr/share/doc/openvpn/examples/sample-config-files [/su_note]

[su_note note_color=“#c1c1b6″]root@vpn:/usr/share/doc/openvpn/examples/sample-config-files# gunzip -d server.conf.gz [/su_note]

[su_note note_color=“#c1c1b6″]root@vpn:/usr/share/doc/openvpn/examples/sample-config-files# cp server.conf /etc/openvpn/server.conf [/su_note]

[su_note note_color=“#c1c1b6″]root@vpn:/usr/share/doc/openvpn/examples/sample-config-files# cp client.conf ~/windowspc.conf[/su_note]

 

12. Server Konfiguration editieren 

[su_box title=“Hinweis“ style=“glass“ box_color=“#269d13″]In der “server.conf” muss kontrolliert werden ob die Bezeichnungen und Pfade für “ca”, “cert”, “key” und “dh” stimmen. Wenn der Server zum Beispiel anders genannt wurde, dann die Bezeichnungen an dieser Stelle einfach anpassen.[/su_box]

[su_note note_color=“#c1c1b6″]root@vpn:/usr/share/doc/openvpn/examples/sample-config-files# cd /etc/openvpn[/su_note]

[su_note note_color=“#c1c1b6″]root@vpn:/etc/openvpn# vi server.conf[/su_note]

[su_note note_color=“#c1c1b6″]# Any X509 key management system can be used.

# OpenVPN can also use a PKCS

#12 formatted key file

# (see „pkcs12“ directive in man page).

ca ca.crt

cert server.crt

key server.key

# This file should be kept secret

# Diffie hellman parameters.

# Generate your own with:

# openssl dhparam -out dh1024.pem 1024

# Substitute 2048 for 1024 if you are using

# 2048 bit keys.

dh dh4096.pem[/su_note]

 

Möchte man zusätzlich noch das der Client auch auf das vLAN Netz hinter dem VPN Server zugegriffen werden kann (Client to Client), müssen folgende Zeilen in die „server.conf“ eingefügt werden:

[su_note note_color=“#c1c1b6″]push „redirect-gateway def1 bypass-dhcp“

client-to-client[/su_note]

Zum konfigurieren bestimmter DNS Server einfach folgendes eintragen:

[su_note note_color=“#c1c1b6″]push „dhcp-option DNS 85.214.20.141“

push „dhcp-option DNS 8.8.8.8″[/su_note]

Man könnte auch weitere DNS Server eintragen. Ich nutze zum Beispiel einen DNS Server in meinem VPN Netzwerk. Damit ist es mir möglich Domains via Browser erreichbar zu machen die nur im VPN Netzwerk funktionieren und kein Geld kosten. Beispielsweise eine Domain wie vpn.netzwerk. Das hat nicht nur den Vorteil das man sich die Adressen leichter merken kann, sondern auch noch dass man für Entwicklungen keine zusätzlichen Domains kaufen muss.

Möchte man zusätzlich noch das heimische Netzwerk erreichbar machen, so fügt man einfach diese Zeile hinzu

[su_note note_color=“#c1c1b6″]push „route 192.168.0.0 255.255.255.0″[/su_note]

Die IP muss man natürlich an das heimische Netzwerk anpassen.

 Eine Verschlüsselung und Kompression sollte man natürlich einbauen aber Achtung, dies treibt die CPU Auslastung natürlich etwas in die Höhe!

[su_note note_color=“#c1c1b6″]cipher AES-128-CBC

comp-lzo[/su_note]

 

Das wären die wichtigsten Funktionen, es gibt natürlich noch viele Parameter mehr aber das wäre dann schon für spezielle Anwendungsbereiche.

 

13. Windows Client Datei für die Verbindung mit Server

Die Datei müssen wir natürlich auch editieren und mit unseren Daten Füttern.

Wichtig ist dabei nur dass die Pfade der ca.crt, windowspc.crt und windowspc.key stimmen, die IP Eures VPN Servers eingetragen ist und Ihr den Verschlüsselungsmechanismus eintragt.

In der Zeile „remote“ bevorzuge ich persönlich eher Domain Namen. Da hat man weniger Probleme falls sich die IP mal ändern sollte. 

[su_note note_color=“#c1c1b6″]# to load balance between the servers.

remote 192.168.0.1 1194

# SSL/TLS parms.

# See the server config file for more

# description. It’s best to use

# a separate .crt/.key file pair

# for each client. A single ca

# file can be used for all clients.

ca ca.crt

cert windowspc.crt

key windowspc.key

cipher AES-128-CBC[/su_note]

 

14. Anpassungen am Host Server

Damit das alles auch so funktioniert müssen noch Anpassungen am Host System vorgenommen werden.

In der “sysctl.conf” muss das IPv4-Forwarden aktiviert werden. Dazu das Semikolon vor “net.ipv4.ip_forward=1″ entfernen und die Datei speichern.

Die Datei liegt in /etc/

[su_note note_color=“#c1c1b6″]root@vpn:~# vi /etc/sysctl.conf[/su_note]

[su_note note_color=“#c1c1b6″]# Uncomment the next line to enable packet forwarding for IPv4

net.ipv4.ip_forward=1[/su_note]

 

Nun müssen wir noch ein paar iptables Regeln anwenden.

[su_box title=“Hinweis“ style=“glass“ box_color=“#269d13″]Vor dem ausführen der Befehle mit „ifconfig“ die eigenen Einstellungen und Netzwerkkarten Namen herausfinden und in den Befehlen entsprechend anpassen!! sonst funktionieren die Regeln nicht![/su_box]

Hat man seinene Netzwerkkarten Bezeichnung mittels „ifconfig“ herausgefunden, so muss man die einfach entsprechend in den Regeln ersetzen. Es kann also sein dass Ihr aus eth0 ein venet0 oder Ähnliches machen müsst.

Die Regeln, einzeln, einfach in die Konsole eingeben und Entern

 

[su_note note_color="#c1c1b6"]iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT [/su_note]
[su_note note_color="#c1c1b6"]iptables -A INPUT -i tun+ -j ACCEPT [/su_note]
[su_note note_color="#c1c1b6"]iptables -A FORWARD -i tun+ -j ACCEPT[/su_note]
[su_note note_color="#c1c1b6"]iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT[/su_note]
[su_note note_color="#c1c1b6"]iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT[/su_note]
[su_note note_color="#c1c1b6"]iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE[/su_note]

[su_box title=“Wichtig!“ style=“glass“ box_color=“#269d13″]Bei den iptables Regeln unbedingt darauf achten, dass an den Stellen

state --state NEW -p udp - -dport 1194
eth0 -m state --state RELATED
tun+ -m state --state RELATED

Zwei – Striche vor state und dport sind. Manche Browser machen aus diesen 2 – Zeichen ein längeres — Zeichen

Danke Jakob, ohne das Gespräch mit dir wäre mir das selbst so nie aufgefallen.[/su_box]

Sollten bei diesen Befehlen keinerlei Fehler auftauchen, speichert diese in die „rc.local“ um die Befehle bei einem Restart des Server erneut auszuführen.

[su_note note_color=“#c1c1b6″]root@vpn:~# vi /etc/rc.local[/su_note]

 

[su_note note_color=“#c1c1b6″]# By default this script does nothing.

iptables -A INPUT -i eth0 -m state --state NEW -p udp --dport 1194 -j ACCEPT 
iptables -A INPUT -i tun+ -j ACCEPT 
iptables -A FORWARD -i tun+ -j ACCEPT 
iptables -A FORWARD -i tun+ -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -A FORWARD -i eth0 -o tun+ -m state --state RELATED,ESTABLISHED -j ACCEPT 
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE[/su_note]

Nun kann OpenVPN neugestartet werden. Dazu einfach den Befehl ausführen:

[su_note note_color=“#c1c1b6″]root@vpn:~# /etc/init.d/openvpn restart[/su_note]

Sollte dabei kein Fehler erscheinen kann mit der Client Konfiguration fortgefahren werden. 

Erscheint bei Euch eine Fehlermeldung dann einfach die Schreibweise und Pfade in den Konfigurationen überprüfen, dort liegt oft der Fehler. Natürlich gebe ich gern Hilfe falls Ihr hängt. 

 

15. Windows Client Einrichtung

In ein paar Schritten zuvor, habt Ihr euch ja 4 Dateien runter geladen.

Mit diesen Dateien macht Ihr einfach an dieser Stelle hier weiter:

Windows VPN Einrichtung

Den Artikel schrieb ich schon vor einer ganzen Weile mal ist aber nach wie vor aktuell.

 

16. Linux Client einrichten

Als erstes muss auch hier die OpenVPN Software installiert werden

[su_note note_color=“#c1c1b6″]root@vpn-client:~# apt-get install openvpn[/su_note]

Die 4 Dateien die Ihr runtergeladen habt, einfach in den Ordner

[su_note note_color=“#c1c1b6″]/etc/openvpn[/su_note]

kopieren und dann openvpn mittels 

[su_note note_color="#c1c1b6"]root@vpn-client:~# openvpn --config windowspc.conf[/su_note]

neustarten.

[su_box title=“Hinweis“ style=“glass“ box_color=“#269d13″]Auch auf einem Linux Client muss entsprechend das TUN/TAP Device vorhanden sein![/su_box]

 

17. Client unter OS X einrichten

Ladet euch die Software Tunnelblick herunter.  Öffnet und installiert die heruntergeladene Datei dann bei euch so wie im Prinzip jedes andere Programm. Im Anschluss wird ein Abfragefenster angezeigt bei dem man auf “Open configuration folder” klickt. In das sich daraufhin öffnende Fenster kopiert man die 4 Dateien hinein. Jetzt Tunnelblick aus dem Programmordner heraus starten und eine Verbindung mit dem OpenVPN-Server herstellen.

 

18. Client unter iOS einrichten

Benennt die Datei “windowspc.conf” in “windowspc.ovpn” um.

Ladet euch die OpenVPN App für iOS auf euer iPhone, iPad oder iPod touch.

Startet dann die App und klickt rechts oben auf den Button “Help”. Ihr seht dann dort eine Vielzahl an Möglichkeiten eure OpenVPN-Verbindung damit einzurichten.

Mein persönlicher Favorit ist der: schließt euer iPhone, iPad oder iPod touch an euren PC/Mac an, startet iTunes, wählt euer Gerät unter “GERÄTE links im Menü aus, klickt dann auf “Apps”, scrollt runter zum Abschnitt “Dateifreigabe”, klickt die App “OpenVPN” an und dann rechts auf “Hinzufügen…” und wählt nun die 4 Dateien zum Hochladen in die App aus.

Nachdem ihr das gemacht habt startet ihr die OpenVPN App für iOS auf eurem iPhone, iPad oder iPod touch und richtet euch ein Profil mit diesen Dateien ein.  Wenn ihr innerhalb der App dann den Schalter unterhalb von “Disconnected” umschaltet wird eine Verbindung zu eurem OpenVPN-Server hergestellt.

 

19. Client unter Android einrichten

Benennt die Datei “windowspc.conf” in “windowspc.ovpn” um.

Nun ladet Euch die OpenVPN App für Android auf das Android Gerät. Kopiert anschließend die 4 Dateien auf das Android Gerät und startet die OpenVPN App für Android. Klickt darin unten rechts auf das Ordnersymbol um die windowspc.ovpn Konfiguration für euren OpenVPN-Server auszuwählen. Im Anschluss werden einige Hinweise angezeigt die man in der Regel nicht zu beachten braucht es reicht dann auf das Diskettensymbol unten rechts zu klicken um den Import abzuschließen.

Im Hauptmenü sollte dann die Verbindung erscheinen die man mit einem Klick darauf starten kann.

 

Zum Schluss:

Es gibt einige gute Anleitungen auch im Netz aber mir fiel keine auf in der wirklich mal alles zusammen geschrieben wurde.

Ich hoffe die Anleitung ist Euch eine Hilfe und Ihr spart ein wenig Zeit und kommt damit ans Ziel!

 

LG

Share it!
Die mobile Version verlassen