Show HN: Wag Multi-Faktor-Authentifizierungs- und Registrierungssystem für WireGuard
(github.com/NHAS)Hauptfunktionen von Wag
- Fügt WireGuard MFA, Pfadbeschränkungen und Geräte-Registrierung hinzu
- Es können Pfade definiert werden, die eine MFA-Authentifizierung erfordern, oder Pfade, die immer öffentlich zugänglich sind
- Bietet eine einfache API zur Registrierung neuer Clients
- Unterstützt Hochverfügbarkeit
- Bietet verschiedene MFA-Optionen wie WebAuthn und OIDC
- Entwickelt mit Unterstützung von Aura Information Security
Voraussetzungen
iptablesundlibpammüssen installiert sein- Wag muss als root ausgeführt werden, um
iptablesundwireguard-Geräte zu verwalten - Forwarding muss in
sysctlaktiviert seinsysctl -w net.ipv4.ip_forward=1 - Solange der Kernel WireGuard unterstützt, benötigt Wag weder
wg-quicknoch Ähnliches
Installation
Binär-Release (erfordert glibc 2.31+)
curl -L $(curl -s https://api.github.com/repos/NHAS/wag/releases/latest | jq -M -r '.assets[0].browser_download_url') -o wag
sudo ./wag gen-config
sudo ./wag start -config <generated_config_name>
Installation aus dem Quellcode (go1.19, npm, gulp, clang, llvm-strip, libbpf erforderlich)
git clone git@github.com:NHAS/wag.git
cd wag
make
cp example_config.json config.json
sudo ./wag start
- Wenn es hinter einem Reverse Proxy läuft, muss
X-Forwarded-Forgesetzt werden
Verwaltung
Der root-Benutzer kann den Wag-Server mit folgendem Befehl verwalten:
wag subcommand [-options]
- Unterstützte Unterbefehle:
start,cleanup,reload,version,firewall,registration,devices,users,webadmin,gen-config - Für jeden Befehl wird eine Nutzungsbeschreibung bereitgestellt
Benutzerleitfaden
Wag installieren
wagundconfig.jsonnach/opt/wagkopieren- Mit
wg genkeyeinen privaten WireGuard-Schlüssel erzeugen und ihn in der Beispielkonfiguration unterPrivateKeyeintragen wag.servicenach/etc/systemd/system/kopieren (oder verlinken) und den Dienst starten/aktivieren
Neues Registrierungs-Token erstellen
# ./wag registration -add -username tester
token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester
Token per curl abrufen:
curl http://public.server.address/register_device/…
Der Dienst gibt eine vollständige Antwort zurück. Diese kann als Konfigurationsdatei gespeichert werden.
MFA durchführen
Benutzer verbinden sich mit der VPN-Adresse (z. B. 192.168.1.1:8080) und geben den 2FA-Code ein. Die Sitzungsdauer kann in der Konfigurationsdatei festgelegt werden.
Beim Verwaltungskonsolen anmelden
ManagementUI.Enabled auf true setzen und den folgenden Befehl ausführen:
sudo ./wag webadmin -add -username <your_username> -password <your-password-here>
Mit der Management-Listening-Adresse verbinden und die Anmeldedaten eingeben. Über das Web-Interface können keine Management-Benutzer hinzugefügt werden.
GN⁺-Meinung
-
Beeindruckend ist die Unterstützung von Hochverfügbarkeit durch Clustering. Das dürfte für Disaster Recovery oder unterbrechungsfreie Dienste nützlich sein.
-
Positiv ist auch die Unterstützung verschiedener Authentifizierungsmethoden. Über TOTP, WebAuthn und OIDC lässt es sich vermutlich leicht in die Authentifizierungsinfrastruktur von Unternehmen integrieren.
-
ACL-Regeln lassen sich flexibel definieren, sodass eine feingranulare Zugriffskontrolle möglich erscheint. Zugängliche IPs, Ports und Protokolle können pro Benutzer bzw. Gruppe eingeschränkt werden.
-
Schade ist die fehlende Unterstützung für IPv6. Da der Umstieg auf IPv6 inzwischen aktiv vorangetrieben wird, wäre eine schnelle Unterstützung wünschenswert.
-
Wer nach einer auf Linux spezialisierten VPN-Lösung sucht, dürfte hier eine gute Option finden. Sie läuft auf aktuellen Systemen mit Kernel 5.9 oder neuer.
1 Kommentare
Hacker-News-Kommentar
Zusammenfassung: