1 puan yazan GN⁺ 2024-05-13 | 1 yorum | WhatsApp'ta paylaş

WagWag'in başlıca özellikleri

  • Wireguard'a MFA, rota kısıtlamaları ve cihaz kaydı özellikleri ekler
    • MFA doğrulaması gerektiren rotalar veya her zaman herkese açık erişilebilen rotalar tanımlanabilir
    • Yeni istemcileri kaydetmek için basit bir API sunar
    • Yüksek erişilebilirlik desteği
    • Webauthn, OIDC gibi çeşitli MFA seçenekleri sunar
  • Aura Information Security desteğiyle geliştirilmiştir

Gereksinimler

  • iptables ve libpam kurulu olmalıdır
  • Wag, iptables ve wireguard aygıtlarını yönetmek için root olarak çalıştırılmalıdır
  • sysctl içinde forwarding etkinleştirilmiş olmalıdır
    sysctl -w net.ipv4.ip_forward=1
    
  • Wag, çekirdek wireguard'ı desteklediği sürece wg-quick vb. araçlara ihtiyaç duymaz

Kurulum

İkili sürüm (glibc 2.31+ gerekir)

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>  

Kaynaktan kurulum (go1.19, npm, gulp, clang, llvm-strip, libbpf gerekir)

git clone git@github.com:NHAS/wag.git
cd wag
make
cp example_config.json config.json
sudo ./wag start
  • Ters proxy arkasında çalışıyorsa X-Forwarded-For ayarlanmalıdır

Yönetim

Root kullanıcısı, wag sunucusunu aşağıdaki komutla yönetebilir:

wag subcommand [-options]
  • Desteklenen alt komutlar: start, cleanup, reload, version, firewall, registration, devices, users, webadmin, gen-config
  • Her komut için kullanım açıklaması sağlanır

Kullanıcı rehberi

Wag kurulumu

  1. wag, config.json dosyalarını /opt/wag dizinine kopyalayın
  2. wg genkey ile bir wireguard özel anahtarı üretin ve örnek yapılandırmadaki PrivateKey alanına yerleştirin
  3. wag.service dosyasını /etc/systemd/system/ dizinine kopyalayın (veya bağlayın) ve servisi başlatıp etkinleştirin

Yeni kayıt token'ı oluşturma

# ./wag registration -add -username tester

token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester

Token'ı curl ile alma:

curl http://public.server.address/register_device/…

Servis tam biçimli bir yanıt döndürür. Bu yanıt config dosyası olarak kaydedilebilir.

MFA gerçekleştirme

Kullanıcı, VPN adresine (ör. 192.168.1.1:8080) bağlanıp 2FA kodunu girer. Oturum süresi yapılandırma dosyasında belirtilebilir.

Yönetim konsoluna giriş

ManagementUI.Enabled değerini true yapın ve aşağıdaki komutu çalıştırın:

sudo ./wag webadmin -add -username <your_username> -password <your-password-here>

Yönetim dinleme adresine bağlanıp kimlik bilgilerini girin. Web arayüzü üzerinden yönetici kullanıcı eklenemez.

GN⁺ görüşü

  • Kümeleme özelliğiyle yüksek erişilebilirlik sunması etkileyici. Felaket kurtarma veya kesintisiz hizmet için faydalı görünüyor.

  • Çeşitli kimlik doğrulama yöntemlerini desteklemesi de güçlü bir taraf. TOTP, WebAuth, OIDC vb. ile kurumsal kimlik doğrulama sistemlerine kolayca entegre edilebilir.

  • ACL kuralları esnek biçimde tanımlanabildiği için ayrıntılı erişim kontrolü mümkün görünüyor. Kullanıcı/grup bazında erişilebilen IP, port ve protokoller sınırlandırılabilir.

  • IPv6 desteğinin olmaması üzücü. Günümüzde IPv6 geçişi hızlandığı için bunun yakında desteklenmesi gerekiyor gibi görünüyor.

  • Linux'a odaklı bir VPN çözümü arayanlar için iyi bir seçenek olabilir. Çekirdek 5.9 ve üzeri modern sistemlerde çalışır.

1 yorum

 
GN⁺ 2024-05-13
Hacker News yorumu

Özet:

  • Sunucunun özel anahtarı üretip istemciye göndermesi tercih edilir bir yöntem değil. Doğru yaklaşım, istemcinin özel anahtarı üretip açık anahtarı sunucuya göndermesidir.
  • Örnekte HTTP protokolü kullanılıyor; bu güvenlik açısından uygun değil, bu nedenle HTTPS ile değiştirilmesi öneriliyor.
  • Oturum zaman aşımına uğradığında istemcinin bunu fark edebilmesi için bir yönteme ihtiyaç var. Örneğin, Wi-Fi’daki Captive Portal algılama özelliği gibi belirli aralıklarla bir URL’yi kontrol ederek durumu doğrulama yöntemi düşünülebilir.
  • WireGuard anahtarları kalıcı oturum anahtarı işlevi gördüğünden, tam teşekküllü bir VPN sunucu çözümü olabilmesi için periyodik oturum anahtarı yenileme, oturum sonlandırma, IP adresi değiştirme, rota yapılandırması ve gerektiğinde kimlik doğrulamanın yenilenmesi gibi ek işlevlerin uygulanması gerekiyor.
  • Head veya Tailscale ile benzer yönleri oldukça fazla; işlev çakışmaları, farklar ve uygulama planlarını karşılaştıran bir kaynak olursa iyi olur.
  • TOTP kodlarına yönelik brute-force attack önlemleri hazırlanmalı. Örneğin istek hız sınırlandırma, deneme sayısı sınırı gibi yöntemler değerlendirilebilir.
  • WireGuard’ı seçen bir sitenin güncel yapılandırmaları kullanacağı varsayılabileceğinden, IPv6 ULA (Unique Local Address) kullanımının yüksek olması beklenir.