Show HN: ระบบยืนยันตัวตนหลายปัจจัยและลงทะเบียน Wag สำหรับ WireGuard
(github.com/NHAS)ฟีเจอร์หลักของ WagWag
- เพิ่ม MFA, การจำกัดเส้นทาง และฟังก์ชันลงทะเบียนอุปกรณ์ให้กับ WireGuard
- สามารถกำหนดเส้นทางที่ต้องยืนยันตัวตนด้วย MFA หรือเส้นทางที่เปิดให้เข้าถึงแบบสาธารณะได้ตลอดเวลา
- มี API แบบเรียบง่ายสำหรับลงทะเบียนไคลเอนต์ใหม่
- รองรับความพร้อมใช้งานสูง
- มีตัวเลือก MFA หลากหลาย เช่น Webauthn, OIDC
- พัฒนาโดยได้รับการสนับสนุนจาก Aura Information Security
ข้อกำหนด
- ต้องติดตั้ง
iptablesและlibpam - Wag ต้องรันด้วยสิทธิ์ root เพื่อจัดการอุปกรณ์
iptablesและwireguard - ต้องเปิดใช้งานการส่งต่อใน
sysctlsysctl -w net.ipv4.ip_forward=1 - Wag ไม่ต้องใช้
wg-quickเป็นต้น ตราบใดที่เคอร์เนลรองรับ wireguard
วิธีติดตั้ง
ไบนารีรีลีส (ต้องการ 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>
ติดตั้งจากซอร์ส (ต้องการ 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
- หากรันอยู่หลังรีเวิร์สพร็อกซี ต้องตั้งค่า
X-Forwarded-For
การจัดการ
ผู้ใช้ root สามารถจัดการเซิร์ฟเวอร์ wag ได้ด้วยคำสั่งต่อไปนี้:
wag subcommand [-options]
- คำสั่งย่อยที่รองรับ:
start,cleanup,reload,version,firewall,registration,devices,users,webadmin,gen-config - มีคำอธิบายวิธีใช้งานสำหรับแต่ละคำสั่ง
คู่มือผู้ใช้
ติดตั้ง Wag
- คัดลอก
wag,config.jsonไปไว้ที่/opt/wag - สร้าง private key ของ WireGuard ด้วย
wg genkeyแล้วตั้งค่าในPrivateKeyของตัวอย่างคอนฟิก - คัดลอก (หรือลิงก์)
wag.serviceไปไว้ที่/etc/systemd/system/แล้วเริ่ม/เปิดใช้งานบริการ
สร้างโทเคนลงทะเบียนใหม่
# ./wag registration -add -username tester
token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester
ดึงโทเคนด้วย curl:
curl http://public.server.address/register_device/…
บริการจะส่งคืนคำตอบในรูปแบบสมบูรณ์ ซึ่งสามารถบันทึกเป็นไฟล์ config ได้
ทำ MFA
ผู้ใช้เชื่อมต่อไปยังที่อยู่ VPN (เช่น 192.168.1.1:8080) แล้วกรอกรหัส 2FA สามารถกำหนดอายุเซสชันได้ในไฟล์ตั้งค่า
เข้าสู่ระบบคอนโซลจัดการ
ตั้งค่า ManagementUI.Enabled เป็น true แล้วรันคำสั่งต่อไปนี้:
sudo ./wag webadmin -add -username <your_username> -password <your-password-here>
จากนั้นเชื่อมต่อไปยังที่อยู่สำหรับฟังของระบบจัดการแล้วกรอกข้อมูลรับรอง ไม่สามารถเพิ่มผู้ใช้ผู้ดูแลผ่านเว็บอินเทอร์เฟซได้
ความเห็นของ GN⁺
-
รองรับความพร้อมใช้งานสูงผ่านความสามารถด้านคลัสเตอร์ ซึ่งดูน่าประทับใจ น่าจะมีประโยชน์สำหรับการกู้คืนจากภัยพิบัติหรือบริการที่ต้องไม่หยุดชะงัก
-
การรองรับวิธียืนยันตัวตนที่หลากหลายก็เป็นข้อดีเช่นกัน น่าจะผสานเข้ากับระบบยืนยันตัวตนขององค์กรได้ง่ายผ่าน TOTP, WebAuth, OIDC เป็นต้น
-
สามารถกำหนดกฎ ACL ได้อย่างยืดหยุ่น จึงน่าจะควบคุมการเข้าถึงได้ละเอียด สามารถจำกัด IP, พอร์ต, โปรโตคอลที่เข้าถึงได้ตามผู้ใช้/กลุ่ม
-
น่าเสียดายที่ยังไม่รองรับ IPv6 ทุกวันนี้มีการเปลี่ยนผ่านไปสู่ IPv6 กันมากขึ้น จึงดูเป็นฟีเจอร์ที่ควรมีการรองรับโดยเร็ว
-
หากกำลังมองหาโซลูชัน VPN ที่ออกแบบมาสำหรับ Linux โดยเฉพาะ ก็ดูน่าจะเป็นอีกตัวเลือกที่ดี ทำงานได้บนระบบสมัยใหม่ที่ใช้เคอร์เนล 5.9 ขึ้นไป
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
สรุป: