OpenVPN auf Linux Server – Client Linux und Windows

Hi,

Danke NSA und Konsorten werden VPN und SSH sowie Proxy Server immer interessanter, auch wenn einige meinen das einer der nichts zu verbergen hat, es einem egal sein kann, aber ich glaube wenn einer aus der ehemaligen DDR kommt oder schon mal Erfahrung mit einem Stalker gemacht hat, sieht das anders.

Und ich glaube das niemand will das man seine Post (Briefe) liest oder doch ? Wer damit kein Problem hat, kann sich den bericht sparen.

Man muss sich einfach nur Vorstellen das man von einem Fremden Tag und Nacht bei jedem Schritt verfolgt wird.

Und das was Ausländische Geheimdienste machen ist nichts anderes, nur weil man es nicht merkt heißt das nicht das es in Ordnung ist.

Jeden den ich Frage was er dazu sagen würde wenn ich Tag und Nacht vor seinem Haus stehen würde um zu Check was er/sie so alles den ganzen Tag macht, sagt mir jeder das er/sie irgendwann die Polizei Rufen würde oder würde mir stumpf auf die Fress hauen, was auch verständlich wäre, aber anscheinend meine einige im Internet gelten andere Maßstäbe aber das sehe ich nicht so.

Dank der Snowden Affäre wissen wir ja was abluft, wer das nicht weiß sollte mal etwas googeln.

Daher bin ich nur noch via VPN und Proxy Unterwegs.

Wobei ich natürlich nicht 100% Anonym unterwegs bin, alleine schon dadurch das ich eine Firma habe und .de Domains besitze, da kann man schon einiges über einen heraus finden.

Aber wenn man Vorsichtig ist mit seinen Information und nutzt dann VPN in Verbindungen einem Proxy erreicht man schon 99%.

Los gehts!

Wie immer erstmal ein loggen via Putty als root und direkt die Installation starten mit

aptitude install openvpn

Falls Zusatzmodule dazu installiert werden müssen einfach Bestätigen.


server.conf:

dev tun #Device tun oder tap
proto udp #Protokoll UDP oder TCP
port 1194 #Port
ca keys/ca.crt #CA Key
cert keys/server01.crt #Server Zertifikat
key keys/server01.key #Server Key
dh keys/dh2048.pem #DH Key
tls-auth keys/ta.key 0 #TLS Key
keepalive 60 600 #Wie lange eine Verbindung besteht TTL
comp-lzo #Kompression
status openvpn-status.log #Status Log file
log openvpn.log #VPN Logfile
user nobody #Benutzer
group nogroup #Gruppe
persist-key
persist-tun
server 192.168.1.0 255.255.255.0 #Netzwerk für das VPN
push "redirect-gateway IPDEINESSERVERS def1" #Stellt sicher das der ganze Traffic vom Client über das VPN läuft
#push "route 192.168.1.0 255.255.255.0 net_gateway"
tls-server
plugin /usr/lib/openvpn/openvpn-auth-pam.so login #Modul für die Anmeldung
client-cert-not-required
username-as-common-name #Man mus sich einloggen
verb 4 #Logging mit mehr Infos, Standard ist 3
#auth-nocache
mssfix 1400 #MTU für tun sollte kleiner als 1500 sein da durch die VPN Verbindung die Packete größer werden und es könnte daher zur Fragmentierung kommen
tun-mtu 1500 #MTU für das VPN
cipher AES-256-CBC #Welcher Cipher genutz werden soll um so höher um so langsamer die Verbindung
auth SHA512 #Stellt sicher das die Anmeldung mit SHA256 läuft und nicht SH1
tls-cipher DHE-RSA-AES256-SHA #TLS cipher

ACHTUNG ÄNDERN: redirect-gateway IPDEINESSERVERS

Um sich via VPN Anmelden zu können muss man einen Benutzer auf seinem Server  angelegt haben.


Anpassungen für Iptables, ohne das geht nichts.

iptables --table nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
iptables --table nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to-source xxx.xxx.xxx.xxx #xxx steht für die IP deines Gateways von deinem Server!
iptables -A INPUT -i tun0 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -j ACCEPT
iptables -A OUTPUT -o tun0 -j ACCEPT

So alles was von dem VPN Netzwerk kommt wird an das Gateway deines Root Servers weitergeleitet.

Daher das Postrouting, INPUT erlaubt das Gerät tun0 eine Eingehende Verbindung, für das Netzwerk 192.168.1.0/24 wird ein forwarding gemacht und das Gerät tun0 darf auch wieder raus.

Tun0 wird beim starten des VPN  Server unter /etc/network/interfaces angelegt.

In allen Anleitungen die man findet wird immer wieder beschrieben das man als VPN IP 10.x.x.x nehmen soll da es sich aber um ein VPN handelt ist das KACK EGAL welche IP man nimmt, was man aber nicht machen darf das man ein Netzwerk nimmt welches identisch mit dem Heimnetzwerk ist.

