Aus Linux-Magazin 08/2008

Praxistest: Mit Kvpnc mehrere VPNs grafisch verwalten

© ON TOURS by HeMP, Fotolia.com

Ein virtuelles privates Netzwerk zu verwenden gehört für viele Netznomaden zum Alltag. Eine VPN-Konfiguration erfordert viel Detailwissen, und den Tunnelaufbau erledigen oft noch handgestrickte Shellskripte. Mit Kvpnc sollen sich Tunnel einfach aufbauen lassen.

Auch VPNs müssen sich mit der scheinbaren Unvereinbarkeit zwischen sicherer Konfiguration und Bequemlichkeit herumschlagen. Ein halbes Dutzend VPN-Protokolle von IPsec über OpenVPN hin zu diversen proprietären Varianten stellen Benutzer und so manchen Admin vor eine schwere Wahl. Wenn auch noch alternative Implementationen und Schlüsselverfahren zur Wahl stehen, die alle ihre eigenen Konfigurationsformate mitbringen, kapitulieren viele.

Das aus dem Umfeld von KDE stammende Kvpnc tritt an, um diese Probleme mit einem einzigen Client zu lösen [1]. Wäre es einfach zu benutzen, beschriebe es mögliche Fehlermeldungen klar und wäre es übersichtlich aufgebaut, bestünde die Hoffnung, dass Fehlbedienungen aus Unkenntnis nicht unmittelbar das Mehr an Sicherheit wieder zunichte machen. Die Software muss daher neben technischen Eigenschaften sich auch daran messen lassen, ob sie tatsächlich vereinfacht.

Die Entwickler von Kvpnc sind gerade aktiv mit Erweiterungen beschäftigt. Ist in vielen Distributionen noch die Version 0.8.7 enthalten, lässt sich von der Homepage schon Version 0.9.1-rc1 für ein gutes Dutzend Distributionen herunterladen. Bei diesem Test kam 0.9.0 zum Einsatz, die letzte stabile Version.

Testumgebung

Ein VPN soll einen vertraulichen Tunnel über ein Netz herstellen, über dessen Sicherheitsparameter der Anwender keine Kontrolle hat. Zum Test baute das Linux-Magazin ein virtuelles Testnetzwerk auf, das unter Xen 3.2 auf Gentoo Linux und mit Kernel 2.6.21 lief. Der Client und die Server-Domain waren im lokalen Netzwerk 192.168.1.0/24 zu erreichen. Das virtuelle und entfernte Netz, in das die gesicherten Tunnel hineinreichen sollten, besaß die Adresse 192.168.2.0/24. Der Server hatte auch ein Interface im virtuellen Netz. Außer den Tunneln unterhielten die beiden Netze keine Routen zueinander. Die im virtuellen Netz eingesetzten Hosts für Erreichbarkeitstests nutzen das Xen, um einfach neue VMs zu erzeugen.

Der Test des VPN-Clients beschränkte sich auf zwei häufig in der Praxis anzutreffende Szenarien: OpenVPN für SSL-basierte Tunnel und Openswan für IPsec-Verbindungen. Der erste Aufbau prüfte, ob Kvpnc eine bestehende Konfiguration einlesen kann, im zweiten ging es darum, das Tool selbst eine Konfiguration erstellen zu lassen. Kvpnc unterstützt darüber hinaus noch eine Reihe anderer Protokolle, die Tabelle 1 auflistet.

Tabelle 1:
Unterstützte VPNs

 

Software

Protokoll

Version

Vpnc

Cisco-IPsec

ab 0.2 Rm+zomb-pre9

OpenVPN

SSL

1.x und 2.x (empfohlen)

Vtun

SSL

k.A.

Freeswan

IPsec

1.x und 2.x (empfohlen)

Strongswan

IPsec

Linux 2.4 oder 2.6

Openswan

IPsec

Linux 2.4 oder 2.6

IPsec-tools

IPsec

