1 पॉइंट द्वारा GN⁺ 2024-05-13 | 1 टिप्पणियां | WhatsApp पर शेयर करें

WagWag की मुख्य विशेषताएँ

  • Wireguard में MFA, path restriction, और device registration फीचर जोड़ता है
    • ऐसे path परिभाषित किए जा सकते हैं जहाँ MFA authentication ज़रूरी हो, या ऐसे path जो हमेशा सार्वजनिक रूप से accessible हों
    • नए clients को register करने के लिए सरल API प्रदान करता है
    • high availability सपोर्ट
    • Webauthn, OIDC आदि जैसे कई MFA विकल्प प्रदान करता है
  • Aura Information Security के समर्थन से विकसित

आवश्यकताएँ

  • iptables और libpam इंस्टॉल होने चाहिए
  • Wag को iptables और wireguard devices मैनेज करने के लिए root के रूप में चलना होगा
  • sysctl में forwarding सक्षम होना चाहिए
    sysctl -w net.ipv4.ip_forward=1
    
  • kernel में wireguard सपोर्ट होने पर Wag को wg-quick आदि की आवश्यकता नहीं होती

इंस्टॉल करने का तरीका

बाइनरी रिलीज़ (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>  

source से इंस्टॉल (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
  • अगर reverse proxy के पीछे चला रहे हैं, तो X-Forwarded-For सेट करना होगा

प्रबंधन

root उपयोगकर्ता नीचे दिए गए कमांड से wag server को मैनेज कर सकता है:

wag subcommand [-options]
  • समर्थित subcommands: start, cleanup, reload, version, firewall, registration, devices, users, webadmin, gen-config
  • हर कमांड के लिए उपयोग विवरण उपलब्ध है

उपयोगकर्ता गाइड

Wag इंस्टॉल करना

  1. wag, config.json को /opt/wag में कॉपी करें
  2. wg genkey से wireguard private key बनाकर example config के PrivateKey में सेट करें
  3. wag.service को /etc/systemd/system/ में कॉपी (या लिंक) करें और service को start/enable करें

नया registration token बनाना

# ./wag registration -add -username tester

token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester

token को curl करना:

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

service पूरा response लौटाती है। इसे config file के रूप में सेव किया जा सकता है.

MFA करना

उपयोगकर्ता VPN address (जैसे 192.168.1.1:8080) पर जाकर 2FA code दर्ज करता है। config file में session lifetime तय की जा सकती है.

management console में लॉगिन

ManagementUI.Enabled को true पर सेट करें और नीचे दिया गया कमांड चलाएँ:

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

management listening address पर जाकर authentication details दर्ज करें। web interface से management users नहीं जोड़े जा सकते.

GN⁺ की राय

  • clustering फीचर के ज़रिए high availability सपोर्ट करना प्रभावशाली है। यह disaster recovery या बिना downtime वाली service के लिए उपयोगी लग सकता है.

  • कई authentication methods का सपोर्ट भी एक बड़ा प्लस है। TOTP, WebAuth, OIDC आदि के ज़रिए इसे enterprise authentication systems के साथ आसानी से integrate किया जा सकता है.

  • ACL rules को लचीले ढंग से परिभाषित किया जा सकता है, इसलिए बारीक access control संभव दिखता है। user/group के आधार पर accessible IP, port, और protocol सीमित किए जा सकते हैं.

  • IPv6 सपोर्ट न होना थोड़ा खलता है। आजकल IPv6 migration तेज़ है, इसलिए जल्दी सपोर्ट की ज़रूरत लगती है.

  • अगर आप Linux-केंद्रित VPN solution ढूँढ़ रहे हैं, तो यह एक अच्छा विकल्प हो सकता है। यह kernel 5.9 या उससे ऊपर के आधुनिक systems पर चलता है.

1 टिप्पणियां

 
GN⁺ 2024-05-13
Hacker News टिप्पणी

सारांश:

  • सर्वर द्वारा private key बनाकर उसे client को भेजने का तरीका वांछनीय नहीं है। बेहतर यह है कि client private key बनाए और public key सर्वर को भेजे।
  • उदाहरण में HTTP protocol का उपयोग किया गया है, जो सुरक्षा की दृष्टि से उपयुक्त नहीं है, इसलिए इसे HTTPS से बदलने का सुझाव है।
  • session timeout होने पर client उसे पहचान सके, इसके लिए किसी तरीके की ज़रूरत है। उदाहरण के लिए, Wi‑Fi के Captive Portal detection की तरह समय-समय पर URL check करके स्थिति की पुष्टि करने के तरीकों पर विचार किया जा सकता है।
  • WireGuard की keys स्थायी session key की भूमिका निभाती हैं, इसलिए एक पूर्ण VPN server solution बनने के लिए periodic session key rotation, session termination, IP address change, route configuration, और ज़रूरत पड़ने पर authentication renewal जैसी अतिरिक्त सुविधाओं का कार्यान्वयन आवश्यक है।
  • इसमें Head या Tailscale से कई समानताएँ दिखती हैं, इसलिए feature overlap, differences, और implementation plan की तुलना करने वाली सामग्री हो तो अच्छा होगा।
  • TOTP code पर brute-force attack रोकने के उपाय होने चाहिए। उदाहरण के लिए, request rate limiting, attempt count limiting जैसी व्यवस्थाओं पर विचार किया जाना चाहिए।
  • यदि किसी site ने WireGuard चुना है, तो संभावना है कि वह latest configuration इस्तेमाल करेगी, इसलिए IPv6 की ULA(Unique Local Address) की उपयोगिता अधिक होगी।