Principais recursos do Wag
- Adiciona MFA, restrição de rotas e registro de dispositivos ao WireGuard
- Permite definir rotas que exigem autenticação MFA ou rotas sempre acessíveis publicamente
- Fornece uma API simples para registrar novos clientes
- Suporte a alta disponibilidade
- Oferece várias opções de MFA, como Webauthn e OIDC
- Desenvolvido com apoio da Aura Information Security
Requisitos
iptableselibpamdevem estar instalados- O Wag deve ser executado como root para gerenciar
iptablese dispositivoswireguard - O encaminhamento deve estar ativado no
sysctlsysctl -w net.ipv4.ip_forward=1 - O Wag não precisa de
wg-quicknem similares, desde que o kernel tenha suporte a WireGuard
Como instalar
Release binária (requer 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>
Instalação a partir do código-fonte (requer 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
- Se estiver rodando atrás de um proxy reverso, é preciso configurar
X-Forwarded-For
Administração
O usuário root pode gerenciar o servidor wag com comandos como este:
wag subcommand [-options]
- Subcomandos suportados:
start,cleanup,reload,version,firewall,registration,devices,users,webadmin,gen-config - Fornece instruções de uso para cada comando
Guia do usuário
Instalar o Wag
- Copie
wageconfig.jsonpara/opt/wag - Gere uma chave privada do WireGuard com
wg genkeye configure-a emPrivateKeyno exemplo de configuração - Copie (ou crie um link para)
wag.serviceem/etc/systemd/system/e inicie/ative o serviço
Gerar um novo token de registro
# ./wag registration -add -username tester
token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester
Buscar o token com curl:
curl http://public.server.address/register_device/…
O serviço retorna uma resposta completa, que pode ser salva como arquivo de configuração.
Executar MFA
O usuário acessa o endereço VPN (por exemplo, 192.168.1.1:8080) e insere o código 2FA. A duração da sessão pode ser definida no arquivo de configuração.
Fazer login no console de administração
Defina ManagementUI.Enabled como true e execute o comando abaixo:
sudo ./wag webadmin -add -username <your_username> -password <your-password-here>
Acesse o endereço de escuta da administração e insira as credenciais. Não é possível adicionar usuários administradores pela interface web.
Opinião do GN⁺
-
É impressionante que ele ofereça suporte a alta disponibilidade por meio de funcionalidade de clustering. Parece útil para recuperação de desastres e serviços sem interrupção.
-
Outro ponto positivo é o suporte a vários métodos de autenticação. Com TOTP, WebAuthn, OIDC etc., parece fácil integrar com o sistema de autenticação da empresa.
-
Como as regras de ACL podem ser definidas com flexibilidade, ele parece permitir um controle de acesso bem granular. É possível restringir IPs, portas e protocolos acessíveis por usuário/grupo.
-
É uma pena que não ofereça suporte a IPv6. Como hoje a migração para IPv6 está acelerada, parece importante ter esse suporte logo.
-
Se você está procurando uma solução de VPN especializada para Linux, isso parece ser uma boa opção. Funciona em sistemas mais recentes com kernel 5.9 ou superior.
1 comentários
Comentários do Hacker News
Resumo: