15.01.2015

VPN-Server aufsetzen

Was ist überhaupt ein VPN?

"Virtual Private Network (deutsch „virtuelles privates Netzwerk“; kurz „VPN“) ist eine Schnittstelle in einem Netzwerk und hat zwei unterschiedliche Bedeutungen.

Das konventionelle VPN dient dazu, Teilnehmer eines privaten (in sich geschlossenen) Netzes an ein anderes privates Netz zu binden.[1] Sobald also ein Computer eine VPN-Verbindung aufbaut, ist der Vorgang vergleichbar mit dem Umstecken seines Netzwerkkabels von seinem ursprünglichen Netz an ein anderes (per VPN zugeordnetes) Netz.

So kann beispielsweise ein Mitarbeiter von Zuhause aus Zugriff auf das Firmennetz erlangen, gerade so, als säße er mittendrin. Aus Sicht der VPN-Verbindung wird dafür das ursprüngliche Netz auf die Funktion eines Verlängerungskabels reduziert, das den VPN-Teilnehmer ausschließlich mit dem zugeordneten Netz verbindet. Technisch gesehen geht die Verbindung hin zu einem VPN-Gateway, der Anschlussstelle des zugeordneten Netzes. Dafür muss das VPN-Gateway von dem ursprünglichen Netz aus erreichbar sein. Gibt es auf dem Weg dorthin weitere dazwischen liegende Netze, dann werden auch diese bildlich gesehen zum Bestandteil des Verlängerungskabels.

Dieser Vorgang, dass ein VPN-Teilnehmer (VPN-Partner) zum Teilnehmer des zugeordneten Netzes wird, funktioniert unabhängig von der physischen Topologie und den verwendeten Netzwerkprotokollen selbst dann, wenn das zugeordnete Netz von einer vollkommen anderen Art ist.[1]

Der sich daraus ergebende Nutzen eines VPNs kann je nach verwendetem VPN-Protokoll durch eine Verschlüsselung ergänzt werden, die eine abhör- und manipulationssichere Kommunikation zwischen den VPN-Partnern ermöglicht." Zitat: Wikipedia 

############################################################################

Einrichten des Servers

Aktualisierung des Pi’s

Als erstes wird sich wieder mit dem SSH-Client auf den Pi geschalten (siehe Start Up). Um diese Aktualisierung durchzuführen benötigt man „Superrechte“. Diese Rechte erwirbt man mit dem Befehl:
sudo -i

Danach kann die Aktualisierung durchgeführt werden mit dem Befehl:  
apt-get update

Oder man führt die Aktualisierung mit dem Befehl aus:
sudo apt-get update


apt-get update


Die entsprechenden Dateien wurden jetzt heruntergeladen und müssen nun installiert werden.
apt-get upgrade  -y

Installation des Servers
 
Den Server erhält man durch
apt-get install openswan

Es folgt nun ein Bildschirm, der uns sagt, dass es einfacher ist mit Zertifikaten für die Authentifizierung zu nutzen als Passwörter. Das lehnen wir erstmal höflich ab. Wir können, wenn wir möchten, im Nachgang immer noch mit Zertifikaten arbeiten.

openswan

Im darauffolgenden Bildschirm wird zwar ein Zertifikat erstellt, da aber keine weiteren Daten abgefragt werden, bleibt dies ohne Auswirkungen und wir konnten es beruhigt verneinen.

leeres Zertifikat

IPsec.conf


Als nächstes wird die IPsecconf-Datei kopiert. 
cp /etc/ipsec.conf /etc/ipsec.conf.orig 

 Es wird die Datei kopiert und nach ipsec.conf.orig verschoben.
Danach wird die alte Datei gelöscht 
rm /etc/ipsec.conf 

Als nächstes wird sie neu erstellt 
nano /etc/ipsec.conf 

Wenn diese Befehle abgearbeitet sind erscheint die leere Datei, welche wir mit folgendem Quellcode füttern:

*************************ANFANG*************************
version 2.0
config setup
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
    oe=off
    protostack=netkey

conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT

conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=DEINE_IP_HIER
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

****************************ENDE*************************