Linux 2.6, BSD

Pptpclient

PPTP

Pppd/MPPE-Kernel

L2tpd

L2TP/IPsec

0.69 und später

Das Prozedere für den Test von Kvpnc war, zuerst eine Konfiguration von Hand zu erstellen, die sich sauber aufbauen und wieder abbrechen lässt, um den Administrator zufriedenzustellen. Um zu überprüfen, ob die Verbindung auch unter Last stabil bleibt, sorgten Portscans für kontinuierlichen Verkehr auf der Datenautobahn. Danach versuchten die Tester die Client-seitige Konfiguration in Kvpnc zu importieren und die Tunnel per Knopfdruck aufzubauen.

Importiert: OpenVPN

Im ersten Test kam OpenVPN 2.1 zum Einsatz. Das Wiki des Projekts [2] erklärt einen minimalistischen Beispielaufbau anhand eines Preshared Key. Den erzeugt der Admin, bevor er ihn auch auf den Server kopiert, mit dem Aufruf:

openvpn --genkey --secret static.key

Die Konfigurationsdateien für Server und Client sind wahrhaft minimal, wie Listing 1 zeigt. Mit dieser Konfiguration startet der Server, der Client baut eine Verbindung auf und »ping« bestätigt den erfolgreichen Tunnelaufbau.

Listing 1: Simple
OpenVPN-Konfigurationen

01 # Client auf 192.168.1.70
02 remote 192.168.1.68
03 dev tun
04 ifconfig 192.168.2.100 192.168.2.2
05 secret static.key
06 
07 # Server auf 192.168.1.68
08 dev tun
09 ifconfig 192.168.2.2 192.168.2.100
10 secret static.key

Die Konfiguration in Kvpnc gestaltete sich nicht so einfach wie erwartet. Der Assistent für den Import einer existenten Konfigurationsdatei präsentiert sich zwar einfach und übersichtlich, birgt aber Stolpersteine. So besteht beispielsweise der Dialog für die Dateiauswahl auf einem festen, nicht veränderbaren Dateinamenfilter. Dateien, die nicht auf »ovpn« oder »conf« enden, zeigt Kvpnc gar nicht erst an. Das hat vielleicht seine Begründung darin, dass OpenVPN für so benannte Skripte beim Booten Tunnel aufbaut, aber für Testzwecke wäre eine Alternative im Filter dennoch praktisch.

Wer in einem weiteren Schritt des Assistenten für ein Profil einen Namen angibt, der Leerstellen enthält, den weist das Programm darauf hin, dass dies nicht zulässig sei (siehe Abbildung 1). Das wäre nicht weiter schlimm, aber statt eine Neueingabe zu fordern, setzt Kvpnc den Wizard mit dem nächsten Schritt fort, ganz so, als ob nichts gewesen wäre. Solche Kleinigkeiten häufen sich leider noch in dem Programm, wie mehrere Tester unabhängig feststellten.

Abbildung 1: Ein Wizard führt den Anwender durch das Anlegen neuer Profile, hier im Beispiel für OpenVPN. Dabei muss der Anwender jedoch einige Einschränkungen hinnehmen.

Abbildung 1: Ein Wizard führt den Anwender durch das Anlegen neuer Profile, hier im Beispiel für OpenVPN. Dabei muss der Anwender jedoch einige Einschränkungen hinnehmen.

Einreiseverbot

Leider funktioniert der eigentliche Import nicht. Ärgerlich ist dabei, dass unklar bleibt, woran es liegt. Das Programm speichert nicht jedes Mal Änderungen, sodass es verlässlicher ist, die Konfiguration von Hand einzugeben, zu speichern, das Programm zu beenden und neu zu starten (siehe Abbildung 2). Das Default-Verhalten von Kvpnc stimmt außerdem nicht mit den Defaults der verwendeten Software überein. So setzt es beispielsweise statt UDP für OpenVPN TCP voraus.

