Open Source im professionellen Einsatz
Linux-Magazin 10/2003

VPN-Daemon im Userspace: Tinc

Einfache Verbindung

Tinc ist ein VPN-Daemon, der ohne Kernelmodifikation ganze Netze tunnelt. Besonders bei größeren VPN- Installationen wird sich der Admin über die einfache Konfiguration freuen: Zusätzliche Knoten sind deutlich schneller integriert als bei Freeswan.

582

Für Tinc als Alternative zum allgegenwärtigen Freeswan sprechen einige Argumente: Es benötigt kein Kernel-Patch, das Programm arbeitet nur im Userspace. Es verwendet sehr einfache Konfigurationsdateien, die Administrationsfehler fast ausschließen. Tinc kann auch Nicht-IP-Verkehr über den Tunnel transportieren und schützen: Jedes Paket, das in einen Ethernet-Rahmen passt, lässt sich auch mit dieser Technik tunneln. Freeswan schützt dagegen nur IPv4-Pakete. Schließlich ist Tinc sehr klein und schont die Host-Ressourcen; die ausführbare Datei ist lediglich 80 KByte groß, auch der laufende Prozess belegt nur wenig Speicher.

Vor- und Nachteile

Tinc weist jedoch auch einige Nachteile auf. So verwendet es kein Standardprotokoll, daher sind interoperable Lösungen zwischen verschiedenen Betriebssystemen nicht immer möglich - seit Version 1.0 ist jedoch eine native Win32-Unterstützung enthalten. Die Verschlüsselung im Userspace ist langsamer als im Kernel, da die Daten öfter kopiert werden müssen. Außerdem hatte das Protokoll in der Vergangenheit einige Schwächen (siehe Kasten "Sicherheitslücken"), die sich durch ein Standardprotokoll hätten vermeiden lassen.

Sicherheitslücken

Im August 2000 wurde eine Sicherheitslücke in dem Schlüsselaustausch von Tinc entdeckt. Die Lücke war in allen Version bis einschließlich 1.0pre2 zu finden, sie ist aber inzwischen behoben. Für den Schlüsselaustausch ist nun die bewährte OpenSSL-Bibliothek zuständig, die Authentifizierung nutzt RSA-Schlüssel mit 1024 Bit Länge.

Jerome Etienne untersuchte das Tinc-Protokoll der Version 1.0pre4 und veröffentlichte am 29. Dezember 2001 seine Ergebnisse[3]. Er bemängelte das Fehlen einer Sequenznummer und einer Paketauthentifizierung. So gab es keinen Schutz vor Replay-Angriffen oder einer Modifikation der Pakete. Diese Lücken sind seit Version 1.0pre5 geschlossen. Tinc verfügt nun wie andere VPN-Protokolle (etwa IPsec) über eine Sequenznummer und einen Message Authentication Code (MAC), mit dessen Hilfe der Empfänger jede Modifikation der Pakete erkennt.

Zudem bemerkte Jerome, dass Tinc einen sehr kurzen (nur 16 Bit) zufälligen Initialisierungsvektor (IV) verwendete. Der IV ist im CBC-Modus erforderlich, er sollte möglichst lang und einzigartig sein. Da Tinc ihn zufällig bestimmte, konnte es die Einzigartigkeit nicht garantieren. Nun verwendet das Protokoll die Sequenznummer als IV. Diese ist 32 Bit lang und (eingeschränkt) einzigartig. Leider sind durch die Überarbeitungen des Protokolls Versionen vor 1.0pre8 nicht mehr kompatibel zu den aktuellen Versionen.

Damit bestätigt sich, dass nicht standardisierte Protokolle häufig Fehler in ihrem Design aufweisen. Diese können aber im Fall von Open-Source-Produkten schnell gefunden und behoben werden. Tinc ist ein positives Beispiel für diese These.

Installation

Tinc ist erst kürzlich in der stabilen Version 1.0 erschienen (unter der GPL). Sie ist kompatibel zu Tinc 1.0pre8, aber nicht zu älteren Versionen. Zum Übersetzen sind OpenSSL (0.9.7), ein aktuelles »gettext«-Paket (0.12) sowie die Zlib- und die LZO-Bibliothek erforderlich.

./configure
make
make install

Da die Installation besonders auf Red Hat Linux 9 problematisch ist, stellt der Autor unter[2] RPM-Pakete für diese Distribution zur Verfügung.

Tinc verwendet für die Kommunikation mit dem Linux-Kernel entweder den »ethertap«-Treiber (Linux 2.2) oder den universellen TUN/TAP-Treiber (Linux-Kernel ab 2.4, Abbildung 1). Ob der aktuelle Kernel diese Treiber enthält, ist schnell geklärt: »modinfo tun« sollte den Pfad zum Modul ausgeben. Zudem läuft Tinc auf FreeBSD, OpenBSD, NetBSD, Solaris und Mac OS X sowie Windows. Letzteres bedient sich des Cipe-Treibers, der unter Windows 2000 und XP funktioniert - für ältere Windows-Versionen ist eine Cygwin-Umgebung nötig.

Abbildung 1: Im Linux-Kernel 2.4 muss unter »Network device support« der »Universal TUN/TAP device driver support« aktiviert sein. Üblicherweise ist er als Modul ausgewählt.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Bitparade

    Wer seinen Netzwerkverkehr verschlüsselt über öffentliche Leitungen senden möchte, greift meist zu IPsec, chiffriert den Traffic mit SSL über Port 443 oder nutzt Open VPN. Die Bitparade nimmt vier dazu alternative Tunnelbauer unter die Lupe, die VPN über Peer-to-Peer-Verfahren versprechen.

  • Tooltipps

    Die Programme Drukkar 1.11, Tinc 1.0.23,  Ftwin 0.8.8, Log Analyzer 3.6.5, Mail­drop 2.7.0 und Binwalk 1.2.2 im monatlichen Software-Überblick.

  • Standard-Tunnel

    IPsec ist der De-facto-Standard für den Aufbau virtueller privater Netze (VPNs). Freeswan integriert dieses Sicherheitsprotokoll in den Linux-Kernel und unterstützt dabei sogar die opportunistische Verschlüsselung. Installation und Konfiguration sind jedoch nicht trivial.

  • Sicherer Transport

    Der kommende Linux-Kernel 2.6 wird IPsec enthalten, und zwar nicht mit Freeswan-Patches, sondern mit einer neuen Implementierung. Dazu gesellen sich spezielle Userspace-Tools. Dieser Artikel zeigt, wie damit sichere IP-Transportwege entstehen.

  • Tooltipps

    Im Kurztest: Checkit 0.2.0, Ddpt 0.94, Firejail 0.9.4, Gpgpwd 0.4, Ocserv 0.3.4, Webalizer 2.23.

comments powered by Disqus

Ausgabe 08/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.