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



