Installation eines OpenVPN Servers unter FreeBSD

Server Installation

Die Installation des Servers ist nicht weiter schwierig, bei den meisten Distributionen und auch in der Portscollection von FreeBSD ist es als Paket zu finden. Unter FreeBSD tut es ein einfaches pkg_add -r openvpn bzw. /usr/ports/security/openvpn/make install clean.

Die weiteren Schritte der Konfiguration werden im folgenden erläutert. Neben der in diesem Tutorial gewählten Variante die VPN-Verbindung asymetrisch, mit SSL-Zertifikaten, zu authentifizieren gibt es noch die Möglichkeit dies syncron, mit statischen Schlüsseln, zu bewerkstelligen. Diese Methode habe ich jedoch recht schnell verworfen da diese zu viele Angriffspunkte auf die Sicherheit eines VPN bietet.

Erstellen der SSL-Zertifikate

Zum einfachen erstellen der eigenen CA und der dazugehörigen RSA-Schlüßel verwenden wir das easy-rsa Skript das bei OpenVPN 2.0 mitgeliefert wird. Dieses befindet sich unter FreeBSD im Verzeichnis /usr/local/share/doc/openvpn/easy-rsa und sollte sinnvollerweise nach /usr/local/etc/openvpn kopiert werden.

Im folgenden passt man die Datei vars an die eigenen Bedürfnisse an indem man die Werte für die Umgebungsvariablen vorgibt. Will man eine neue CA aufbauen löscht man zuerst alle bestehenden Schlüßel und Zertifikate mit dem clean-all Skript und erstellt die CA dann mit dem build-ca Skript.

. ./vars
./clean-all
./build-ca

Dabei werden eine Reihe von Parametern abgefragt, wobei man die meisten schon über die Datei vars vorgeben kann und jetzt nur noch mit Enter bestätigen muss. Nach dem erstellen der CA ist es notwendig mit build-server-key den RSA-Schlüssel für den Server zu erstellen und im Anschluss für jeden Client ebenfall einen eigenen Schlüssel mit build-key anzulegen. Im laufe der Schlüsselerzeugung wird automatisch die Zertifizierung vorgenommen.

./build-key-server vpn-server
./build-key client-one
./build-key client-two

Für jeden Schlüßel wird dabei eine .key Datei und eine .crt Datei erzeugt die auf die zusammen mit der ca.crt Datei auf die Clients kopiert werden müssen. Bevor es aber losgehen kann muss nur noch die Diffie Hellmann Parameterdatei angelegt werden.

./build-dh

Die Konfigurationsdateien

Die Konfigurationsdatei des Servers ist im Prinzip selbsterklärend, wichtig ist dabei die eigene lokale IP-Adresse, der Port und das Protokoll, diese müssen später auch im Client passend eingegeben werden. Neben diesen Optionen müssen auch noch die zu verwendenden SSL Schlüssel angegeben werden und das interne VPN-Subnetz deklariert werden. Wichtig ist auch die Option client-to-client welche das interne Routing aktiviert damit sich die VPN-Clients innerhalb des internen VPN-Subnetzes verständigen können. Sinnvollerweise platziert man die Konfigurationsdatei unter /usr/local/etc/openvpn/server.conf

# lokale ip adresse
local 192.168.0.1

# lokaler port
port 1194

# zu verwendendes protokoll (upd/tcp)
proto udp

# zu verwendendes interface (tun/tap)
dev tun
  
# zu verwendende rsa schluessel und ca
ca /usr/local/etc/openvpn/easy-rsa/keys/ca.crt
cert /usr/local/etc/openvpn/easy-rsa/keys/reaper.crt
key /usr/local/etc/openvpn/easy-rsa/keys/reaper.key

# zu verwendender diffie hellmann parameter
dh /usr/local/etc/openvpn/easy-rsa/keys/dh1024.pem
  
# zu verwendendes vpn subnetz
server 192.168.23.0 255.255.255.0

# zuordnungsfile für statische client ips 
ifconfig-pool-persist ipp.txt

# einschalten des internen routings
client-to-client

# verbindung aller 10 sekunden pruefen und nach 120 neustarten
keepalive 10 120

# kompression aktivieren
comp-lzo

# logfile
status openvpn-status.log

# logfile genauigkeit (0-9)
verb 0

Hat man nun die Schlüssel und CA erzeugt und den Konfigfile angelegt kann man den Server das erste Mal testweise starten.

# openvpn /usr/local/etc/openvpn/server.conf

Automatischer Start

Damit der VPN-Server auch beim Systemreboot (das ist wenn man den Rechner aus und wieder anschaltet) automatisch gestartet wird sind ein paar kurze Einträge in der Datei /etc/rc.conf notwendig.

# enable openvpn server
openvpn_enable="YES"
openvpn_if="tun"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"
openvpn_dir="/usr/local/etc/openvpn"

Hat man dies erledigt kann man den Server über das Startskript /usr/local/etc/rc.d/openvpn starten und beenden.

VPN zum Internetzugriff konfigurieren

todo

Meine Stimme gegen Nazis! Nazis raus aus dem Internet Stoppt die Vorratsdatenspeicherung! Jetzt klicken und handeln! rsp-blogs.de
Soweit nicht anders angegeben, stehen die Bilder/Texte unter der Creative Commons Attribution Non-Commercial Share Alike Lizenz. Logos gehoeren dem jeweiligen Eigentümer.