WireGuard Einrichtungsanleitung
WireGuard ist ein schnelles und einfaches Virtual Private Network-Protokoll, das moderne Kryptographie nutzt. Es ist viel schneller als OpenVPN oder IPsec und hat zudem eine kleinere Codebasis, die einfacher zu überprüfen und zu warten ist. Für weitere Informationen über WireGuard verweisen Sie bitte auf unseren WireGuard-Leitfaden.
Das Arbeiten aus der Ferne ist zur gängigen Praxis geworden und wird nach der COVID-19-Pandemie von den meisten Organisationen weltweit als notwendig erachtet. Aber Remote-Arbeit birgt auch hohe Sicherheitsrisiken, insbesondere für Unternehmensnetzwerke. Um den Kollegen einen sichereren Internetzugang zu ermöglichen und die Unternehmensnetzwerke/-ressourcen sicherer zu machen, empfehlen wir die gemeinsame Nutzung des WireGuard-Protokolls und Zenarmor.
In diesem Tutorial werden wir eine einfache WireGuard-VPN-Verbindung zwischen einem Ubuntu 20.04 TLS
-Server und einem Client konfigurieren. Der Client kann entweder Ihr lokaler Computer oder ein mobiles Gerät sein. Zuerst werden wir WireGuard auf Ubuntu 20.04 TLS als VPN-Server installieren und konfigurieren. Dann werden wir WireGuard sowohl auf einem Desktop-PC als auch auf einem Android-Gerät als Client konfigurieren. Der Desktop-PC kann ein Ubuntu-Desktop oder ein Windows 7/10 ausführen. Der Datenverkehr des Clients wird über den Ubuntu 20.04-Server geleitet.
Abbildung 1. WireGuard P2P VPN Topologie (WireGuard Ubuntu Server und Ubuntu/Android/Windows Clients)
Dieses Tutorial zeigt die Konfiguration von WireGuard VPN in einer Hub-and-Spoke-Topologie. Wenn Sie ein VPN möchten, das sowohl zuverlässig ist als auch mit erhöhten Anforderungen umgehen kann, sollten Sie die Installation und Einrichtung einer WireGuard Mesh VPN Infrastruktur in Betracht ziehen.
Diese Einrichtung kann Ihnen Schutz vor Man-in-the-Middle Angriffen bieten und Anonymität beim Surfen im Internet gewährleisten. Au ßerdem können Sie diese WireGuard-Konfiguration verwenden, um sicher von überall auf der Welt auf Ihr Unternehmensnetzwerk zuzugreifen.
Haben Sie versucht, Zenarmor auf Ihrem WireGuard VPN-Server zu installieren, um Ihr Netzwerk sicherer zu machen? Durch die Konfiguration der Zenarmor Free Edition und die Anwendung von Webfilterung und Anwendungssteuerung können Sie Sicherheitsbedrohungen, die von Ihrer WireGuard-Tunnel-Schnittstelle ausgehen, blockieren.
Die WireGuard-Konfiguration ist sehr einfach. Sie können den WireGuard-VPN-Tunnel einrichten, indem Sie einfach die folgenden 5 Hauptschritte befolgen:
- Laden Sie WireGuard für sowohl Server als auch Clients herunter und installieren Sie es.
- Erzeugen Sie kryptografische Schlüsselpaar (öffentliche und private Schlüssel) für sowohl Server als auch Clients.
- Konfigurieren Sie die WireGuard-Tunnel-Schnittstellen sowohl auf dem Server als auch auf den Clients.
- Konfigurieren Sie Firewall-Regeln auf Ihrem WireGuard VPN-Server
- Aktivieren Sie die WireGuard-Tunnel-Schnittstellen sowohl auf dem Server als auch auf den Clients.
Installation von WireGuard
Um dieser WireGuard-Einrichtungsanleitung zu folgen, benötigen Sie die unten aufgeführten Geräte:
-
Ubuntu 20.04 TLS
Linux-Server, der als WireGuard VPN-Server konfiguriert wird. -
Ubuntu Desktop
oderWindows
PC oder einAndroid
-Gerät werden als WireGuard VPN-Client konfiguriert.
Privilegierter Zugriff auf Ihr Linux-System als root oder über den sudo-Befehl.
Alle unten angegebenen Befehle sind mit root
-Rechten auszuführen, entweder direkt als root
-Benutzer oder durch Verwendung des sudo
-Befehls.
WireGuard-Setup als VPN-Server auf Ubuntu
Bevor Sie mit der Installation von WireGuard beginnen, stellen Sie sicher, dass Ihr System auf dem neuesten Stand ist und die erforderlichen Pakete bereits installiert sind.
-
Aktualisieren Sie Ihren lokalen Paketindex, indem Sie den folgenden Befehl ausführen:
sudo apt update && sudo apt upgrade -y
-
Installieren Sie IPTABLES, falls Ihr System es noch nicht hat.
sudo apt install iptables -y
Installation von WireGuard auf Ubuntu
Ubuntu 20.04 wird mit dem Linux-Kernel 5.4 ausgeliefert, der ein integriertes WireGuard-Modul enthält. Daher können Sie WireGuard selbst und alle seine Abhängigkeiten ganz einfach installieren, indem Sie den folgenden Befehl ausführen:
sudo apt install wireguard wireguard-tools
Nachdem Sie WireGuard installiert haben, folgen Sie den untenstehenden Schritten, um Ihren Server weiter zu konfigurieren.
Generierung von privaten und öffentlichen Schlüsseln
Einer der Hauptvorteile von WireGuard ist, dass es auf modernsten kryptografischen Primitiven basiert. Es ermöglicht Ihnen einen sicheren VPN-Tunnel, indem es Ihre Verbindung mit einem Paar kryptografischer Schlüssel verschlüsselt. Jeder Peer muss seine eigenen privaten und öffentlichen Schlüssel haben, um eine sichere Kommunikation in beide Richtungen zu gewährleisten.Um WireGuard zu verwenden, muss jeder Server und Client sein eigenes Schlüsselpaar generieren und dann die öffentlichen Schlüssel austauschen.
Führen Sie den folgenden Befehl auf dem Ubuntu-Server aus, um ein öffentliches/privates Schlüsselpaar zu erstellen, das im Verzeichnis /etc/wireguard/
gespeichert wird.
$ wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key
[sudo] password for alp:
hRhduFU4Jl2VlTNtYN4IXgqnw5DN6c4pKxAIvpr9+Do=
Dies wird sowohl die privaten als auch die öffentlichen Schlüssel im Verzeichnis /etc/wireguard
speichern.
Der private Schlüssel sollte niemals mit jemandem geteilt werden und sollte immer sicher aufbewahrt werden.
Wireguard unterstützt auch einen vorab geteilten Schlüssel. Um das Sicherheitsniveau in Ihrem VPN-Tunnel zu erhöhen, können Sie diesen optionalen Schlüssel verwenden, der für jedes Peer-Paar einzigartig sein muss.
Sie können den Inhalt der WireGuard-Schlüsseldateien mit cat oder less anzeigen.
$ sudo cat /etc/wireguard/server_private.key
aIfECLKHoeCHsSr3qYfOgqm9BiNFEqQgYiDJQdUlJV8=
Bitte notieren Sie das Schlüsselpaar, das in den folgenden Schritten zur Aktualisierung der WireGuard-Konfigurationsdatei verwendet wird.
$ sudo cat /etc/wireguard/server_public.key
hRhduFU4Jl2VlTNtYN4IXgqnw5DN6c4pKxAIvpr9+Do=
Der nächste Schritt besteht darin, das Tunnelgerät zu konfigurieren, das den VPN-Verkehr leiten wird.
Generierung der WireGuard-Serverkonfigurationsdatei
Sie können das WireGuard-Tunnelgerät auf zwei verschiedene Arten konfigurieren:
-
Verwendung der
ip
- undwg
-Befehle in der CLI -
Erstellen der Konfigurationsdatei mit einem Texteditor
In diesem Leitfaden werden wir die letzte Methode verwenden.
Lassen Sie uns den WireGuard-Server konfigurieren, indem wir eine neue Konfigurationsdatei namens wg0.conf
im Ordner /etc/wireguard
erstellen und die unten angegebene Konfigurationszeile hinzufügen.
Öffnen Sie zunächst die Datei wg0.conf
mit dem Nano-Editor.
sudo nano /etc/wireguard/wg0.conf
Sie können die WireGuard-Schnittstelle nach Belieben benennen. Aber es wird empfohlen, etwas wie wg0
zu verwenden.
Die folgende Konfiguration wird Ihren WireGuard-Server dazu bringen, Verbindungen auf 51820
zu akzeptieren und einem Client mit dem öffentlichen Schlüssel, der dem oben erstellten privaten Schlüssel entspricht, zu erlauben.
Zweitens, fügen Sie die folgenden Direktiven zur Konfigurationsdatei hinzu.
[Interface]
PrivateKey = <contents-of-server-privatekey>
Address = 10.10.10.1/24
PostUp = iptables -A FORWARD -i ens18 -o wg0 -j ACCEPT; iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o ens18 -j MASQUERADE; ufw route allow in on wg0 out on ens18; ufw route allow in on ens18 out on wg0; ufw allow proto udp from any to any port 51820
PostDown = iptables -D FORWARD -i ens18 -o wg0 -j ACCEPT; iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o ens18 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o ens18 -j MASQUERADE; ufw route delete allow in on wg0 out on ens18; ufw route delete allow in on ens18 out on wg0; ufw delete allow proto udp from any to any port 51820
ListenPort = 51820
-
PrivateKey
: Der private Schlüssel des VPN-Servers, der in der Datei/etc/wireguard/server_private.key
auf dem Server zu finden ist. -
Address
: definiert die privaten IPv4- und IPv6-Adressen für den WireGuard-Server. Jeder Peer im VPN-Netzwerk sollte eine eindeutige IP-Adresse haben. -
ListenPort
: gibt an, welchen Port WireGuard für eingehende Verbindungen verwenden wird. kann frei aus dem Bereich der hohen Ports ausgewählt werden. Wenn kein Port angegeben ist, ist es standardmäßig 51820/UDP. -
PostUp
undPostDown
: definieren Schritte, die nach dem Einschalten oder Ausschalten der Schnittstelle ausgeführt werden sollen. In diesem Fall wird iptables verwendet, um Linux-IP-Masquerade-Regeln festzulegen, damit alle Clients die IPv4- und IPv6-Adresse des Servers teilen können. Die Regeln werden dann gelöscht, sobald der Tunnel heruntergefahren wird.
Dann Save
und Close
Sie die Datei.
Installieren Sie einen DNS-Resolver auf dem Server
Da wir den VPN-Server als DNS-Server für die Clients festlegen werden, müssen wir einen DNS-Resolver auf dem VPN-Server ausführen. Wir können den bind9
DNS-Server installieren.
sudo apt install bind9
Sobald es installiert ist, wird BIND automatisch gestartet. Sie können den Status mit folgendem Befehl überprüfen:
systemctl status bind9
Beispielausgabe:
? named.service - BIND Domain Name Server
Loaded: loaded (/lib/systemd/system/named.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2021-06-28 07:14:24 UTC; 16s ago
Docs: man:named(8)
Main PID: 1568 (named)
Tasks: 5 (limit: 10387)
Memory: 15.1M
CGroup: /system.slice/named.service
??1568 /usr/sbin/named -f -u bind
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './DNSKEY/IN': 2001:500:2::c#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './NS/IN': 2001:500:2::c#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './DNSKEY/IN': 2001:500:1::53#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './NS/IN': 2001:500:1::53#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './DNSKEY/IN': 2001:500:200::b#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './NS/IN': 2001:500:200::b#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './DNSKEY/IN': 2001:500:12::d0d#53
Jun 28 07:14:25 myfirsfw named[1568]: network unreachable resolving './DNSKEY/IN': 2001:7fd::1#53
Jun 28 07:14:25 myfirsfw named[1568]: managed-keys-zone: Initializing automatic trust anchor management for zone '.'; DNSKEY ID 20326 is>
Jun 28 07:14:25 myfirsfw named[1568]: resolver priming query complete
Wenn es nicht läuft, können Sie es mit den folgenden Befehlen starten:
sudo systemctl start bind9
Bearbeiten Sie die Konfigurationsdatei des BIND DNS-Servers.
sudo nano /etc/bind/named.conf.options
Fügen Sie die folgende Zeile hinzu, um VPN-Clients das Senden von rekursiven DNS-Abfragen zu ermöglichen.
allow-recursion { 127.0.0.1; 10.10.10.0/24; };
Abbildung 2. Erlauben von VPN-Clients, rekursive DNS-Abfragen zu senden
Save
und Close
Sie die Datei.
Starten Sie BIND9 neu, damit die Änderungen wirksam werden.
sudo systemctl restart bind9
So richten Sie WireGuard-Firewall-Regeln auf einem Ubuntu-Server ein
Sie sollten auch eine Firewall konfigurieren, um WireGuard-Clients den Zugriff auf Ihren WireGuard-Server und andere gewünschte Dienste wie DNS und SSH zu ermöglichen. Die Konfiguration einer Firewall wird unerwünschte Verbindungen blockieren und Ihren Server sichern. Sie können die folgenden Schritte befolgen:
-
Installieren Sie die ufw, die Uncomplicated Firewall, mit dem folgenden Befehl.
sudo apt install ufw
-
Fügen Sie die folgenden Regeln hinzu, um WireGuard-Verbindungen zu ermöglichen.
sudo ufw allow 51820/udp
-
Fügen Sie die folgenden Regeln hinzu, um VPN-Clients den Zugriff auf den DNS-Dienst zu ermöglichen.
sudo ufw allow 53/tcp
sudo ufw allow 53/udp -
Fügen Sie die folgenden Regeln hinzu, um SSH-Verbindungen zuzulassen. (Dieser Schritt ist optional.) Sie können auch andere Verbindungen zulassen, die Sie benötigen, wie z.B. https/443.
sudo ufw allow 22
-
Aktivieren Sie die Firewall mit dem nächsten Befehl.
sudo ufw enable
-
Bestätigen Sie den Befehl, wenn Sie dazu aufgefordert werden.
Command may disrupt existing ssh connections. Proceed with operation (y|n)? Y
Die Firewall ist aktiv und beim Systemstart aktiviert.
-
Danach verwenden Sie den folgenden Befehl, um die aktiven Firewall-Regeln zu überprüfen.
sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
51820/udp ALLOW IN Anywhere
53/tcp ALLOW IN Anywhere
53/udp ALLOW IN Anywhere
22/tcp ALLOW IN Anywhere
51820/udp (v6) ALLOW IN Anywhere (v6)
53/tcp (v6) ALLOW IN Anywhere (v6)
53/udp (v6) ALLOW IN Anywhere (v6)
22/tcp (v6) ALLOW IN Anywhere (v6)
Herzlichen Glückwunsch. Der Ubuntu-Peer, der als Server fungieren wird, wurde konfiguriert.