Die Konfiguration ist so eingestellt, dass sie jegliche Art von privaten Netzwerken abdeckt. Das heißt die 10.0.0…, 192….., und 172…..
Eine Änderung muss aber in diesem Quellcode noch erfolgen. Die Zeile „left=DEINE_IP_HIER“ muss mit der IP-Adresse des Pis ersetzt werden, sodass dann die Zeile so aussieht: left=192.168.XXX.XXX (die X bitte mit der genauen Adresse deines Pi's ersetzen)
Danach wird die Datei mit Strg+O gespeichert und mit Strg+X das Menü verlassen.

IPsec.secrets

Weiter geht's mit
apt-get install xl2tpd

Nachfrage wieder bestätigen.

Jetzt müssen wir dem Pi sozusagen unser Geheimnis verraten. In diesem Fall ist es das Passwort. Dafür wird erst eine neue Datei angelegt.
nano /etc/ipsec.secrets

Das ganze sieht dann so aus

ipsec.secrets  

Innerhalb dieser Datei wird die Verschlüsselung festgelegt und die folgende Zeile eingefügt werden.
192.168.XXX.XXX    %any:   PSK „dasbestepasswort“

Nicht vergessen, auch hier die korrekte IP-Adresse von eurem Pi angeben.
Die PSK (Pre Shared Key) ist der Schlüssel, welche IPsec benutzt um die Pakete zu veschlüsseln. Um die Eingabe zu bestätigen, wieder Strg+O und Strg+X.

xl2tpd

Falls unsere Machenschaften einmal kräftig daneben gehen sollten wir uns vorbereiten eventuelle Fehler wieder auszubügeln. Das machen wir indem die Datei xl2tpd als erstes kopiert wird.

cp /etc/xl2tpd/xl2tpd.conf /etc/xl2tpd/xl2tpd.conf.orig

Die alte wird gelöscht
rm /etc/xl2tpd/xl2tpd.conf

und eine neue erstellt
nano /etc/xl2tpd.conf


Diese Datei weiß noch nicht was sie machen soll, also geben wir ihr einen leicht verdaulichen Code:


**************************ANFANG*************************** 

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done

ipsec verify

/etc/init.d/ipsec restart

aptitude install xl2tpd

[global]
ipsec saref = yes

[lns default]
ip range = 192.168.XXX.XXX-192.168.XXX.XXX
local ip = 192.168.XXX.XXX
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
**************************ENDE***************************

Diesen Code müssen wir noch ein bisschen anpassen.
Bei dem Feld "ip range" gebt ihr die Range von eurem DHCP ein. Diese findet ihr im Konfigurationsmenü eures Routers. Die "local IP" ist die IP eures Pi's.
Danach speichern und die Datei wieder verlassen.


Installation von ppp

apt-get install ppp

Es wird eine neue Datei angelegt mit: 
nano /etc/ppp/options.xl2tpd

Hier wurde zuvor keine Sicherheitskopie erstellt, da diese Datei noch nicht existierte.

Jetzt haben wir wieder eine hunrige Datei, die auf unseren Code wartet:



*************************ANFANG******************************
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

***********************ENDE***********************************
 

Die beiden o. g.  DNS-Server sind von Google. Wenn man den seines Providers oder seinen eigenen benutzen möchte, so braucht man ihn bloß hier noch einzutragen.

Speicher und Verlassen

Einrichtung der Benutzer

Damit wir Benutzer anlegen können fehlt uns noch eine Datei. Diese erstellen wir mit:
nano /etc/ppp/chap-secrets

So sollte dann die ganze Sache aussehen

chap-secrets
Es werden Benutzer wie folgt festgelegt:
Benutzername           Server (l2tpd)           Passwort             IP-Adresse

Zum Beispiel
Superhero            l2tpd            geilesPasswort         *

Das * bedeutet, dass dieser User von überall zugreifen darf. Wenn man da eine konkrete IP einträgt, dann hat dieser User auch nur von dieser IP Zugriff auf das VPN.

Abschließende Konfiguration

Wir bearbeiten die Einstellungen, die der Pi bei jedem Start vornimmt.
nano /etc/rc.local

rc.local
Der Cursor muss vor exit 0 platziert werden und folgender Code eingefügt werden.

******************************ANFANG****************************
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart

****************************ENDE*********************************
 

Speichern und Verlassen

Um die ganze Geschichte aktiv zu schalten müssen wir den Pi einmal neustarten.
shutdown -r now

Am Router müssen noch die Ports TCP: 1701 und UDP: 500, 4500 auf den Pi geleitet werden und dann funktioniert euer VPN-Server! Herzlichen Glückwunsch!

Ein kleiner Hinweis noch am Schluss: Windows 8 hat anscheind Probleme mit IPsec und l2tpd. Ohne Probleme funktioniert es mit Windows 7.



Keine Kommentare:

Kommentar veröffentlichen