Show HN: Hệ thống đăng ký và xác thực đa yếu tố Wag cho WireGuard
(github.com/NHAS)Các tính năng chính của Wag
- Thêm MFA, giới hạn tuyến đường và tính năng đăng ký thiết bị cho WireGuard
- Có thể định nghĩa các tuyến yêu cầu xác thực MFA hoặc các tuyến luôn được truy cập công khai
- Cung cấp API đơn giản để đăng ký client mới
- Hỗ trợ tính sẵn sàng cao
- Cung cấp nhiều tùy chọn MFA như Webauthn, OIDC
- Được phát triển với sự hỗ trợ từ Aura Information Security
Yêu cầu
- Cần cài đặt
iptablesvàlibpam - Wag phải chạy bằng quyền root để quản lý
iptablesvà thiết bịwireguard - Phải bật forwarding trong
sysctlsysctl -w net.ipv4.ip_forward=1 - Wag không cần
wg-quickhay công cụ tương tự miễn là kernel hỗ trợ WireGuard
Cách cài đặt
Bản phát hành nhị phân (yêu cầu 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>
Cài đặt từ mã nguồn (cần 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
- Nếu đang chạy phía sau reverse proxy thì cần cấu hình
X-Forwarded-For
Quản trị
Người dùng root có thể quản lý máy chủ wag bằng lệnh sau:
wag subcommand [-options]
- Các lệnh con được hỗ trợ:
start,cleanup,reload,version,firewall,registration,devices,users,webadmin,gen-config - Có cung cấp phần mô tả cách dùng cho từng lệnh
Hướng dẫn người dùng
Cài đặt Wag
- Sao chép
wag,config.jsonvào/opt/wag - Tạo private key WireGuard bằng
wg genkeyrồi đặt vàoPrivateKeytrong cấu hình ví dụ - Sao chép (hoặc liên kết)
wag.servicevào/etc/systemd/system/rồi khởi động/kích hoạt dịch vụ
Tạo token đăng ký mới
# ./wag registration -add -username tester
token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester
Lấy token bằng curl:
curl http://public.server.address/register_device/…
Dịch vụ sẽ trả về phản hồi đầy đủ, có thể lưu thành file cấu hình.
Thực hiện MFA
Người dùng truy cập địa chỉ VPN (ví dụ: 192.168.1.1:8080) và nhập mã 2FA. Có thể chỉ định thời lượng phiên trong file cấu hình.
Đăng nhập vào bảng điều khiển quản trị
Đặt ManagementUI.Enabled thành true rồi chạy lệnh sau:
sudo ./wag webadmin -add -username <your_username> -password <your-password-here>
Truy cập địa chỉ lắng nghe dành cho quản trị và nhập thông tin xác thực. Không thể thêm người dùng quản trị qua giao diện web.
Ý kiến của GN⁺
-
Khá ấn tượng khi hỗ trợ tính sẵn sàng cao thông qua tính năng clustering. Điều này có vẻ hữu ích cho khôi phục sau thảm họa hoặc dịch vụ không gián đoạn.
-
Việc hỗ trợ nhiều phương thức xác thực cũng là một điểm mạnh. Với TOTP, WebAuth, OIDC, có vẻ có thể dễ dàng tích hợp với hệ thống xác thực của doanh nghiệp.
-
Có thể định nghĩa linh hoạt các quy tắc ACL, nên trông khá phù hợp cho việc kiểm soát truy cập chi tiết. Có thể giới hạn IP, cổng và giao thức được phép truy cập theo từng người dùng/nhóm.
-
Việc chưa hỗ trợ IPv6 là điều đáng tiếc. Hiện nay quá trình chuyển sang IPv6 đang diễn ra mạnh mẽ nên có vẻ cần hỗ trợ sớm.
-
Nếu đang tìm một giải pháp VPN tối ưu cho Linux thì đây có vẻ là một lựa chọn tốt. Nó hoạt động trên các hệ thống mới với kernel 5.9 trở lên.
1 bình luận
Ý kiến trên Hacker News
Tóm tắt: