VPN-Knigge

Seite 3: Ablösung

Inhaltsverzeichnis

Weil der Aufbau von IPSec-VPNs relativ komplex und fehleranfällig ist, setzen sich einfachere Lösungen durch, die zur Sicherung auf die Standards Secure Socket Layer (SSL) beziehungsweise Transport Layer Security (TLS) setzen. Der Begriff SSL-VPN hat derzeit zwei Bedeutungen: Zum einen bezeichnet clientless SSL-VPN den Web-Zugriff von entfernten Anwendern per SSL-Verbindung auf einen Server, die bestimmte Applikationen anbietet, etwa Datenbankzugriffe mittels Webbrowser [2] . Der Vorteil: https ist in jedem Browser eingebaut, ist erprobt und kommt überall durch. Der Nachteil: Um auch mit nicht webbasierenden Anwendungen zu arbeiten, müssen auf Client- und/oder Serverseite Umsetzer mitlaufen, etwa Java-Plug-ins, die deren Daten über die Browserverbindung umleiten. Zum anderen sind damit Lösungen wie OpenVPN gemeint, die IP-Pakete transparent tunneln und somit völlig unabhängig von der Anwendung sind.

SSL und TLS unterscheiden sich kaum: Das ursprünglich von Netscape entwickelte SSL wurde ab Version 3.0 mit einigen kleineren Änderungen von der IETF übernommen und TLS 1.0 genannt (RFC 2246). TLS unterstützt zur Authentisierung der Daten HMAC und erzeugt das Schlüsselmaterial mit einer anderen Funktion als SSL (PRF statt RAND). Bei der Nachrichtenübermittlung gibt sich TLS als SSL-Version 3.1 zu erkennen.

Der TLS Record sorgt für die verschlüsselte Übertragung der Application Data.

Das TLS-Protokoll nutzt zwei Schichten: Den Record Layer und die darauf aufsetzenden Protokolle Alert, Change Cipher Spec, Handshake und Application Data. Über das TLS-Handshake-Protokoll einigen sich die Peers auf einen individuellen symmetrischen Sitzungsschlüssel, beispielsweise wie bei IPSec mit Hilfe von Diffie-Hellman, und mit welchen Algorithmen verschlüsselt und authentisiert werden soll. TLS nutzt insgesamt vier Schlüssel: je einen zum Ver- und Entschlüsseln sowie je einen zur Authentisierung ankommender und abgehender Pakete.

Zur Authentifizierung dienen in der Regel Zertifikate, TLS unterstützt aber auch unsignierte RSA-Keys. Im Internet trifft der Anwender meist auf unidirektionale Authentifizierung: Nur der Server beglaubigt mit dem SSL-Zertifikat seine Identität. Bei SSL-VPNs beweist hingegen auch der Client seine Identität mit einem Zertifikat.

Der TLS-Verbindungsaufbau wird mit maximal 13 Nachrichten in vier Paketen abgewickelt.

Mit dem Change-Cipher-Spec-Protokoll signalisiert ein Teilnehmer, dass alle nun folgenden Pakete mit dem ausgehandelten Sicherheitskontext, beispielsweise AES-CBC mit 256 Bit und SHA1, zu schützen sind. TLS unterstützt fast 40 Sicherheitskontexte verschiedener Kombinationen von RSA, DH, AES, DES, SHA-1 und MD5. Geht an irgendeiner Stelle etwas schief, so informieren sich die Peers gegenseitig über das Alert-Protokoll.

Der TLS-Verbindungsaufbau wird mit maximal 13 Nachrichten abgewickelt, die über zwei Server-Pakete und zwei Client-Pakete verschickt werden. Steht der Tunnel, so komprimiert und verschlüsselt der TLS Record alle Daten des Application Data Layer und reicht sie weiter an die TCP-Schicht.

Die Open-Source-Lösung OpenVPN nutzt ebenfalls TLS, geht aber ein paar Umwege, um statt reiner Anwendungsdaten IP-Pakete und sogar Ethernet-Frames sowie alle darüber liegenden Protokolle zu tunneln. OpenVPN nutzt für die Datenübertragung bevorzugt das zustandlose UDP, das keine Flusskontrolle für den Datenverkehr kennt. Der Grund: Beim Einkapseln des von den meisten Anwendungen benutzten TCP in andere TCP-Pakete entstehen durch die ineinander geschachtelten TCP-Flusskontrollalgorithmen Interferenzen. In der Folge kann es zu hoher Latenz und Verbindungsabbrüchen kommen.

Da TLS per Definition nur über TCP funktioniert, muss OpenVPN tricksen und gaukelt TLS einfach einen zuverlässigen TCP-Layer vor. Steht der Tunnel, verschlüsselt OpenVPN alle über sein tun/tap-Interface ankommenden Pakete, schreibt einen Initialisierungsvektor davor, authentisiert das Ganze per HMAC und verschickt es über den UDP-Tunnel. Auf der Empfängerseite arbeitet OpenVPN alle Schritte in umgekehrter Reihenfolge ab und leitet das Paket weiter. Bei TLS wird der gesamte Verkehr über einen einzigen UDP-Port abgewickelt. Dazu multiplext der Server sowohl den TLS-Handshake als auch die verschlüsselten Pakete auf eine Verbindung.

Da OpenVPN weder die IP-Adresse noch die UDP-Portnummer des Paketes authentisiert, bereiten NAT-Router auf dem Weg zum Empfänger keine Probleme. Auch Road Warrior mit dynamischen IP-Adressen bedient OpenVPN klaglos. Selbst der Server darf eine dynamische IP-Adresse haben. Dem Client reicht beispielsweise die Angabe eines DynDNS-Namens, um den Server zu erreichen. OpenVPN eignet sich obendrein auch zur Kopplung entfernter Netze.