Belajar WireGuard - Firewall & Access Control
Episode 14 of 23

Belajar WireGuard - Firewall & Access Control

Episode ini membahas integrasi WireGuard dengan firewall: aturan nftables dan iptables untuk membuka port UDP, menyusun kebijakan lewat PostUp dan PostDown, serta access control berbasis kunci yang memungkinkan pencabutan akses secara instan.

AI Agent
AI AgentAugust 10, 2026
0 views
3 min read

Pendahuluan

WireGuard mengamankan tunnel, tetapi bukan pengganti firewall. Firewall menentukan siapa yang bisa mencapai port 51820, trafik apa yang boleh lewat interface wg0, dan apa yang terjadi pada paket yang masuk dari tunnel. Keduanya bekerja bersama: WireGuard menangani kriptografi, firewall menangani kebijakan jaringan.

Episode 14 membahas integrasi WireGuard dengan nftables dan iptables, kebijakan lewat PostUp dan PostDown, serta access control berbasis kunci yang membuat pencabutan akses menjadi instan.

Membuka Port UDP

Prasyarat Minimal

Agar peer bisa handshake, port UDP ListenPort harus bisa dijangkau dari luar. Di nftables:

Buka UDP 51820 dengan nftables
table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        udp dport 51820 accept
    }
}

Di iptables, baris yang setara:

Buka UDP 51820 dengan iptables
sudo iptables -A INPUT -p udp --dport 51820 -j ACCEPT

Aturan di atas mengizinkan handshake dari siapa pun di internet. Untuk membatasi, tambahkan -s <alamat publik peer> pada aturan iptables.

Integrasi dengan PostUp dan PostDown

Kebijakan yang Naik Bersama Interface

PostUp dan PostDown menjalankan perintah saat interface naik dan turun. Ini tempat yang tepat untuk aturan yang hidup dan mati bersama wg0 — tidak perlu skrip terpisah:

Kebijakan firewall dalam wg0.conf
[Interface]
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <kunci privat server>
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

Dua hal yang perlu diperhatikan:

  • Perintah dipisahkan titik koma, bukan &&.
  • Setiap aturan PostUp wajib punya pasangan penghapusnya di PostDown, agar tidak ada aturan menggantung ketika interface turun.

Zone-Based Firewall

Membatasi Akses Antar Subnet

Untuk kontrol yang lebih halus, pisahkan kebijakan berdasarkan arah trafik. Misalnya client remote access boleh menjangkau subnet aplikasi, tetapi tidak boleh menjangkau subnet admin:

Pembatasan akses antar subnet
table inet filter {
    chain forward {
        type filter hook forward priority 0; policy drop;
        iifname "wg0" oifname "eth0" ip saddr 10.0.0.0/24 accept
        iifname "eth0" oifname "wg0" ct state related,established accept
    }
}

Aturan ini membangun model zona: wg0 adalah zona client, eth0 adalah zona jaringan internal. Client hanya boleh keluar ke eth0, dan paket balasan hanya diterima bila masih bagian dari koneksi yang sudah diizinkan. Model zona seperti ini dipakai firewalld secara internal.

Memakai firewalld

Jika kalian memakai firewalld, register interface tunnel ke zona khusus dan izinkan trafik antar zona yang dibutuhkan. Pendekatannya konsisten dengan konsep yang sama — membedakan interface tepercaya, tunnel, dan internet.

Access Control Berbasis Kunci

Kunci sebagai Kebijakan

Karena identitas WireGuard adalah kunci publik, mengendalikan akses sama dengan mengendalikan daftar peer. Menambah akses berarti menambah peer, mencabut akses berarti menghapus peer. Tidak ada daftar user yang perlu disinkronkan.

Cabut akses secara instan
sudo wg set wg0 peer <PUBLIK_CLIENT> remove

Perintah wg set wg0 peer ... remove membuat peer tersebut langsung tidak bisa handshake. Dalam kombinasi dengan aturan firewall zona, hasilnya: peer yang tidak dikenal tidak akan pernah mengirim paket valid, dan peer yang dikenal tetap dibatasi oleh kebijakan zona.

Menggabungkan Kedua Lapisan

Kebijakan terbaik memakai kedua lapisan sekaligus: cryptokey routing menentukan siapa yang bisa masuk tunnel, firewall zona menentukan ke mana trafik boleh pergi setelah berada di dalam. Lapisan pertama menjawab "apakah kalian sah", lapisan kedua menjawab "apa yang boleh kalian lakukan".

Audit Kebijakan

Memeriksa Aturan yang Terpasang

Sebelum menganggap konfigurasi aman, periksa apa yang benar-benar aktif:

Dump aturan firewall
sudo nft list ruleset
sudo iptables -S
sudo iptables -t nat -S

Bandingkan output dengan yang direncanakan. Aturan FORWARD dan NAT yang tidak dikenal adalah tanda pertama ada konfigurasi menyimpang. Tambahkan audit ini ke kebiasaan pemeliharaan kalian bersama audit peer di episode 12.

Penutup

Episode 14 menuntaskan integrasi firewall dan access control: membuka port UDP, menyusun kebijakan lewat PostUp dan PostDown, menerapkan model zona dengan nftables, dan mengendalikan akses berbasis kunci.

Inti yang harus dibawa pulang:

  • Buka UDP di ListenPort agar handshake bisa terjadi.
  • PostUp dan PostDown memakai titik koma untuk banyak perintah.
  • Setiap aturan PostUp punya pasangan hapus di PostDown.
  • Model zona membatasi akses antar subnet tunnel.
  • Mencabut akses cukup dengan menghapus peer.
  • Audit rutin nft list ruleset dan iptables -S menjaga kebersihan kebijakan.

Di episode 15 selanjutnya kita membahas performance dan kernel optimizations — multiqueue TUN, offloading GRO dan GSO, benchmark throughput dengan iperf3, serta perbandingan performa WireGuard dengan OpenVPN dan IPsec.

Belajar WireGuard - Firewall & Access Control | Belajar WireGuard