1 poin oleh GN⁺ 2024-05-13 | 1 komentar | Bagikan ke WhatsApp

Fitur utama WagWag

  • Menambahkan MFA, pembatasan rute, dan fitur pendaftaran perangkat ke WireGuard
    • Dapat menentukan rute yang memerlukan autentikasi MFA atau rute yang selalu dapat diakses secara publik
    • Menyediakan API sederhana untuk mendaftarkan klien baru
    • Mendukung ketersediaan tinggi
    • Menyediakan berbagai opsi MFA seperti Webauthn, OIDC, dll.
  • Dikembangkan dengan dukungan dari Aura Information Security

Persyaratan

  • iptables dan libpam harus terpasang
  • Wag harus dijalankan sebagai root untuk mengelola perangkat iptables dan wireguard
  • Forwarding harus diaktifkan di sysctl
    sysctl -w net.ipv4.ip_forward=1
    
  • Wag tidak memerlukan wg-quick dan sejenisnya selama kernel mendukung WireGuard

Cara instalasi

Rilis biner (memerlukan 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>  

Instal dari source (memerlukan 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
  • Jika berjalan di belakang reverse proxy, X-Forwarded-For harus disetel

Administrasi

Pengguna root dapat mengelola server wag dengan perintah berikut:

wag subcommand [-options]
  • Subperintah yang didukung: start, cleanup, reload, version, firewall, registration, devices, users, webadmin, gen-config
  • Menyediakan penjelasan penggunaan untuk tiap perintah

Panduan pengguna

Memasang Wag

  1. Salin wag, config.json ke /opt/wag
  2. Buat private key WireGuard dengan wg genkey, lalu tetapkan ke PrivateKey pada contoh konfigurasi
  3. Salin (atau tautkan) wag.service ke /etc/systemd/system/, lalu mulai/aktifkan servicenya

Membuat token pendaftaran baru

# ./wag registration -add -username tester

token,username
e83253fd9962c68f73aa5088604f3f425d58a963bfb5c0889cca54d63a34b2e3,tester

Mengambil token dengan curl:

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

Layanan akan mengembalikan respons dalam bentuk lengkap. Ini bisa disimpan sebagai file config.

Menjalankan MFA

Pengguna mengakses alamat VPN (misalnya 192.168.1.1:8080) lalu memasukkan kode 2FA. Masa berlaku sesi dapat ditentukan di file konfigurasi.

Login ke konsol manajemen

Setel ManagementUI.Enabled ke true lalu jalankan perintah berikut:

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

Akses alamat listening untuk administrasi lalu masukkan kredensial. Antarmuka web tidak dapat digunakan untuk menambahkan pengguna admin.

Opini GN⁺

  • Dukungan ketersediaan tinggi melalui fitur clustering cukup mengesankan. Ini tampaknya berguna untuk pemulihan bencana atau layanan tanpa downtime.

  • Dukungan untuk berbagai metode autentikasi juga menjadi nilai plus. TOTP, WebAuth, OIDC, dan lainnya tampaknya memudahkan integrasi dengan sistem autentikasi perusahaan.

  • Aturan ACL dapat didefinisikan secara fleksibel, sehingga kontrol akses yang rinci terlihat memungkinkan. IP, port, dan protokol yang dapat diakses bisa dibatasi per pengguna/grup.

  • Tidak adanya dukungan IPv6 cukup disayangkan. Saat ini adopsi IPv6 semakin aktif, jadi dukungan cepat tampaknya diperlukan.

  • Jika mencari solusi VPN yang dioptimalkan untuk Linux, ini tampaknya bisa menjadi pilihan yang baik. Berjalan pada sistem modern dengan kernel 5.9 atau lebih baru.

1 komentar

 
GN⁺ 2024-05-13
Komentar Hacker News

Ringkasan:

  • Metode di mana server menghasilkan kunci privat lalu mengirimkannya ke klien tidak diinginkan. Yang tepat adalah klien menghasilkan kunci privat dan mengirimkan kunci publik ke server.
  • Contoh menggunakan protokol HTTP, tetapi ini tidak tepat dari sisi keamanan, sehingga disarankan untuk menggantinya dengan HTTPS.
  • Diperlukan cara agar klien dapat mengetahui saat sesi habis. Misalnya, bisa dipertimbangkan metode seperti fitur deteksi Captive Portal pada Wi-Fi yang secara berkala memeriksa URL untuk mengecek status.
  • Kunci WireGuard berperan sebagai kunci sesi permanen, jadi agar menjadi solusi server VPN yang lengkap, perlu implementasi fitur tambahan seperti rotasi kunci sesi berkala, penghentian sesi, perubahan alamat IP, pengaturan rute, dan pembaruan autentikasi bila diperlukan.
  • Ada banyak kemiripan dengan Head atau Tailscale, jadi akan bagus jika ada materi yang membandingkan tumpang tindih fitur, perbedaannya, dan rencana implementasinya.
  • Harus ada langkah pencegahan terhadap brute-force attack pada kode TOTP. Misalnya, bisa dipertimbangkan pembatasan laju permintaan, pembatasan jumlah percobaan, dan sebagainya.
  • Jika sebuah situs memilih WireGuard, kemungkinan besar ia akan memakai konfigurasi terbaru, sehingga pemanfaatan IPv6 ULA (Unique Local Address) akan tinggi.