WireGuard – die großartige VPN-Lösung der Zukunft?

WireGuard – die großartige VPN-Lösung der Zukunft?

Es ist an der Zeit, dass VPN nicht mehr als exotisches Werkzeug für bärtige Systemadministratoren angesehen wird. Die Anforderungen der Nutzer sind unterschiedlich, doch eines steht fest: VPN wird für alle benötigt.

Das Problem der aktuellen VPN-Lösungen liegt darin, dass sie schwer richtig einzurichten, teuer im Betrieb sind und zudem viel veralteten, fragwürdigen Code enthalten.

Vor einigen Jahren entschied der kanadische Sicherheitsexperte Jason A. Donenfeld, dass es genug ist, und begann mit der Arbeit an WireGuard. Jetzt wird WireGuard in den Linux-Kernel integriert und hat sogar Lob von Linus Torvalds auch in im amerikanischen Senat.

Die angegebenen Vorteile von WireGuard gegenüber anderen VPN-Lösungen:

  • Einfach zu bedienen.
  • Verwendet moderne Krypto-Technologien: Noise-Protokoll-Framework, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF usw.
  • Kompakter, lesbarer Code, einfacher auf Schwachstellen zu untersuchen.
  • Hohe Performance.
  • Eine klare und durchdachte Spezifikation.

Wurde die eierlegende Wollmilchsau gefunden? Ist es an der Zeit, OpenVPN und IPSec zu beerdigen? Ich wollte dem auf den Grund gehen und habe nebenbei ein Skript zur automatischen Installation eines persönlichen VPN-Servers erstellt..

Funktionsweise

Die Funktionsweise lässt sich etwa so beschreiben:

  • Ein WireGuard-Interface wird erstellt, ihm wird ein privater Schlüssel und eine IP-Adresse zugewiesen. Die Einstellungen anderer Peers werden geladen: ihre öffentlichen Schlüssel, IP-Adressen usw.
  • Alle IP-Pakete, die an das WireGuard-Interface ankommen, werden in UDP gekapselt und sicher geliefert an andere Peers.
  • Die Kunden geben die öffentliche IP-Adresse des Servers in den Einstellungen an. Der Server ermittelt automatisch die externen Adressen der Kunden, wenn er korrekt authentifizierte Daten erhält.
  • Der Server kann die öffentliche IP-Adresse ändern, ohne den Betrieb zu unterbrechen. Dabei sendet er eine Benachrichtigung an die verbundenen Kunden, die ihre Konfiguration sofort aktualisieren.
  • Das Konzept der Routing-Kontrolle wird verwendet. Cryptokey-Routing. WireGuard empfängt und sendet Pakete auf Grundlage des öffentlichen Schlüssels des Peers. Wenn der Server ein korrekt authentifiziertes Paket entschlüsselt, wird das src-Feld überprüft. Entspricht es der Konfiguration allowed-ips des authentifizierten Peers, so wird das Paket vom WireGuard-Interface akzeptiert. Beim Senden eines Ausgangspakets erfolgt das entsprechende Verfahren: das dst-Feld des Pakets wird genommen, und auf dieser Grundlage wird der passende Peer ausgewählt, das Paket wird mit dem eigenen Schlüssel signiert, mit dem Schlüssel des Peers verschlüsselt und an den Remote-Endpunkt gesendet.

Die gesamte Logik von WireGuard umfasst weniger als 4.000 Codezeilen, während OpenVPN und IPSec Hunderttausende von Zeilen haben. Um moderne Kryptografie-Algorithmen zu unterstützen, wird vorgeschlagen, eine neue kryptografische API in den Linux-Kernel aufzunehmen. ZincDerzeit wird diskutiert, wie erfolgreich diese Idee ist.

Leistung

Der maximale Leistungsunterschied (im Vergleich zu OpenVPN und IPSec) wird auf Linux-Systemen spürbar sein, da WireGuard dort als Kernelmodul implementiert ist. Auch macOS, Android, iOS, FreeBSD und OpenBSD werden unterstützt, jedoch läuft WireGuard dort im Userspace, was sich negativ auf die Leistung auswirkt. Die Unterstützung für Windows wird in naher Zukunft versprochen.

Benchmark-Ergebnisse von der offiziellen Webseite:

WireGuard – die großartige VPN-Lösung der Zukunft?

Meine Erfahrungen mit

Ich bin kein VPN-Setup-Experte. Ich habe einmal OpenVPN manuell eingerichtet und das war sehr mühsam, während ich es bei IPSec gar nicht erst versucht habe. Es müssen zu viele Entscheidungen getroffen werden, und es ist sehr einfach, sich selbst in die Quere zu kommen. Daher habe ich immer auf fertige Skripte zur Servereinrichtung zurückgegriffen.

WireGuard ist aus meiner Sicht der perfekte Nutzer-VPN. Alle low-Level-Lösungen sind in der Spezifikation enthalten, daher dauert die Einrichtung einer typischen VPN-Infrastruktur nur wenige Minuten. Eine fehlerhafte Konfiguration ist praktisch ausgeschlossen.

Installationsprozess wird detailliert beschrieben auf der offiziellen Website, besonders hervorzuheben ist die hervorragende Unterstützung von OpenWRT.

Die Verschlüsselungsschlüssel werden mit dem Tool generiert wg:

SERVER_PRIVKEY=$( wg genkey )
SERVER_PUBKEY=$( echo $SERVER_PRIVKEY | wg pubkey )
CLIENT_PRIVKEY=$( wg genkey )
CLIENT_PUBKEY=$( echo $CLIENT_PRIVKEY | wg pubkey )

Als nächstes muss die Serverkonfiguration erstellt werden /etc/wireguard/wg0.conf mit folgendem Inhalt:

[Interface]
Address = 10.9.0.1/24
PrivateKey = $SERVER_PRIVKEY
[Peer]
PublicKey = $CLIENT_PUBKEY
AllowedIPs = 10.9.0.2/32

und der Tunnel mit folgendem Skript hochgefahren werden wg-quick:

sudo wg-quick up /etc/wireguard/wg0.conf

In systemd-basierten Systemen kann stattdessen verwendet werden sudo systemctl start wg-quick@wg0.service.

Auf der Client-Maschine die Konfiguration erstellen /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = $CLIENT_PRIVKEY
Address = 10.9.0.2/24
[Peer]
PublicKey = $SERVER_PUBKEY
AllowedIPs = 0.0.0.0/0
Endpoint = 1.2.3.4:51820 # Externe IP des Servers
PersistentKeepalive = 25 

Und ebenso den Tunnel hochfahren:

sudo wg-quick up /etc/wireguard/wg0.conf

Jetzt muss noch NAT auf dem Server konfiguriert werden, damit die Clients ins Internet gelangen können, und alles ist bereit!

Die Benutzerfreundlichkeit und die kompakte Code-Basis wurden erreicht, indem auf die Funktionalität der Schlüsselverteilung verzichtet wurde. Es gibt hier kein komplexes Zertifikatsystem und all den unternehmerischen Aufwand; kurze Verschlüsselungsschlüssel werden ungefähr wie SSH-Schlüssel verteilt. Damit ergibt sich jedoch ein Problem: WireGuard wird sich nicht so einfach in einigen bestehenden Netzwerken implementieren lassen.

Zu den Nachteilen gehört, dass WireGuard nicht über HTTP-Proxy funktioniert, da nur das UDP-Protokoll als Transport verfügbar ist. Die Frage stellt sich, ob es möglich sein wird, das Protokoll zu obfuszkieren. Natürlich ist dies nicht die primäre Aufgabe eines VPN, aber bei OpenVPN gibt es beispielsweise Möglichkeiten, sich als HTTPS zu tarnen, was den Menschen in totalitären Staaten hilft, das Internet vollumfänglich zu nutzen.

Fazit

Zusammenfassend lässt sich sagen, dass dies ein sehr interessantes und vielversprechendes Projekt ist, das bereits jetzt auf privaten Servern eingesetzt werden kann. Welcher Vorteil? Hohe Leistung auf Linux-Systemen, einfache Einrichtung und Wartung, sowie ein kompakter und lesbarer Code. Es ist jedoch noch zu früh, um eine komplexe Infrastruktur auf WireGuard umzuschwenken; es lohnt sich, auf die Aufnahme in den Linux-Kernel zu warten.

Um meine (und Ihre) Zeit zu sparen, habe ich einen automatischen WireGuard-Installerentwickelt. Damit können Sie einen persönlichen VPN für sich und Ihre Bekannten aufbauen, ohne viel darüber zu wissen.

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster