Durchs Nadelöhr - VPN-Tunnel mit WireGuard und BoringTun

Lesezeit
3 Minuten
Bis jetzt gelesen

Durchs Nadelöhr - VPN-Tunnel mit WireGuard und BoringTun

31.01.2023 - 16:23
Veröffentlicht in:

Mit WireGuard strebt ein neues Protokoll an die Spitze, das mit wenig Code und einer leichten Konfigu­ration eine gute Alternative für Unternehmen bietet. Der Security-Tipp in diesem Monat stellt Ihnen die Software als Protokoll und BoringTun als Userspace-Implementierung vor.

von Matthias Wübbeling

WireGuard ist ein Protokoll für VPN-Verbindungen. Der Erfinder Jason Donenfeld, Gründer des Unternehmens Edge Security, ist kein Neuling im Bereich IT-Sicherheit. Er hat WireGuard entwickelt und die Referenzimplementierung in der Programmiersprache Go erstellt. Die existierenden Lösungen wie OpenVPN oder IPSec seien laut Donenfeld zu kompliziert zu konfigurieren und nicht auf modernen kryptografischen Verfahren basierend.

Die große Anzahl an Optionen bei OpenVPN oder IPSec verursache eine sehr große Codebasis, wobei die Referenzimplementierung von WireGuard mit nur 4.000 Zeilen Code innerhalb weniger Stunden durch eine einzelne Person zu begutachten sei. Dies hat auch Linus Torvalds zu einem sehr positiven Feedback verleitet und so fand der WireGuard-Code seine große Zustimmung auf dem Weg in den Linux-Kernel, auch wenn es noch deutlich über ein Jahr dauerte, bis die Kernelspace-Implementierung gemerged wurde.

Im Gegensatz zum Kernelmodul ist die Go-Implementierung performancetechnisch deutlich schlechter. Für Distributionen mit einem älteren Kernel und um WireGuard auch auf Windows-Systemen benutzen zu können, haben die Entwicklungsteams daher weitere Userspace-Implementierungen implementiert.

WireGuard ist Bestandteil des Linux-Kernels und eignet sich im Grunde für den direkten Einsatz mit dem Userspace-Programm wg, das zusammen mit dem VPN auf dem System installiert wird. Falls dieses noch nicht im Kernel enthalten ist oder wenn die Nutzung des Codes im Kernel nicht möglich ist, können Sie mit einem weiteren Userspace-Programm, das sich um die Netzwerkschicht kümmert, Abhilfe schaffen. So lässt sich auch der Standard-Kernel von den Distributoren verwenden, die WireGuard noch nicht unterstützen.

BoringTun als Userspace-Implementierung

Das Unternehmen Cloudflare entwickelt zu diesem Zweck eine Userspace-Implementierung namens BoringTun in der Programmiersprache Rust. Diese gilt als sichere Programmiersprache, vor allem wenn es um Speicherzugriffsfehler oder Pufferüberläufe in nebenläufigen Prozessen geht. Damit eignet sie sich natürlich für die Entwicklung einer VPN-Lösung. Um BoringTun zu installieren, wird der Rust-Paketmanager cargo verwendet. Installieren Sie diesen zunächst über den Paketmanager Ihres Linux-Systems. Anschließend installieren Sie BoringTun mit folgendem Kommando:

cargo install boringtun

Wenn die Installation mit diesem Kommando fehlschlägt, müssen Sie BoringTun zuvor selbst kompilieren. Haben Sie Rust und git bereits installiert, gelingt Ihnen das mit den folgenden Kommandos:

git clone https://github.com/cloudflare/boringtun.git

cd boringtun

cargo build –bin boringtun && cargo install –bin boringtun --

Das Programm liegt anschließend im Benutzerverzeichnis unter "/.cargo/bin/ boringtun". Wenn Sie diesen Ordner der "path"-Variable hinzufügen, können Sie BoringTun direkt ohne Pfadangabe ausführen. Da BoringTun ein weiteres Netzwerkgerät hinzufügt, müssen Sie es mit dem Benutzer root starten. Suchen Sie sich einen Namen für das Netzwerkgerät aus, etwa "wg0", und übergeben Sie diesen als Parameter. Einfacher ist die Benutzung jedoch mit dem Werkzeug wg-quick, dieses ruft für Sie BoringTun auf und konfiguriert das zu erstellende Netzwerkgerät. Bevor Sie damit aber nun einen Tunnel aufbauen können, müssen Sie eine Konfiguration für die beiden Endpunkte erstellen.

 Bild 1: Mit ifconfig prüfen Sie, ob das Netzwerkgerät korrekt angelegt wurde.
Bild 1: Mit ifconfig prüfen Sie, ob das Netzwerkgerät korrekt angelegt wurde.

 

WireGuard konfigurieren

Das Wichtigste für den sicheren Tunnelbau sind die Zertifikate der Teilnehmer. Auf jedem Endpunkt erstellen Sie mit folgendem Kommando einen privaten und einen öffentlichen Schlüssel. Den öffentlichen Schlüssel müssen Sie später in der Konfiguration angeben. Die Schlüsselerzeugung nimmt Ihnen wg ab, wenn Sie folgendes Kommando ausführen:

wg genkey > key.priv

wg pubkey < key.priv > key.pub

Die Inhalte der Dateien müssen Sie dann in der jeweiligen Konfiguration angeben. Nutzen Sie wg-quick, bietet sich eine Konfigurationsdatei mit den entsprechenden Einstellungen an. Haben Sie dem Netzwerkgerät von BoringTun den Namen "wg0" gegeben, erstellen Sie die Datei "/etc/wireguard/wg0.conf" mit dem Inhalt aus dem Listingkasten.

Listing: WireGuard-Konfiguration

  [Interface]

       Address = 10.10.0.1/24

       PrivateKey = <Privater Schlüssel>

       ListenPort = 48443

       [Peer]

       PublicKey = <Öffentlicher Schlüssel des Partners>

       AllowedIPs = 10.10.0.2/32

       Endpoint = <IP des Partners>:48443

       PersistentKeepalive = 25

Nun können Sie WireGuard starten. Um BoringTun als Userspace-Implementierung zu verwenden, übergeben Sie den Pfad zu dem Programm als Umgebungsvariable für das folgende Kommando:

WG_QUICK_USERSPACE_IMPLEMENTATION=~/.cargo/bin/boringtun WG_SUDO=1 wg-quick up wg0

Mit der zusätzlichen Umgebungsvariable "WG_SUDO=1" teilen Sie wg-quick mit, dass die Veränderungen an den Netzwerkeinstellungen mittels sudo-Kommando erfolgen sollen. Mit einem Ping prüfen Sie die Verbindung zwischen den beiden Endpunkten und können nun etwa über SSH oder auch unverschlüsselte Verbindungen abgesichert kommunizieren. Um weitere Peers aufzunehmen, fügen Sie noch eine Peer-Sektion in der Konfiguration hinzu.

Um nicht nur Clients, sondern ganze Netzwerke miteinander zu verbinden, können Sie die Konfiguration auf Ihrem ausgewählten Serversystem noch weiter anpassen. Über die Konfigurationsoptionen geben Sie "PostUp"- und "PostDown"- Kommandos an, die nach dem Auf- beziehungsweise Abbau einer Clientverbindung ausgeführt werden. So können Sie mit "IPTables" eine entsprechende Paketweiterleitung oder auch ein NAT konfigurieren, um den Netzwerkzugriff zu gewährleisten.

Bild 2: Haben Sie den Tunnel auf beiden Geräten gestartet, können Sie den Status des Tunnels abfragen.
Bild 2: Haben Sie den Tunnel auf beiden Geräten gestartet, können Sie den Status des Tunnels abfragen.

Fazit

WireGuard ermöglicht mit nur wenigen Schritten eine sichere Verbindung zwischen zwei oder mehr Endgeräten. Mit ein wenig mehr Konfigurationsaufwand haben Sie schnell eine Client-Server-Architektur aufgesetzt oder zwei Unternehmensnetzwerke miteinander verbunden.

Ob Sie BoringTun als Userspace-Implementierung verwenden sollten, ist von unterschiedlichen Faktoren abhängig.

Der generelle Einsatz von WireGuard sollte trotz der Einfachheit gut überlegt sein. Allein die geringe Code-Basis oder die vermeintlich einfache Konfiguration kann dabei nicht ausschlaggebend sein. Insbesondere im Unternehmensumfeld sind die Anpassung des VPN-Tunnels und die Unterstützung unterschiedlicher Verfahren häufiger notwendig als im privaten Bereich.

Eine Auditierung etwa von OpenVPN hat zuletzt im Jahr 2017 stattgefunden. Oft ist das für den Unternehmenseinsatz ein wichtiger Faktor. Zumindest aktuell spielen auch die verfügbaren Tools zur automatisierten Konfiguration von OpenVPN oder IPSec eine entscheidende Rolle beim Kampf um den Platz an der Spitze der VPN-Lösungen. Ob WireGuard sich am Ende auch in Unternehmen durchsetzt, ist somit vor allem von den zukünftig entwickelten Administrations- und Automatisierungswerkzeugen abhängig.

Der Beitrag stammt aus der Ausgabe Oktober 2019 des IT-Administrator von Seite 60 bis 61.

(jm)

Ähnliche Beiträge

SMB 1.0 abschalten - Weg mit alten Zöpfen

Das sprichwörtliche Abschneiden alter Zöpfe wird in der IT-Welt regelmäßig vermieden. Oft aus gutem Grund halten Firmen an Altem und Bewährtem fest – Rückwärtskompatibilität ist immer ein schlagkräftiges Argument. Doch ist in der IT-Sicherheit besonders darauf zu achten, alte Zöpfe rechtzeitig loszuwerden. Dieser Security-Tipp macht Sie zum Protokoll-Coiffeur für Ihre Windows-Systeme und zeigt, wie Sie sich zum Wohle der Sicherheit vom über 30 Jahre alten SMBv1-Protokoll trennen.

Sicherheit in Microsoft Azure (3)

Hybride Szenarien lassen sich je nach eingesetzter Technologie in der Cloud relativ schnell aufbauen. Dies ist etwa für Testszenarien interessant. Planen Sie aber, Teile Ihrer lokalen Infrastruktur dauerhaft auszulagern, sollten Sie die Sicherheit nicht aus den Augen verlieren. In der Cloud warten hier ganz neue Security-Aspekte – und das gleich auf verschiedenen Ebenen. Im letzten Teil des Workshops geht es unter anderem darum, wie Sie mit Microsoft Defender for Cloud für Sicherheit sorgen und warum Sie den Zugriff auf virtuelle Server einschränken sollten.

Sicherheit in Microsoft Azure (2)

Hybride Szenarien lassen sich je nach eingesetzter Technologie in der Cloud relativ schnell aufbauen. Dies ist etwa für Testszenarien interessant. Planen Sie aber, Teile Ihrer lokalen Infrastruktur dauerhaft auszulagern, sollten Sie die Sicherheit nicht aus den Augen verlieren. In der Cloud warten hier ganz neue Security-Aspekte – und das gleich auf verschiedenen Ebenen. Im zweiten Workshop-Teil schildern wir, wie Sie auf der Kommandozeile für den Security-Feinschliff sorgen und wie Sie den Azure-Login absichern.