Funciones principales de WagWag
- Agrega MFA, restricciones de rutas y registro de dispositivos a WireGuard
- Permite definir rutas que requieren autenticación MFA o rutas que siempre son accesibles públicamente
- Proporciona una API simple para registrar nuevos clientes
- Soporta alta disponibilidad
- Ofrece varias opciones de MFA como Webauthn y OIDC
- Desarrollado con apoyo de Aura Information Security
Requisitos
- Deben estar instalados
iptablesylibpam - Wag debe ejecutarse como root para administrar
iptablesy los dispositivoswireguard - El reenvío debe estar habilitado en
sysctlsysctl -w net.ipv4.ip_forward=1 - Wag no necesita
wg-quickni similares siempre que el kernel soporte WireGuard
Método de instalación
Release binario (requiere 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>
Instalación desde el código fuente (requiere go1.19, npm, gulp, clang, llvm-strip, libbpf)
git clone git@github.com:NHAS/wag.git
cd wag
make
cp example_config.json config.json
sudo ./wag start
- Si se ejecuta detrás de un reverse proxy, se debe configurar
X-Forwarded-For
Administración
El usuario root puede administrar el servidor wag con un comando como este:
wag subcommand [-options]
- Subcomandos soportados:
start,cleanup,reload,version,firewall,registration,devices,users,webadmin,gen-config - Incluye explicación de uso para cada comando
Guía de usuario
Instalar Wag
- Copiar
wagyconfig.jsona/opt/wag - Generar una clave privada de WireGuard con
wg genkeyy configurarla enPrivateKeydentro de la configuración de ejemplo - Copiar (o enlazar)
wag.servicea/etc/systemd/system/y luego iniciar/habilitar el servicio
Crear un nuevo token de registro
# ./wag registration -add -username tester
token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester
Obtener el token con curl:
curl http://public.server.address/register_device/…
El servicio devuelve una respuesta completa que puede guardarse como archivo de configuración.
Realizar MFA
El usuario se conecta a la dirección VPN (por ejemplo, 192.168.1.1:8080) e ingresa el código 2FA. La duración de la sesión puede definirse en el archivo de configuración.
Iniciar sesión en la consola de administración
Configura ManagementUI.Enabled como true y ejecuta el siguiente comando:
sudo ./wag webadmin -add -username <your_username> -password <your-password-here>
Conéctate a la dirección de escucha de administración e ingresa las credenciales. No es posible agregar usuarios administradores desde la interfaz web.
Opinión de GN⁺
-
Es impresionante que soporte alta disponibilidad mediante funciones de clustering. Parece útil para recuperación ante desastres o servicios sin interrupciones.
-
También es positivo que soporte varios métodos de autenticación. Con TOTP, WebAuth y OIDC, parece fácil integrarlo con los sistemas de autenticación de una empresa.
-
Como permite definir reglas ACL de forma flexible, parece posible tener un control de acceso detallado. Se pueden restringir por usuario/grupo las IP, puertos y protocolos accesibles.
-
Es una lástima que no soporte IPv6. Hoy en día la migración a IPv6 avanza bastante, así que parece necesario que lo agreguen pronto.
-
Si buscas una solución VPN especializada para Linux, parece una buena opción. Funciona en sistemas recientes con kernel 5.9 o superior.
1 comentarios
Comentario de Hacker News
Resumen: