VPN-Verbindungen mit Linux-Clients einrichten

Nah und geheim

Die sicherste Methode, Unternehmensnetze miteinander zu verbinden stellen Virtual Private Networks (VPN) dar. Leider sind die Implementierungen von Firmen wie Microsoft und Cisco nicht automatisch mit Linux kompatibel. Dieser Artikel zeigt Lösungsmöglichkeiten.

Die zwei größten Vorteile von VPN-Tunnels bestehen darin, dass die Verbindung verschlüsselt ist und man damit bei richtiger Konfiguration an Ressourcen innerhalb der Unternehmens-Firewall herankommt. Aus Perspektive der Interoperabilität hingegen ist es manchmal schwierig, solche Tunnels mit Linux-Clients aufzubauen. Sie haben häufig Schwierigkeiten damit, VPN-Verbindungen mit Servern in heterogenen Umgebungen aufzunehmen. Das liegt meist daran, dass die GUI-Programme nicht mit dem Tempo der Linux-Entwicklung Schritt halten können.

Oft sind es ein Schritt vor, zwei Schritte zurück: Wenn eine Linux-Distribution erscheint, ändert sich eine Shared Library und die vom Benutzer favorisierte VPN-Anwendung, die eben noch funktionierte, kann keine Verbindungen zwischen unterschiedlichen Betriebssystemen mehr aufbauen. In letzter Zeit hat sich diese Situation etwas verbessert. Dieser Artikel gibt einige Tipps dazu, wie Sie vom Linux-Desktop aus VPN-Verbindungen nutzen können.

Ein VPN baut eine Punkt-zu-Punkt-Verbindung über ein öffentliches Netz, meist das Internet, auf. Eine Reihe von Protokollen unterstützen VPN-Verbindungen, zum Beispiel:

  • L2TP über IPsec: Ciscos primäres Tunnel-Protokoll. L2TPv3 ist die neueste Version, man sollte aber darauf achten, die fürs eigene Netz passende Version zu verwenden. Für Linux-Systeme gibt es im wesentlichen zwei Implementierungen. Ältere Systeme verwenden beispielsweise FreeS/WAN oder Openswan für IPsec. Neuere Systeme mit einem Kernel aus der 2.6-Reihe besitzen nativen IPsec-Support.
  • Point-to-Point Tunneling Protocol (PPTP): Ein älteres Protokoll, das oft in Microsoft-Umgebungen eingesetzt wird.
  • Secure Sockets Layer / Transport Layer Security (SSL/TLS): Als eines der für Interoperabilität brauchbarsten Protokolle unterstützt SSL/TLS viele Typen von VPN-Verbindungen. OpenVPN [1] ist zum Beispiel eine SSL/TLS-basierte Tunnellösung.

In den letzten Jahren gab es viele Diskussionen darüber, welches Protokoll das sicherste oder Open-Source-freundlichste ist. Oft bewegten sie sich schon jenseits der Grenze zum Religiösen. Tatsächlich sind solche Diskussionen meistens weniger sinnvoll, als einfach eine praktikable Lösung für das eigene Netz zu finden und sie zu implementieren.

Welches Protokoll Sie auch immer verwenden, die Firewall betrachtet die Pakete, die durch ihn fließen, als interne Pakete. Die Schwierigkeit liegt darin, dafür zu sorgen, dass sie die richtige Schnittstelle und den richtigen Tunnel passieren.

Die Linux-Welt bietet einige Werkzeuge, um VPN-Verbindungen einzurichten und aufzubauen. Das KDE-Tool KVpnc unterstützt mehrere Protokolle, von Cisco über Microsoft bis zu OpenVPN. Vpnc ist ein Kommandozeilenprogramm für Cisco-VPNs. Viele Distributionen verwenden Red Hats Networkmanager [2], in den der Anwender VPN-Plugins für Microsoft und Cisco einbauen kann. Pptpconfig [3] ist ein älterer Client, der besonders gut mit Red-Hat-, Novell-Linux- und einigen BSD-Implementierungen funktioniert. Wie der Name bereits andeutet, ist Pptpconfig für Microsoft-basierte VPNs gedacht.

Tunnel-Aufbaue

Egal welchen Client oder welches Protokoll Sie verwenden, es sind zunächst einige Informationen über Verbindung nötig, die Sie aufbauen möchten, so zum Beispiel:

  • Authentifizierung: Abhängig von der Netzwerkumgebung gibt es unterschiedliche Methoden, sich gegenüber dem Server auszuweisen. Die am wenigsten sichere, aber am weitesten verbreitete ist die Username/Passwort-Kombination. Alternativen sind geheime Schlüssel und Zerifikaten, die zum Beispiel Cisco bevorzugt.
  • Gateway (oft auch VPN-Server benannt): Die IP-Adresse oder der Hostname des Rechners, der den Tunnel nach der Authentifizierung bereitstellt.
  • Protokolltyp: Wie bereits angesprochen, müssen Sie sich für eins der Protokolle L2TP, PPTP, OpenVPN und so fort entscheiden. Das Konfigurations-Tool fragt normalerweise die Optionen ab, die spezifisch für das jeweilige Protokoll sind.
  • Allgemeine Einstellungen: Egal, welches Protokoll sie verwenden, es gibt immer auch einige Variablen, die sich auf die Verbindung an sich beziehen. So erfordern zum Beispiel einige Netzwerk die korrekte Einstellung der MTU (Maximum Transfer Unit).
  • Routing-Informationen: Unabhängig vom Protokoll müssen Sie sicherstellen, dass die richtigen Pakete den richtigen Weg nehmen.

Microsoft PPTP

Auch wenn viele PPTP für weniger sicher halten als Cisco- oder OpenVPN-Verbindungen, ist es dennoch weit verbreitet. Wer das Microsoft-Protokoll einrichten will, braucht dafür eine ganze Reihe von Authentifizierungs-, Kompressions- und Verschlüsselungsoptionen.

Die erste Herausforderung besteht darin, sich für eine Authentifizierungsmethode zu entscheiden. Peer-Authentifizierung bedeutet, dass der Server den Host dazu auffordert, sich auszuweisen. Optionen dafür sind:

  • Challenge Handshake Authentication Protocol (CHAP): Das RFC-standardisierte Protokoll. Alles, was Sie für CHAP-Authentifizierung brauchen, ist ein Benutzername und ein Passwort. Microsofts Implementierung des Protokolls heißt MS-CHAP. Wenn Sie eine VPN-Verbindung mit einem Microsoft-Server aufbauen wollen, entscheiden Sie sich im Zweifelsfall besser für diese Methode.
  • EAP: Ein Erweiterung des ursprünglichen PPP-Authentifizierungsprotokolls, die ein Zertifikat anstelle eines Passworts erlaubt. EAP ist nicht so weit verbreitet wie MS-CHAP und CHAP.

Viele Clients besitzen eine Einstellung, um jede einzelne dieser Methoden abzuweisen. Wenn Sie wollen, dass das Zusammenspiel mit dem entfernten VPN-Server reibungslos klappt, müssen Sie das eventuell dem PPP-Daemon auf Ihrem System machen.

Üblicherweise komprimieren VPN-Verbindungen Pakete, um sie effektiv zu tunneln. Grundsätzlich gibt es drei Optionen zur Komprimierung:

  • Microsofts Point-to-Point Compression (MPCC): Ein älteres Protokoll, das auf dem Lempel-Ziv-Algorithmus (LZ) basiert und üblicherweise für ältere Windows-Clients wie Windows 95 oder NT reserviert ist.
  • Deflate Compression: Ein patentfreies Protokoll ähnlich zu MPPC. Es universeller als MPPC, wird aber in den meisten Microft-VPN-Umgebungen nicht eingesetzt.
  • BSD Compression: Das tradtionelle BSD-Protokoll, das in RFC 1977 standardisiert ist.

Häufig haben Probleme mit VPNs ihre Ursache in der Komprimierung. Wenn Sie also nicht definitiv wissen, was Sie einstellen müssen, lassen Sie die Komprimierung erst einmal weg, bis alles funktioniert und experimentieren erst dann damit.

Weiteres Augenmerk gilt der Verschlüsselung. Microsoft Point-to-Point Encryption (MPPE) ist eine Untermenge von MPPC. Dabei gibt es zwei Schlüsselstufen: 40 Bit und 128 Bit. In vielen Ländern setzen Firmen nur 40-Bit-Verschlüsselung ein.

Zustandsbehaftetes MPPE stellt normalerweise die beste Verschlüsselungsoption dar, weil es die beste Netzwerk-Performance bietet

comments powered by Disqus

Artikel der Woche

Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Google+

Ausgabe /2018