ADMIN

2024

07

2024-06-27T12:00:00

Industrievernetzung

PRAXIS

052

Security-Tipp

Sicherheit

WireGuard

Konfiguration für WireGuard

Schalthebel für das VPN

von Dr. Matthias Wübbeling

Veröffentlicht in Ausgabe 07/2024 - PRAXIS

In Unternehmen sind VPN-Umgebungen häufig sehr große und unübersichtliche Installationen mit einem Overhead an Tools und vielen möglichen Konfigurationsfehlern. Obwohl WireGuard schon einige Zeit Teil des Linux-Kernels ist, konnte es sich noch nicht umfassend gegen die Etablierten durchsetzen. Einen ersten Schritt hin zur besseren Benutzbarkeit in professionellen Umgebungen erlaubt die Open-Source-Anwendung WireGuard Portal.

Mit WireGuard befindet sich seit geraumer Zeit der Code für einen VPN-Server im Linux-Kernel, der sich immer weiter durchsetzt und auch in Unternehmensnetzwerken große VPN-Umgebungen der klassischen Hersteller ablöst. Im Vordergrund der Entwicklung von WireGuard waren dabei vor allem die auf ein notwendiges Maß reduzierte Auswählbarkeit der Verbindungs-, Verschlüsselungs- und Authentifizierungsparameter und dadurch eine sehr kleine resultierende Codebase. Was WireGuard von Haus aus fehlt, um tatsächlich professionell eingesetzt werden zu können, ist ein Management-Interface, das die Integration für Administratoren und Clients weitgehend übernimmt.
Die Entwickler des quelloffenen "WireGuard Portal" (wg-portal) [1] adressieren genau diese Problematik. Sie entwickeln ein Webportal, das Sie vom Erstellen des Schlüsselmaterials, dem Verwalten von Endpunkt-Adressen und der Konfiguration des Routings bis hin zum automatischen zeitlichen Ablauf von Zugängen unterstützt, und das Benutzern über das Self-Service-Portal die größtenteils eigenständige Verwaltung erlaubt. Im Folgenden schauen wir uns die Installation und Konfiguration von wg-portal an und diskutieren damit verbundene Nachteile im alltäglichen Umgang mit VPNs.
Ausprobieren im Docker-Image
Voraussetzung für die Installation ist eine vorhandene WireGuard-Installation, wenngleich diese nicht komplett konfiguriert sein muss. Zum Ausprobieren von wg-portal ohne große Installation eignet sich zunächst das von den Entwicklern bereitgestellte Docker-Image [2]. Da Sie über Umgebungsvariablen die Konfiguration beeinflussen können und einige Volumes in den Container einbinden müssen, sollten Sie das seit einiger Zeit in Docker integrierte Compose verwenden. Das erleichtert Ihnen vor allem das Ausprobieren unterschiedlicher Konfigurationen. Für den ersten Schritt verwenden Sie die Compose-Datei "docker-compose.yaml" aus Listing 1.
Mit WireGuard befindet sich seit geraumer Zeit der Code für einen VPN-Server im Linux-Kernel, der sich immer weiter durchsetzt und auch in Unternehmensnetzwerken große VPN-Umgebungen der klassischen Hersteller ablöst. Im Vordergrund der Entwicklung von WireGuard waren dabei vor allem die auf ein notwendiges Maß reduzierte Auswählbarkeit der Verbindungs-, Verschlüsselungs- und Authentifizierungsparameter und dadurch eine sehr kleine resultierende Codebase. Was WireGuard von Haus aus fehlt, um tatsächlich professionell eingesetzt werden zu können, ist ein Management-Interface, das die Integration für Administratoren und Clients weitgehend übernimmt.
Die Entwickler des quelloffenen "WireGuard Portal" (wg-portal) [1] adressieren genau diese Problematik. Sie entwickeln ein Webportal, das Sie vom Erstellen des Schlüsselmaterials, dem Verwalten von Endpunkt-Adressen und der Konfiguration des Routings bis hin zum automatischen zeitlichen Ablauf von Zugängen unterstützt, und das Benutzern über das Self-Service-Portal die größtenteils eigenständige Verwaltung erlaubt. Im Folgenden schauen wir uns die Installation und Konfiguration von wg-portal an und diskutieren damit verbundene Nachteile im alltäglichen Umgang mit VPNs.
Ausprobieren im Docker-Image
Voraussetzung für die Installation ist eine vorhandene WireGuard-Installation, wenngleich diese nicht komplett konfiguriert sein muss. Zum Ausprobieren von wg-portal ohne große Installation eignet sich zunächst das von den Entwicklern bereitgestellte Docker-Image [2]. Da Sie über Umgebungsvariablen die Konfiguration beeinflussen können und einige Volumes in den Container einbinden müssen, sollten Sie das seit einiger Zeit in Docker integrierte Compose verwenden. Das erleichtert Ihnen vor allem das Ausprobieren unterschiedlicher Konfigurationen. Für den ersten Schritt verwenden Sie die Compose-Datei "docker-compose.yaml" aus Listing 1.
Listing 1: docker-compose.yaml
services:
  wg-portal:
    image: wgportal/wg-portal:v2
    restart: unless-stopped
    cap_add:
      - NET_ADMIN
    network_mode: "host"
    ports:
      - "8888:8888"
    volumes:
      - /etc/wireguard:/etc/wireguard
      - ./data:/app/data
      - ./config:/app/config