Hat man zum Beispiel keine Fritzbox hat man meistens das Netzwerk 192.168.2.0/24 oder 192.168.1.0/24 dann muss man sich ein anderes Netzwerk dafür ausdenken.

Man kann auch ein 172.x.x.x Netzwerk nehmen für den VPN, wie schon geschrieben man kann nehmen was man will.


Keys erstellen ist zum Glück recht einfach bei OpenVPN da alles mitgeliefert wird.

Kopieren der Dateien in den OpenVPN Ordner

cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa/2.0

In das Verzeichnis wechseln

cd /etc/openvpn/easy-rsa/2.0

Dateiliste:

insgesamt 136K
-rwxr-xr-x 1 root root 119 Apr 27 2011 build-ca
-rwxr-xr-x 1 root root 352 Apr 27 2011 build-dh
-rwxr-xr-x 1 root root 188 Apr 27 2011 build-inter
-rwxr-xr-x 1 root root 163 Apr 27 2011 build-key
-rwxr-xr-x 1 root root 157 Apr 27 2011 build-key-pass
-rwxr-xr-x 1 root root 249 Apr 27 2011 build-key-pkcs12
-rwxr-xr-x 1 root root 268 Apr 27 2011 build-key-server
-rwxr-xr-x 1 root root 213 Apr 27 2011 build-req
-rwxr-xr-x 1 root root 158 Apr 27 2011 build-req-pass
-rwxr-xr-x 1 root root 428 Apr 27 2011 clean-all
-rwxr-xr-x 1 root root 1,5K Apr 27 2011 inherit-inter
-rwxr-xr-x 1 root root 295 Apr 27 2011 list-crl
-rw-r--r-- 1 root root 413 Jul 1 2011 Makefile
-rw-r--r-- 1 root root 7,6K Okt 21 2010 openssl-0.9.6.cnf
-rw-r--r-- 1 root root 8,2K Jul 1 2011 openssl-0.9.8.cnf
-rw-r--r-- 1 root root 8,1K Jul 1 2011 openssl-1.0.0.cnf
-rw-r--r-- 1 root root 8,1K Jun 23 2011 openssl-1.0.0.cnf-old-copy
-rwxr-xr-x 1 root root 13K Apr 27 2011 pkitool
-rw-r--r-- 1 root root 3,7K Jul 1 2011 README.gz
-rwxr-xr-x 1 root root 918 Apr 27 2011 revoke-full
-rwxr-xr-x 1 root root 178 Apr 27 2011 sign-req
drwxr-xr-x 2 root root 4,0K Dez 26 08:30 tmp
-rw-r--r-- 1 root root 1,8K Jul 1 2011 vars
-rwxr-xr-x 1 root root 714 Jul 1 2011 whichopensslcnf

Als erstes habe ich mal die vars geöffnet und alles Voreinstellungen gemacht damit ich beim erstellen der Zertifikate und Keys nicht soviel tippen muss.

Danach können  wir diese in die Umgebungsvariable eintragen.

source ./vars

Altlasten löschen

./clean-all

CA Zertifikat erstellen:

./build-ca

Server Zertifikat und Key:

./build-key-server

DH Zertifikat mit Key:

./build-dh

TA Key für TLS

openvpn --genkey --secret ta.key

Hat mehr als einen Client (Handy, Tablet, andere PCs) sollte man sich für jeden Client einen Key erstellen.

build-key client1
build-key client2
build-key client3

Wobei ClientX der Hostname des geräts sein sollte.

Zudem muss man für das Login auch einen User und Passwort anlegen

useradd User1

Und Alle Anfragen bis auf E-Mail und andere unnötige Daten und ein starkes Passwort setzen.

Kopieren des Ordners Keys nach OpenVPN

cp -r /etc/openvpn/easy-ras/2.0/keys /etc/openvpn/

Mit  /etc/init.d/openvpn start kann man den OpenVPN Server starten und mit nano /etc/default/openvpn und den Eintrag AUTOSTART=“server“ wird beim nächsten neustart der OpenVPN Server mit gestartet.

Alles Dateien in Keys Herunterladen und in den Ordner C:\Program Files\OpenVPN\config ablegen hier ist auch die Client Konfig mit der Endung .ovpn

Bei Linux installiert man den Client genauso wie den Server.

Nur das man dort in /etc/openvpn reingeht und sich eine client.ovpn erstellt via Editor.

Die unten stehende Client config ist mit Windows identisch.


Systemeinstellungen /etc/sysctl.conf:

net.ipv4.ip_forward=1

Danach die Datei abspeichern und mit sysctl -p direkt aktivieren.

Dadurch wird das Forwarding im System aktiviert welches nötig ist damit überhaupt eine VPN Verbindung möglich ist.


Client config:

client
dev tun #Definition Gerät TUN
proto udp #Protokoll
tls-client #TL Client
redirect-gateway #gateway umbiegen
remote dein.server.ip.x 1194 #Server IP und Port
ns-cert-type server
keepalive 60 600
persist-tun
persist-key
ca ca.crt #CA Zertifikat
tls-auth ta.key 1 #TLS Key
cert server01.crt # Server Zertifikat
key server01.key #Server Key
comp-lzo #Kompression
verb 3 #Log Level
auth-user-pass #Anmeldung von nöten
route-method exe
route-delay 2
pull #daten vom Server beziehen damit die push Optionen vom Server auch ankommen
auth-user-pass login.conf #Datei mit den Login Daten, dann muss man diese nicht ein Tippen
mssfix 1400 #MTU für das Gerät TUN
tun-mtu 1500 #MTU für den Tunnel
cipher AES-256-CBC #Cipher
auth SHA512 #Anmelde Verschlüßelung
tls-cipher DHE-RSA-AES256-SHA #Cipher Liste

Nachdem die Config gespeichert ist kann man beim OpenVPN Client auf Verbinden klicken und der Client loggt sich auf dem Server ein und erstellt ein neue Netzwerkkarte sowie die Routen für den VPN Tunnel.

Unter Linux startet man den Client mit:

openvpn --config /etc/openvpn/client.ovpn &

Danach kann man die IP 192.168.1.1 pingen wenn nicht hat man vorher was falsch gemacht.

Wenn man ein tracert auf google.com macht muss als erster Hop auch die 192.168.1.1 kommen wenn die IP deines Router kommt läuft auch was falsch.

Wenn man zuviel rum probiert verhaspelt sich auch mal Windows und man kann sich hier auch schnell selbst Verarschen daher sollte man öfter mal einen Neustart machen wenn was nicht klappt, meistens geht es danach.

Anzumerken ist das wenn Ihr auf Dienste zugreift wie Webseiten, E-Mail oder sonstige Dienste die auf Eurem Server laufen wird dies immer über Eure DSL IP laufen und nicht durch den VPN da sich der Server nicht selbst Tunneln  kann (Dies geht nur wenn die Dienste auch auf die VPN IP des Servers laufen (Postfix) dann kann man die Daten auch über den VPN laufen lassen).

Die Route sieht bei aktiver VPN Verbindung so aus:

IP Client 192.168.1.6 -> Dummy IP 192.168.1.5 -> Server 192.168.1.1

IP Deines PCs ohne VPN -> Router -> Public IP deines Server


Sonstiges:

Wenn man auf Dienste seines Server zugreifen will über den VPN hat man 2 Möglichkeiten:

  1. Dein Server hat eine 2. IP und Du machst den Tunneln über die IP auf der keine Öffentliche Dienste laufen, was man eh nicht machen sollte.
    Anstatt den Domain namen oder deine Public IP gibst Du das Gateway deines VPN an für mein beispiel ist das die 192.168.1.1 (geht beim Proxy und TS3 und wunderbar)
  2. Für Kabel Deutschland Kunden, könnte aber auch alle ander Kabel Kunden betreffen hier 2 Links.
    Einmal wie man seinen Anschluss auf IP4 umstellen kann falls man schon auf IPv6 läuft und falls das nicht geht wie man seinen OpenVPN Server/Client umstellung auf IPv6.
    Da ich kein IPv6 habe kann ich das leider nicht Testen, aber ei freund von mir hat Kabel und testet das eventuell für mich, wenn ich was neues weiß melde ich mich nochmal mit einem Update.

Für jeden der siche via VPN einloggen will muss einen Benutzer einrichten, sonst bekommen alle die gleiche IP und kicken sich gegenseitig raus.


Kabel Deutschland Forum OpenVPN

OpenVPN IPv6

Bei Fragen oder Anregungen wie immer einen Kommentar hinterlassen.

Cya
DocSchneidi ak Cheech

OpenVPN Logo Copyright

Tagged , , , , , , , , , , , , , , , , , . Bookmark the permalink.

2 Responses to OpenVPN auf Linux Server – Client Linux und Windows

  1. Timon says:

    Hi!
    Ich brauche Deine Hilfe !
    Seit 3 Tagen versuche ich Openvpn auf einen vserver zu installieren, jedoch ohne Erfolg. Ich kann mich zwar mit dem Server verbinden, leider ohne damit auf das Internet zugreifen zu können

    • Cheech says:

      Hi,

      du musst in der sysctrl.conf unter /etc/ das forwarding einschalten mit net.ipv4.ip_forward=1

      und nach dem speichern

      sysctl -p ausführen damit das direkt übernommen wird.

      Iptables musst du auch einrichten dam it das geht.

      Gruß
      Cheech

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.