Über die Mauer
Mit OpenVPN Firmen-Firewalls überwinden
Mit OpenVPN kann man jede noch so restriktive Unternehmens-Firewall überwinden, sofern sie wenigstens einen Port für ein verschlüsseltes Protokoll offen lässt. Oft ist das der Port für das Protokoll HTTPS. Seinen eigenen HTTPS-Server kann man trotzdem weiter an diesem Port betreiben.
Motivation
Das Szenario dürfte vielen bekannt sein: Man sitzt in der Arbeit hinter einer Firewall, die im Extremfall nur das Webbrowsen zulässt. Nur die Ports 80 (HTTP) und 443 (HTTPS) sind dafür offen. Will man sich jetzt beispielsweise per SSH mit seinem Rechner daheim verbinden, hat man ein Problem. Es existieren Möglichkeiten, dies mit einem webbasierten SSH-Client (Ajaxterm/WebShell, Shell in a Box) zu umgehen. Die Installation dieser Software muss auf dem heimischen Webserver erfolgen. Doch diese Programme besitzen, da sie im Browser laufen, einige Einschränkungen und Zuverlässigkeitsprobleme.
Es ist möglicherweise weniger bekannt, dass man ein VPN (Virtual Private Network) für den gleichen Zweck verwenden kann, und man damit eine SSH-Verbindung auf der Konsole (oder wahlweise mit einem grafischen Client) erhält, was wesentlich komfortabler und leistungsfähiger ist. Für das VPN muss man einen Port auf seinem Heimrechner opfern, und aufgrund dessen, was die Firewall zulässt, bedeutet das, dass eventuell nur Port 443 übrig bleibt. Doch wie wir noch sehen werden, kann der eigene Webserver weiterhin HTTPS auf diesem Port anbieten.
Es gibt mehrere Programme zum Aufbau eines VPN unter Linux. OpenVPN ist eines davon. OpenVPN ist plattformunabhängig und unterstützt dynamische IP-Adressen und NAT. Bis auf tun oder tap, das in den meisten Distributionen vorhanden sein dürfte, wird kein spezielles Kernelmodul benötigt.
Installation
OpenVPN dürfte in den meisten Distributionen vorhanden sein. Somit ist ein Kommando wie
apt-get install openvpn oder yum install openvpn oder zypper in openvpn
ausreichend, um das Programm zu installieren. Doch muss OpenVPN erst konfiguriert werden, um es nutzen zu können. Es ist zunächst einmal nötig, einen Einstieg in die Konfiguration zu finden. Der Aufruf openvpn
zeigt eine verwirrende Zahl von Optionen, die letztlich die Flexibilität des Programms widerspiegeln. So mancher könnte angesichts dieser Optionen anfangen, nach einem anderen Programm zu suchen. Doch ohne sich etwas damit zu beschäftigen, geht es nun einmal nicht. Zuerst sollte man sich die Manpage anschauen. Schon ein kurzes Überfliegen (man openvpn
) der Manpage ergibt, dass man alle Optionen sowohl direkt beim Aufruf angeben als auch in eine Konfigurationsdatei schreiben kann. Diese Konfigurationsdatei legt man zumindest bei Debian und Opensuse unter /etc/openvpn ab, wobei der Name beliebig sein kann. Die Dateiendung sollte .conf lauten. Jede Datei beschreibt eine VPN-Verbindung, entweder als Client oder als Server, und es können beliebig viele Verbindungen angelegt werden. Standardmäßig werden alle derartigen Verbindungen beim Systemstart geöffnet. Dies kann man aber konfigurieren, bei Debian in der Datei /etc/default/openvpn.