Zum Zeitpunkt der Erstellung dieses Artikels war Version 2 von wg-portal aktuell. Eventuell möchten Sie das Tag des Images entsprechend anpassen. Die NET_ADMIN-Berechtigungen benötigt der Container, um die Netzwerkinterfaces von WireGuard zu steuern. Starten Sie nun das Portal mit dem Kommando docker compose up, stellen Sie fest, dass das Image noch nicht so weit vorbereitet wurde, dass Sie es einfach out of the box starten können.
wg-portal benötigt zum Start eine Konfiguration im YAML-Format und erwartet diese laut Ausgabe der Logs unter dem Pfad "config/config.yml". Erstellen Sie also diese Datei, möglicherweise benötigen Sie dafür die Rechte des root-Benutzers, weil der Ordner "config" beim ersten Start des Containers mit entsprechenden Berechtigungen erstellt wurde. Fügen Sie zunächst diese Inhalte in die "config.yml" ein:
core:
  admin_user: admin@it-administrator.de
  admin_password: security-tipp
  self_provisioning_allowed: true
web:
  external_url: http://localhost:8888
  request_logging: true
Entgegen der Standardkonfiguration erlauben Sie mit dem Parameter "self_provisioning_allowed: true" Benutzern, eigene VPN-Verbindungen zu erstellen. Anschließend starten Sie den Container erneut. Die Meldung einer fehlenden Konfiguration erscheint nun nicht mehr und Sie können in Ihrem Browser die Adresse "http://localhost:8888" öffnen, um auf das Webinterface zuzugreifen. Dort landen Sie auf einer Übersichtsseite mit allgemeinen Informationen über WireGuard und wg-portal. Klicken Sie nun rechts oben auf "Login" und geben die gewählten Zugangsdaten aus der "config.yml" in das Loginformular ein.
Nach dem Login gelangen Sie mit einem Klick auf "Mein Profil öffnen" zu Ihrer persönlichen Profilseite, wo Sie die VPN-Profile Ihres aktuellen Benutzers verwalten können. Dort sollten zu diesem Zeitpunkt natürlich noch keine Informationen hinterlegt sein. Wählen Sie den Button zum Hinzufügen einer Verbindung, gelangen Sie zu einem Eingabedialog. Dort können Sie Ihre Verbindung mit den Parametern konfigurieren, die Sie aus der klassischen WireGuard-Konfiguration bereits kennen.
Schnittstellen verwalten
Wählen Sie im Menü den Punkt "Schnittstellen", gelangen Sie zur Übersicht der bereits erstellten WireGuard-Endpunkte. wg-portal erkennt hier bereits vorhandene manuell angelegte Endpunkte und listet diese ebenfalls auf. Wenn Sie das kleine Augensymbol in der Titelzeile der Schnittstelle auswählen, zeigt Ihnen wg-portal die Textkonfiguration des Interfaces an. Sie können diese Konfiguration auch direkt herunterladen oder mit einem Klick auf das Einstellungssymbol in einem Dialog verändern. Hatten Sie bisher kein Interface konfiguriert oder möchten ein weiteres anlegen, erstellen Sie mit einem Klick auf das "+"-Symbol einfach eine entsprechende Konfiguration über den Dialog.
Unter "Current Endpoints" sehen Sie die existierenden Verbindungen der Endpunkte und deren aktuellen Status. Auch diese Konfigurationen können Sie ändern. Beim Anzeigen der Verbindungskonfiguration gibt Ihnen wg-portal einen QR-Code aus. Dieser lässt sich etwa bei Verwendung von WireGuard auf dem Smartphone einsetzen, um die Konfiguration einfach auf das Gerät zu übertragen. Das klappt natürlich nur dann, wenn auch der private Schlüssel für die Verbindung in wg-portal hinterlegt ist. Andernfalls müssen Sie diesen auf dem Gerät später noch hinzufügen.
Benutzerverwaltungund Single Sign-on
Nachdem Sie sich mit der Konfiguration der Schnittstellen und Verbindungen vertraut gemacht haben, können Sie im Menü unter "Users" die Benutzerverwaltung starten. wg-portal bringt eine eigene Benutzerverwaltung mit. Neue User fügen Sie über den entsprechenden "+"-Button in der Übersicht hinzu. Im Gegensatz zu einem administrativen User können normale Benutzer lediglich Einblick in die eigenen Profile erhalten und, wenn Sie die entsprechende Konfiguration übernommen haben, auch eigene Verbindungen konfigurieren.
Neben lokalen Benutzern erlaubt wg-portal aber auch das Anbinden von Single-Sign-on-Diensten, etwa über OIDC, OAuth2 oder LDAP. Damit können Sie WireGuard zusammen mit wg-portal im Hinblick auf Benutzer nahtlos in Ihre existierende Infrastruktur integrieren. Um einen LDAP-Server anzubinden, erweitern Sie die Konfiguration wie in Listing 2 gezeigt.
Listing 2: Erweiterung der config.yml
[…]
auth:
  ldap:
    - id: LDAP01
    url: ldap://ldap.it-administrator.de
    start_tls: true
    base_dn: "DC=it-administrator, DC=de"
    bind_user: wgportal
    bind_pass: geheim
    admin_group: dc=WG-ADMINS
    synchronize: true
Passen Sie die Einstellungen an Ihre Infrastruktur an und starten Sie dann den Container neu. In der Benutzerübersicht erkennen Sie nun die Benutzer aus dem LDAP an der entsprechenden Anzeige in der Spalte "Source". Eine Anbindung an OpenID-Connect oder OAuth2 gelingt ähnlich einfach, Sie können sogar die Nutzung mehrerer Authentifikations-
Backends konfigurieren.
Zusätzliche Handarbeit
Auch wenn Ihnen wg-portal einige Arbeit bei der Verwaltung der Schnittstellen und der automatischen beziehungsweise self-service-orientierten Benutzerverwaltung für Ihr WireGuard-VPN abnimmt, müssen Sie an einigen Stellen trotzdem weiterhin selbst Hand anlegen. wg-portal übernimmt keine Konfiguration der Firewall, die jedoch notwendig ist, um Benutzer in unterschiedlichen Subnetzen zu isolieren oder nur ausgewählten Benutzern Zugriff auf bestimmte Netzwerkressourcen zu ermöglichen.
In übersichtlichen Setups, etwa wenn Sie die Benutzer automatisch hinter ein NAT bringen möchten, können Sie diese Regeln in sogenannten "Interface Hooks" mit passenden Bash-Kommandos umsetzen. Diese Hooks lassen sich auch für jede einzelne Verbindung konfigurieren, allerdings werden diese nicht auf dem Server, sondern auf den Clients ausgeführt. Komplexe Netzwerke müssen Sie nach wie vor im Hintergrund konfigurieren und pflegen.
Fazit
WireGuard ist als VPN-Umgebung auf dem Vormarsch. Für den professionellen Einsatz im Unternehmensumfeld fehlen häufig noch die Werkzeuge, die Admins die Arbeit abnehmen. Das Projekt wg-portal unterstützt Sie beim Einrichten und Verwalten von WireGuard und bietet mit dem Self-Service für Benutzer eine einfache Möglichkeit zur Skalierung unabhängig von der Anzahl der Benutzer.
(dr)
Link-Codes