Firewall Skala ISP Kecil Menggunakan nftables: Blokir Botnet, VPN, dan Tunneling

 

Pendahuluan

Bagi ISP skala kecil atau RT/RW Net, tantangan keamanan utama adalah trafik mencurigakan dari botnet, penyalahgunaan bandwidth oleh VPN/tunneling, dan akses ilegal ke konten terlarang. nftables di Linux menawarkan solusi firewall ringan, efisien, dan fleksibel.

Artikel ini menyajikan praktik nyata dalam menyusun firewall untuk ISP skala kecil yang mampu memblokir:

  • VPN umum seperti OpenVPN, WireGuard, PPTP, L2TP

  • Alat tunneling seperti Psiphon, Shadowsocks, dan proxy

  • Trafik botnet yang sering muncul dari port/ASN tertentu

Kebutuhan

  • Linux router (Debian/Ubuntu/Alpine)

  • nftables terinstal

  • Kemampuan log & analisis (opsional: syslog atau ELK)

Struktur Umum nftables

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
  set whitelist_ips {
    type ipv4_addr;
    elements = { 8.8.8.8, 1.1.1.1, <IP-Layanan-Yang-Diperbolehkan> }
  }

  chain input {
    type filter hook input priority 0; policy drop;

    iif "lo" accept
    ct state established,related accept

    # Allow akses SSH terbatas
    ip saddr @whitelist_ips tcp dport 22 accept

    # Allow DNS
    udp dport 53 accept
  }

  chain forward {
    type filter hook forward priority 0; policy drop;

    # Allow basic browsing dan whitelist
    ip daddr @whitelist_ips accept

    # Blokir port VPN umum
    udp dport {1194, 51820, 1701, 500, 4500} drop   # OpenVPN, WireGuard, L2TP/IPsec
    tcp dport {1723, 1080, 8080, 3128} drop         # PPTP, SOCKS proxy, HTTP proxy

    # Blokir Psiphon & Shadowsocks umum
    udp dport {443, 80} meta length > 512 drop

    # Deteksi dan drop botnet/scan pattern (opsional, basic)
    ip protocol tcp tcp flags & (syn|fin) == (syn|fin) drop
  }
}

Penjelasan

  • Whitelist digunakan untuk menjaga akses ke layanan tertentu (DNS, SSH, CDN, dan sebagainya).

  • Blok VPN dan proxy: memblokir port umum yang sering digunakan oleh VPN dan tunneling.

  • Heuristik paket besar di port 80/443 adalah trik mendeteksi lalu lintas abnormal dari aplikasi seperti Psiphon.

Tips Tambahan

  • Kombinasikan dengan geoip (nftables+ipset) untuk blokir negara tertentu

  • Tambahkan logging: log prefix "DROP_VPN: " untuk analisa

  • Gunakan nft monitor trace untuk debugging aturan

  • Sinkronisasi rules dengan Ansible/script

Penutup

Firewall berbasis nftables sangat cocok untuk ISP kecil dan RT/RW Net karena ringan, efisien, dan sangat fleksibel. Dengan pendekatan whitelist + blok port strategis, kamu bisa melindungi jaringan dari abuse, botnet, dan penyalahgunaan VPN tanpa mengganggu pengguna yang sah.

Selalu uji rules di test-bed sebelum produksi agar tidak salah blokir!

Zero Trust Network (ZTNA) Ringan dengan WireGuard + nftables di LinuxZero Trust Network (ZTNA) Ringan dengan WireGuard + nftables di Linux

 


Pendahuluan

Di era serangan siber yang makin kompleks, model keamanan tradisional berbasis perimeter sudah tidak cukup. Solusi modern adalah Zero Trust Network Access (ZTNA), di mana tidak ada yang dipercaya secara default, bahkan dari dalam jaringan.

Artikel ini membahas cara membuat solusi ZTNA ringan berbasis Linux, menggunakan WireGuard untuk enkripsi dan nftables untuk kontrol akses berbasis identitas dan IP-binding.

Konsep Arsitektur

  • WireGuard VPN sebagai tiket masuk terenkripsi dan identitas pengguna.

  • nftables sebagai kontrol siapa boleh akses ke resource mana.

  • Binding IP dengan public key WireGuard.

Cocok untuk:

  • Admin mengakses server internal (Debian, MikroTik, OLT, dll)

  • Akses teknisi ke router klien atau sistem monitoring

  • Tanpa solusi ZTNA komersial

Langkah 1: Instal WireGuard di Linux

sudo apt update && sudo apt install wireguard -y

Buat folder config dan key:

mkdir -p /etc/wireguard && cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub

Contoh /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <ISI-DARI-server.key>
Address = 10.20.0.1/24
ListenPort = 51820
SaveConfig = true

# Client 1: Teknisi A
[Peer]
PublicKey = <PUBKEY-KLIEN-A>
AllowedIPs = 10.20.0.10/32

Langkah 2: Tambah Klien WireGuard (Teknisi A)

Di sisi klien:

wg genkey | tee client.key | wg pubkey > client.pub

File konfigurasi klien:

[Interface]
PrivateKey = <ISI-DARI-client.key>
Address = 10.20.0.10/32
DNS = 1.1.1.1

[Peer]
PublicKey = <PUBKEY-SERVER>
Endpoint = your.server.ip:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Langkah 3: Konfigurasi nftables untuk Zero Trust