Abbildung 2: Trotz offenkundig korrekter Einrichtung ist Kvpnc nicht dazu zu bewegen, einen Tunnel aufzubauen.

Abbildung 2: Trotz offenkundig korrekter Einrichtung ist Kvpnc nicht dazu zu bewegen, einen Tunnel aufzubauen.

Zauber um IPsec

Im nächsten Versuch sollte Kvpnc eine IPsec-Verbindung selbst konfigurieren. Dazu stellt das Programm einen Wizard bereit und fragt eine Reihe von Parametern ab. Verwirrend ist, wieso es zunächst zwar unterschiedliche Wizards für Freeswan [3] und Openswan [4] einerseits und die native IPsec-Variante von Linux andererseits anbietet, aber dann weitgehend gleiche Fragen stellt.

So will das Programm zunächst wissen, wie sich die Kommunikationspartner authentifizieren sollen. Kvpnc bietet sowohl die Verwaltung eines festen Schlüssels als auch den Umgang mit Zertifikaten an, die der Anwender aus unterschiedlichen Formaten importieren darf. In den meisten Fällen sind die sicheren Einstellungen der Default, sie lassen sich jedoch auch abschalten.

Zum Beispiel aktiviert Kvpnc per Default »Perfect Forward Security« oder die opportunistische Verschlüsselung, beides sind nützliche Erweiterungen in Freeswan gegenüber einer minimalen IPsec-Implementation. Durch Ankreuzen eines Feldes deaktiviert der Admin die Verfahren. Bei privaten DSL-Routern tritt oft das Problem auf, dass sich ein IPsec-Tunnel nicht Ende-zu-Ende aufbauen lässt, da NAT sie umschreibt oder der Router schlicht das Layer-3-Protokoll IPsec nicht korrekt transportiert. Kvpnc bietet einen Lösung mit NAT-T an, das die Daten nochmals in klassische UDP-Pakete einhüllt.

Unter der Haube

Insgesamt entsprechen die Vorgaben des Tools einem vernünftigen Sicherheitsniveau, es verlangt dem Anwender, der ein Profil konfiguriert, aber einiges ab. Mitunter holprig hilft das Programm zwar per Tooltip dabei, die knapp gehaltenen Knopfbezeichnungen zu verstehen, aber wer noch nie ein VPN konfiguriert hat, tut sich hier dennoch schwer.

Fasziniert durchaus ein Blick in die umfangreichen Möglichkeiten im Menü »Einstellungen«, wird bei genauerem Hinschauen auch deutlich, wie Kvpnc dazu kommt: Das Programm ruft eine Reihe externer Tools auf, darunter die Befehle »openssl« oder »iptables«, aber auch generische Befehle wie »kill« oder »killall«. Ist es für erstere eine Herausforderung, bei eventuellen Änderungen der Aufrufsyntax auf dem neusten Stand zu bleiben, so fragt sich bei der zweiten Kategorie, wieso das Programm dies nicht selbst implementiert.

Wer wie Kvpnc ein VPN aufbauen möchte, muss Änderungen an der Netzkonfiguration vornehmen, etwa Interfaces hoch- und herunterfahren oder neu anlegen und deren Parameter setzen. Solche Änderungen erfordern – wie der äquivalente »ifconfig«-Befehl – oft Root-Privilegien, die ein normaler Benutzer nicht besitzt. Die Dokumentation von Kvpnc empfiehlt daher »sudo« zu verwenden – eine gute Idee, wenn der Admin vermeiden möchte, das SUID-Bit für das Programm zu setzen. Um »sudo« einzusetzen, richtet er eine separate Gruppe ein, etwa »kvpncusers«, deren Mitglieder Kvpnc per »sudo« aufrufen dürfen.

Rechteabgabe

Softwarepakete, die der Admin per Paketverwaltung auf die Clients verteilt, müssen angepasst sein, damit ein Klick auf die Desktop-Icons auch den VPN-Client mit »sudo« ausführt. Unter KDE steht dafür KDE-SU als grafische Variante bereit (siehe Abbildung 3). Dabei fällt auf, dass das Programm seine Privilegien nicht weiter einschränkt: Der komplette Prozess läuft fortan unter erweiterten Rechten, nicht nur der Thread, der für die Netzkonfiguration zuständig ist. Da das Programm umfassenden Gebrauch von Dialogfenstern mit Dateiauswahl macht, erhält ein Anwender damit Zugriff auf sonst für ihn verbotene Dateien – in diesem Kontext ein Sicherheitsleck [5].

Abbildung 3: Kvpnc benötigt Root-Rechte, um Interfaces anzulegen und zu konfigurieren.

Abbildung 3: Kvpnc benötigt Root-Rechte, um Interfaces anzulegen und zu konfigurieren.

Ergebnis der Untersuchung: Im Test war Kvpnc nur mit Einschränkungen zu benutzen. Gerade die Schwierigkeiten beim Import von bereits vorhandenen funktionierenden Konfigurationen bergen das Potenzial, Kopfschmerzen zu bereiten.

Zwei Seiten der Medaille

Nicht alles, was sich der Admin an Funktionen wünscht, ist auch implementiert. So darf der Anwender mit Kvpnc noch nicht mehrere Tunnel gleichzeitig aufbauen. Mehrere Profile sind hingegen problemlos möglich. Einige Sicherheitsexperten halten das vielleicht für ein erfreuliches Feature, weil so Kvpnc nicht wissentlich oder unwissentlich zu einem Brückenkopf zwischen zwei gesicherten Netzen mutieren kann. Das als Split Tunneling bekannte Problem sollte das Werkzeug aber letztlich dann doch lieber dem Administrator überlassen.

Damit zeigt sich Kvpnc als ambivalentes Tool: Der Ansatz, endlich einmal die Vielzahl an Verschlüsslungsprotokollen unter einen Hut zu bringen und in einem grafischen Werkzeug zu vereinen, verdient Applaus. Das Einlesen und Parsen vieler verschiedener Konfigurationsformate kommt allerdings dem Versuch nahe, einen Pudding an die Wand zu nageln. Das gilt selbst erfahrenen Anwendungsprogrammierern als Königsdisziplin. Kvpnc sprudelt über vor guten Ideen, die die Entwickler aber oft noch nicht zu Ende gedacht haben oder die handwerkliche Fehler aufweisen, wie die starren Dateifilter oder das Behandeln von Leerzeichen in Dateinamen.

Wer sich jedoch auf definierte Einsatzszenarien kapriziert, findet mit Kvpnc ein Werkzeug, das für viele Anwender allemal nützlicher ist als ein händisch zu startendes Shellskript. Es ist ein Paradebeispiel für ein Open-Source-Projekt, das den Leitsatz “Release early, release often” verinnerlicht. Insofern sollten Benutzer mit Gnade auf das Projekt schauen und seine Entwickler mit Feedback und Bugreports unterstützen. Für die Kommunikation mit anderen Usern gibt es eine Mailingliste. Ein Blick ins Archiv zeigt, dass Anwender sie aktuell nur sporadisch frequentieren. Bleibt zu hoffen, dass hinreichend viele dieses interessante Programm im Blick behalten. (mg)

Der Autor

Thorsten Fischer lebt und arbeitet als Autor und Sicherheitsberater in Berlin und London (oder umgekehrt).

Infos

[1] Kvpnc:[http://home.gna.org/kvpnc/de_DE/]

[2] Wiki des OpenVPN-Projekts:[http://www.openvpn-wiki.de/wiki/]

[3] Freeswan: [http://www.freeswan.org]

[4] Openswan: [http://www.openswan.org]

[5] Nils Magnus, “Druckerschwärze: Sicherheitsschwachstellen bei proprietärer Software finden”: Linux-Magazin 09/07, S. 88

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 3 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben