WireGuard: VPN-Lösung für sicheren Fernzugriff

  1. Einleitung
  2. Bereitstellung der Docker Compose-Datei
  3. Bereitstellen von WireGuard mit Portainer
  4. Optional: Deployment von Watchtower für automatische Container-Aktualisierungen
  5. Portfreigabe in der Fritzbox für WireGuard
  6. Zugriff auf WireGuard-Web-UI
  7. Konfiguration von WireGuard-Clients
  8. Einrichtung von WireGuard auf dem Client
  9. Sicherheitskonfiguration: Implementierung der UFW-Firewall für WireGuard
  10. Sicherheits- und Datenschutzvorteile eines eigenen WireGuard-VPN-Servers auf einem Raspberry Pi
  11. Abschluss

Einleitung

In diesem Tutorial lernen Sie, wie Sie WireGuard, eine moderne und effiziente VPN-Lösung, auf einem Ubuntu-Server mit Docker und Portainer einrichten. WireGuard ermöglicht einen sicheren Fernzugriff auf Ihr Heimnetzwerk oder Ihren Server. Für dieses Tutorial setzen wir voraus, dass Sie die vorherigen Schritte in unserem Leitfaden erfolgreich abgeschlossen haben, insbesondere die Einrichtung von Docker und Portainer.

Bereitstellung der Docker Compose-Datei

Kopieren Sie die unten angegebene Docker Compose-Datei:

version: '3'

services:
wg-easy:
image: ghcr.io/wg-easy/wg-easy:latest
container_name: wg-easy
ports:
- "51820:51820/udp"
- "51821:51821/tcp"
volumes:
- ~/.wg-easy:/etc/wireguard
environment:
- WG_HOST=IHRE-SUBDOMAIN.selfhost.co
- PASSWORD=EIN-SICHERES-PASSWORT
cap_add:
- NET_ADMIN
- SYS_MODULE
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
- net.ipv4.ip_forward=1
restart: unless-stopped

WICHTIG

Passen Sie die folgenden environment Variablen in der Docker Compose Datei an:

  • - WG_HOST=IHRE-SUBDOMAIN.selfhost.co
  • - PASSWORD=EIN-SICHERES-PASSWORT

Bereitstellen von WireGuard mit Portainer

  • Navigieren Sie zu Ihrem Portainer-Dashboard. –> Ihre-lokale-IP-des-Raspberry-Pi’s:9000
  • Klicken Sie in der Mitte auf „local“.
Portainer – Startbildschirm
  • Gehen Sie in der linken Navigationsleiste auf „Stacks“ und klicken Sie oben rechts auf „+ Add stack“.
Zweiter Schritt: Auswahl von Stacks
  • Geben Sie dem Stack einen Namen, z.B. wireguard.
  • Kopieren Sie die kopierte Docker Compose Datei in das Feld „Web editor“.
Einfügen des bereitgestellten Docker Compose Stacks in Portainer Web Editor
  • Klicken Sie auf „Deploy the Stack“.
Stack Deployment

Optional: Deployment von Watchtower für automatische Container-Aktualisierungen

Es ist empfehlenswert, zusätzlich den Dienst Watchtower zu deployen, um sicherzustellen, dass Ihre Docker-Container automatisch auf die neuesten verfügbaren Images aktualisiert werden. Dies hilft, die Sicherheit und Funktionalität Ihrer Dienste auf dem neuesten Stand zu halten. Allerdings ist dieser Schritt optional.

Sie können Watchtower durch die bereitgestellte Docker Compose Datei einfach deployen. Hier ist die entsprechende Docker Compose Datei:

version: '3'

services:
  watchtower:
    image: containrrr/watchtower
    restart: always 
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /etc/localtime:/etc/localtime:ro
    environment:
      WATCHTOWER_MONITOR_ONLY: 'false'
      WATCHTOWER_CLEANUP: "true"

Kopieren Sie den obigen Inhalt und fügen Sie ihn als neuen Stack in Portainer ein und klicken Sie auf „Deploy the stack“.

Mit dieser Konfiguration wird Watchtower so eingestellt, dass es nicht nur nach neuen Images sucht, sondern auch die alten Images nach dem Update löscht, um Speicherplatz zu sparen (WATCHTOWER_CLEANUP: "true").

Hinweis: Die Option WATCHTOWER_MONITOR_ONLY: 'false' ermöglicht es Watchtower, tatsächliche Updates durchzuführen. Wenn Sie nur über verfügbare Updates benachrichtigt werden möchten, ohne sie automatisch anzuwenden, ändern Sie den Wert auf 'true'.

Anschließend können Sie mit einem Klick auf Containers in der linken Navigationsleiste überprüfen, ob die benötigten Container wg-easy und caddy und sofern umgesetzt watchtower laufen.

Überprüfung ob alle Container laufen – Check State

Portfreigabe in der Fritzbox für WireGuard

  1. Login in die Fritzbox: Öffnen Sie einen Webbrowser und geben Sie fritz.box oder 192.168.178.1 in die Adresszeile ein. Melden Sie sich mit Ihrem Passwort an.
  2. Navigieren zur Portfreigabe: Klicken Sie im Menü auf Internet und dann auf Freigaben.
  3. Neue Freigabe erstellen: Wählen Sie den Tab Portfreigaben und klicken Sie auf die Schaltfläche Neue Portfreigabe.
  4. Gerät für die Freigabe auswählen: Im Dropdown-Menü „Gerät für die Freigabe auswählen“ suchen und wählen Sie das Gerät aus, auf dem WireGuard läuft (z. B. Ihr Raspberry Pi oder Server).
  5. Portfreigabe Einstellungen:
    • Anwendung: Wählen Sie „Andere Anwendung“ aus dem Dropdown-Menü.
    • Bezeichnung: Geben Sie einen Namen ein, z.B. „WireGuard“.
    • Protokoll: Wählen Sie „UDP“.
    • Von Port: 51820
    • Bis Port: 51820
  6. Freigabe bestätigen: Klicken Sie auf die Schaltfläche OK oder Freigabe hinzufügen, um die Einstellungen zu speichern.
  7. Prüfen: Sie sollten jetzt in der Liste der Portfreigaben den Eintrag für WireGuard mit dem Port 51820 sehen. Das bedeutet, dass die Portfreigabe korrekt eingerichtet wurde.

Das war’s! Nun sollte der Port 51820 UDP für WireGuard in Ihrer Fritzbox korrekt weitergeleitet werden, sodass Sie von externen Netzwerken aus auf Ihren WireGuard-Server zugreifen können.

Die genauen Schritte zur Einrichtung mit Screenshots finden Sie auch nochmal im nachfolgenden Tutorial: „6. Optional: DynDNS mit Fritzbox: Einrichtung des kostenlosen DynDNS-Dienstes über die Fritzbox mit Selfhost“

Zugriff auf WireGuard-Web-UI

  1. Nachdem der Stack erfolgreich bereitgestellt wurde, können Sie auf die WireGuard-Web-UI zugreifen, indem Sie http://<Ihre-lokale-Server-Adresse-des Raspberry-Pi>:51821 in Ihren Webbrowser eingeben.
  2. Verwenden Sie das Passwort, das Sie in der Docker-Compose Datei festgelegt haben, um sich anzumelden.
  3. Folgen Sie den Anweisungen auf dem Bildschirm, um Ihre VPN-Verbindungen zu konfigurieren und zu verwalten.
Erster Aufruf der WireGuard UI für die Client-Konfiguration

Anschließend gelanden Sie zur Startseite von wg-easy:

Loginscreen – WireGuard easy

Konfiguration von WireGuard-Clients

Nachdem Sie sich in das wg-easy Dashboard eingeloggt haben, finden Sie in der Mitte sowie für das Hinzufügen weiterer Clients oben rechts die Schaltfläche „+ New“. Klicken Sie darauf, um einen neuen Client zu erstellen. Vergeben Sie einen Namen für den Client und klicken Sie anschließend auf „Create“.

Benennung des Testclients

Sie werden nun zurück zum Dashboard geführt, wo Ihr neuer Client in der Liste erscheint. Rechts neben dem Ein-/Ausschalter für den Client finden Sie ein QR-Code-Symbol. Klicken Sie darauf, um den QR-Code anzuzeigen.

Zu scannender QR-Code für die Client-Konfiguration

Einrichtung von WireGuard auf dem Client

  1. Für iOS und Android: Laden Sie die WireGuard App aus dem App Store bzw. dem Google Play Store herunter. Die App wird vom WireGuard Development Team bereitgestellt. Für andere Betriebssysteme wie Windows, macOS oder Linux finden Sie die entsprechenden Downloads auf der offiziellen WireGuard-Website.
  2. Der zu scannende QR-Code wird nun auf Ihrem Bildschirm angezeigt. Nehmen Sie Ihr Smartphone zur Hand, öffnen Sie die WireGuard App und tippen Sie auf das Plus-Symbol, um einen neuen Tunnel hinzuzufügen. Wählen Sie die Option „Aus QR-Code erstellen“ und scannen Sie den auf Ihrem Bildschirm angezeigten QR-Code. Bennen Sie den gescannten Tunnel und speichern Sie die importierte Konfiguration. Um die Verbindung herzustellen, tippen Sie auf den Schalter neben dem Namen des Tunnels in der WireGuard App, um WireGuard zu aktivieren. Ihr Smartphone ist nun über WireGuard mit Ihrem Netzwerk verbunden.

WireGuard Client – Benennung des gescannten Tunnels sowie rechts den hinzugefügten inaktivierten Tunnel

Sicherheitskonfiguration: Implementierung der UFW-Firewall für WireGuard

Die „Uncomplicated Firewall“ (kurz: UFW) stellt eine benutzerfreundliche Schnittstelle zu iptables dar und erleichtert so das Firewall-Management auf Linux-Systemen erheblich. Für den Betrieb von WireGuard und zur Fernwartung des Systems über SSH müssen spezifische Ports in der Firewall freigegeben werden. In diesem Abschnitt lernen Sie, wie Sie diese Ports sicher mit UFW konfigurieren.

Installation von UFW: Falls UFW noch nicht auf Ihrem System installiert ist, können Sie dies mit dem folgenden Befehl tun:

sudo apt-get install ufw

Ports für Web-Zugriff und SSH freigeben:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 22/tcp

Freigabe des WireGuard Ports:

sudo ufw allow 51820/udp

UFW aktivieren:

sudo ufw enable

Überprüfung der Regeln: Um sicherzustellen, dass die Regeln korrekt eingestellt wurden, können Sie diese mit dem folgenden Befehl überprüfen:

sudo ufw status
Schritte zur Einrichtung der UFW Firewall für WireGuard

Sicherheits- und Datenschutzvorteile eines eigenen WireGuard-VPN-Servers auf einem Raspberry Pi

Wenn Sie WireGuard auf einem Raspberry Pi zu Hause eingerichtet haben, um Ihren eigenen VPN-Server zu betreiben, ergeben sich daraus einige spezifische Vorteile:

  1. Kontrolle über Ihre Daten: Indem Sie Ihren eigenen VPN-Server betreiben, vermeiden Sie, dass Ihre Daten durch die Server eines Drittanbieters fließen. Das bedeutet, Sie müssen sich keine Sorgen darüber machen, was der VPN-Dienstanbieter mit Ihren Daten macht.
  2. Verschlüsselung im öffentlichen WLAN: Selbst wenn Sie unterwegs sind und eine Verbindung zu einem unsicheren öffentlichen WLAN herstellen, können Sie über Ihren Raspberry Pi VPN sicher und verschlüsselt auf das Internet zugreifen.
  3. Zugriff auf das heimische Netzwerk: Sie können von überall auf der Welt aus sicher auf Ressourcen in Ihrem Heimnetzwerk zugreifen, als wären Sie zu Hause.
  4. Keine Bandbreiten- oder Datenlimits: Viele kommerzielle VPN-Dienste haben Bandbreiten- oder Datenlimits. Mit Ihrem eigenen VPN-Server müssen Sie sich darüber keine Gedanken machen.
  5. Konstante IP-Adresse: Ihr Heim-VPN wird immer dieselbe IP-Adresse haben, was in einigen Fällen nützlich sein kann, z. B. für Whitelisting oder spezifische Dienste, die eine konstante IP-Adresse erfordern.
  6. Keine Protokollierung: Viele kommerzielle VPN-Anbieter behaupten, keine Protokolle zu führen, aber Sie müssen ihrem Wort vertrauen. Bei Ihrem eigenen VPN können Sie sicher sein, dass keine unerwünschten Protokolle erstellt werden, solange Sie die Protokollierung nicht selbst aktivieren.
  7. Aktuelle Sicherheitsupdates: Sie haben die Kontrolle darüber, wann und wie Sie Sicherheitsupdates für Ihren WireGuard-Server auf dem Raspberry Pi anwenden. Dies stellt sicher, dass Sie immer die neuesten Sicherheitspatches haben.

Abschluss

Sie haben nun erfolgreich WireGuard auf Ihrem Ubuntu-Server mit Docker und Portainer eingerichtet und konfiguriert. Sie können jetzt einen sicheren Fernzugriff auf Ihr Netzwerk genießen und bei Bedarf weitere Clients hinzufügen oder Ihre VPN-Konfiguration ändern. Bei Fragen oder Problemen können Sie auf die Dokumentation von WireGuard zurückgreifen oder sich in unserem Forum an die Community wenden.

Hinterlasse einen Kommentar

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..

Hinterlasse einen Kommentar

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahre, wie deine Kommentardaten verarbeitet werden..