WireGuard – die bessere VPN Alternative?

WireGuard

WireGuard ist eine neue Möglichkeit, um VPN zu realisieren. WireGuard erzeugt sichere Point-to-Point-Verbindungen zwischen sogenannten Peers und bietet damit sicheren Fernzugriff auf Netzwerke.

Funktionsweise

WireGuard hat einige Unterschiede zu vergleichbaren Technologien wie OpenVPN oder IPSec. Es läuft direkt im Linux Kernel und soll bald in den offiziellen Linux Kernel aufgenommen werden. WireGuard arbeitet ausschließlich auf Schicht 3 des OSI-Modells und der Quellcode ist sehr kompakt. Er besteht aus circa 4.000 Codezeilen, wohingegen OpenVPN oder IPSec aus bis zu 600.000 Codezeilen bestehen.
WireGuard verwendet auf Sicherheit geprüfte Verschlüsselungsalgorithmen, so wird zum Beispiel für den Schlüsselaustausch Curve25519 verwendet und alle übertragenen Daten werden mit ChaCha20 verschlüsselt. Außerdem kann ein zusätzlicher symmetrischer Schlüssel (PSK) verwendet werden, der Schutz vor Post Quantum Cryptography bietet.WireGuard setzt nicht auf die klassische Client-Server Architektur, sondern erzeugt ein Peer-to-Peer Netzwerk.

Vorteile

Da WireGuard direkt im Kernel läuft, hat es einen großen Geschwindigkeitsvorteil gegenüber OpenVPN, sodass es wesentlich höhere Datenübertragungsraten erzielen kann. Aufgrund des übersichtlichen Codes kann das Programm einfacher gewartet werden und Sicherheitsreviews können schneller durchgeführt werden. Durch den Einsatz moderner Verschlüsselungsverfahren ist das VPN sehr sicher, was in Sicherheitsreviews bestätigt wurde. Die Peers brauchen keine Zertifikate, sondern nur einen öffentlichen und privaten Schlüssel. Daher entfällt eine aufwändige Einrichtung und es ist einfach zu bedienen.
Da WireGuard unter der GPLv2 Lizenz veröffentlicht wurde, ist es komplett kostenlos.

Nachteile

Der größte Nachteil von WireGuard ist, dass die Entwicklung einer stabilen Version noch nicht abgeschlossen ist. Beispielsweise gibt es für Windows bisher nur eine pre-alpha Version. Ein weiteres Problem ist das Schlüssel Management. Die öffentlichen Schlüssel müssen manuell ausgetauscht werden, was zwar einfach ist, aber für jeden neuen Peer oder jede Aktualisierung des Schlüssels muss manuell ein Eintrag geändert werden.

Die folgende Grafik zeigt einen Geschwindigkeitsvergleich zwischen WireGuard, IPSec und OpenVPN.1

Installation

Die Paketmanager vieler Linux Distributionen enthalten WireGuard bereits, außerdem ist WireGuard für FreeBSD, OpenBSD, Windows, MacOS, iOS und Android erhältlich. Die Webseite von WireGuard erklärt die Installation für viele verschiedene Betriebssysteme.

Im Folgenden wird die Konfiguration von WireGuard für ein Beispielszenario erklärt. Hier verbindet WireGuard zwei Peers (Peer 1 und Peer 2), wobei nur Peer 1 eine öffentliche IP hat.

Zuerst müssen beide Peers sich ein Schlüsselpaar in /etc/wireguard erzeugen:

sudo wg genkey > private.key
sudo wg pubkey > public.key <
private.key

Zusätzlich kann ein Peer ein PSK erzeugen:

sudo wg genpsk > psk.key

Jetzt wird die Konfigurationsdatei (in Linux /etc/wireguard/wg0.conf) erstellt. Sie besteht aus zwei Teilen: die Parameter des Interfaces und die Parameter der Peers. Die Interfacekonfiguration für Peer 1 sieht folgendermaßen aus:

[Interface]
Address
= 10.66.66.1/24,fd42:42:42::1/64
ListenPort = 1194
PrivateKey = <Peer 1 private key
>

Die Konfiguration von Peer 2 ist ähnlich, nur muss Peer 2 eine andere IP Adresse haben und der private Key muss angepasst werden:

[Interface]
Address
= 10.66.66.2/24,fd42:42:42::2/64
ListenPort = 1194
PrivateKey = <Peer 2 private key
>

Für jeden Peer, mit dem eine Verbindung bestehen soll, muss zusätzlich in der Datei /etc/wireguard/wg0.conf ein Eintrag erstellt werden. Die Konfiguration von Peer 1 enthält also zusätzlich:

[Peer]
PublicKey
= <Peer 2 publickey>
AllowedIPs = 10.66.66.2/32,fd
42:42:42::2/128

Die Konfiguration von Peer 2 enthält zusätzlich:

[Peer]
PublicKey
= <Peer 1 publickey>
AllowedIPs = 10.66.66.1/32,fd42:42:42::1/128
Endpoint = <öffentliche IP von Peer 1>:1194
PersistentKeepalive
= 10

Der Parameter PersistentKeepalive sorgt dafür, dass alle 10 Sekunden ein keepalive Packet an Peer 1 gesendet wird, um die Verbindung zu erhalten. Dies ist nur dann notwendig, wenn Peer 2 keine öffentliche IP hat.

Um das LAN der Peers mit einzubeziehen, muss die Interface Konfiguration von beiden Peers um folgende Einträge ergänzt werden:

PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o <Name des Netzwerk Interface> -j MASQUERADE

PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o <Name des Netzwerk Interface> -j MASQUERADE



WireGuard starten

WireGuard wird durch den Befehl wg-quick up/down wg0 gestartet bzw. gestoppt. Beim Start wird ein virtuelles Netzwerkinterface wg0 erstellt, das den Netzwerkverkehr sicher zu den jeweiligen Peers leitet. Beim stoppen von WireGuard wird dieses Interface automatisch wieder gelöscht. Nach dem Start kann mit sudowgshow der aktuelle Status von WireGuard angezeigt werden. Folgendes Bild zeigt eine Beispielausgabe:

Statt durch eine Konfigurationsdatei kann WireGuard auch manuell konfiguriert. Folgende Liste von Befehlen erzeugt und konfiguriert erst ein neues Interface und fügt dann einen Peer hinzu:

#Konfiguration des Interface
ip
link add wg0 type wireguard
ipaddradd <IPv4 oder IPv6 Adresse> dev wg0
wgset wg0 private-key /etc/wireguard/private.key

#Konfiguration des Peers
wgset wg0 peer <publicKey> preshared-key <PSK> allowed-ips <IP

des Peers> endpoint <Öffentliche IP oder DNS>:<port>

#Starten

ip link set wg0 up

WireGuard auf Smartphones

WireGuard lässt sich sehr einfach auf iOS und Android Geräten einrichten. Dazu gibt es in den jeweiligen App Stores entsprechende Apps. Der einfachste Weg WireGuard auf einem Smartphone einzurichten ist, indem man ein Schlüsselpaar und eine passende Konfiguration auf einem Linux Rechner erstellt. Anschließend installiert man das Tool qrencode und mit dem Befehl qrencode -t ansiutf8 < wireguard.conf wird ein QR Code erzeugt. Dieser wird mit dem Smartphone eingescannt und man kann sich jetzt mit dem Peer verbinden. In der App selbst lassen sich auch neue Schlüssel und Konfigurationen erstellen, dies ist aber nicht so komfortabel wie per QR Code.

Fazit

WireGuard ist eine sehr interessante Technologie. Wenn die Entwickler für alle Systeme stabile Versionen herausgebracht haben, wird WireGuard aufgrund der höheren Geschwindigkeit und einfachen Bedienung eine echte Alternative zu OpenVPN und IPSec.

Quellen

By accepting you will be accessing a service provided by a third-party external to https://blog.ordix.de/