Instalasi:

sudo apt install nftables -y

Contoh /etc/nftables.conf:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;

    iif "lo" accept
    ct state established,related accept

    # allow WireGuard
    tcp dport 51820 accept
    udp dport 51820 accept

    # hanya izinkan IP tertentu dari WireGuard
    ip saddr 10.20.0.10 accept  # Teknisi A
  }

  chain forward {
    type filter hook forward priority 0; policy drop;
    ip saddr 10.20.0.10 ip daddr 192.168.1.0/24 accept  # akses subnet tertentu
  }
}

Aktifkan:

sudo systemctl enable nftables
sudo systemctl start nftables

Tips ZTNA Lanjutan

  • Gunakan 1 key per orang → identitas unik.

  • Pantau koneksi: wg show

  • Kombinasikan dengan fail2ban

  • Aktifkan logging di nftables

  • Tambahkan notifikasi Telegram untuk koneksi mencurigakan

Bonus: Skrip Auto-Tambahkan Peer

#!/bin/bash
NAME=$1
IP=$2

wg genkey | tee ${NAME}.key | wg pubkey > ${NAME}.pub

echo "[Peer]
PublicKey = $(cat ${NAME}.pub)
AllowedIPs = ${IP}/32" >> /etc/wireguard/wg0.conf

wg addconf wg0 <(wg-quick strip wg0)

Penutup

ZTNA tidak harus mahal dan kompleks. Dengan WireGuard dan nftables, kamu bisa menciptakan sistem otentikasi berbasis identitas dan IP secara ringan, cepat, dan aman.

Zero Trust Network (ZTNA) Ringan dengan WireGuard + nftables di Linux

Pendahuluan

Di era serangan siber yang makin kompleks, model keamanan tradisional berbasis perimeter sudah tidak cukup. Solusi modern adalah Zero Trust Network Access (ZTNA), di mana tidak ada yang dipercaya secara default, bahkan dari dalam jaringan.

Artikel ini membahas cara membuat solusi ZTNA ringan berbasis Linux, menggunakan WireGuard untuk enkripsi dan nftables untuk kontrol akses berbasis identitas dan IP-binding.

Konsep Arsitektur

  • WireGuard VPN sebagai tiket masuk terenkripsi dan identitas pengguna.

  • nftables sebagai kontrol siapa boleh akses ke resource mana.

  • Binding IP dengan public key WireGuard.

Cocok untuk:

  • Admin mengakses server internal (Debian, MikroTik, OLT, dll)

  • Akses teknisi ke router klien atau sistem monitoring

  • Tanpa solusi ZTNA komersial

Langkah 1: Instal WireGuard di Linux

sudo apt update && sudo apt install wireguard -y

Buat folder config dan key:

mkdir -p /etc/wireguard && cd /etc/wireguard
umask 077
wg genkey | tee server.key | wg pubkey > server.pub

Contoh /etc/wireguard/wg0.conf:

[Interface]
PrivateKey = <ISI-DARI-server.key>
Address = 10.20.0.1/24
ListenPort = 51820
SaveConfig = true

# Client 1: Teknisi A
[Peer]
PublicKey = <PUBKEY-KLIEN-A>
AllowedIPs = 10.20.0.10/32

Langkah 2: Tambah Klien WireGuard (Teknisi A)

Di sisi klien:

wg genkey | tee client.key | wg pubkey > client.pub

File konfigurasi klien:

[Interface]
PrivateKey = <ISI-DARI-client.key>
Address = 10.20.0.10/32
DNS = 1.1.1.1

[Peer]
PublicKey = <PUBKEY-SERVER>
Endpoint = your.server.ip:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25

Langkah 3: Konfigurasi nftables untuk Zero Trust

Instalasi:

sudo apt install nftables -y

Contoh /etc/nftables.conf:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;

    iif "lo" accept
    ct state established,related accept

    # allow WireGuard
    tcp dport 51820 accept
    udp dport 51820 accept

    # hanya izinkan IP tertentu dari WireGuard
    ip saddr 10.20.0.10 accept  # Teknisi A
  }

  chain forward {
    type filter hook forward priority 0; policy drop;
    ip saddr 10.20.0.10 ip daddr 192.168.1.0/24 accept  # akses subnet tertentu
  }
}

Aktifkan:

sudo systemctl enable nftables
sudo systemctl start nftables

Tips ZTNA Lanjutan

  • Gunakan 1 key per orang → identitas unik.

  • Pantau koneksi: wg show

  • Kombinasikan dengan fail2ban

  • Aktifkan logging di nftables

  • Tambahkan notifikasi Telegram untuk koneksi mencurigakan

Bonus: Skrip Auto-Tambahkan Peer

#!/bin/bash
NAME=$1
IP=$2

wg genkey | tee ${NAME}.key | wg pubkey > ${NAME}.pub

echo "[Peer]
PublicKey = $(cat ${NAME}.pub)
AllowedIPs = ${IP}/32" >> /etc/wireguard/wg0.conf

wg addconf wg0 <(wg-quick strip wg0)

Penutup

ZTNA tidak harus mahal dan kompleks. Dengan WireGuard dan nftables, kamu bisa menciptakan sistem otentikasi berbasis identitas dan IP secara ringan, cepat, dan aman.

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | coupon codes