Belajar NetBSD - Firewall: npf & ipfilter
Episode 12 of 23

Belajar NetBSD - Firewall: npf & ipfilter

Membangun firewall NetBSD: menulis ruleset npf.conf, mengaktifkan NAT, mengelola dengan npfctl, serta memahami ipfilter sebagai opsi legacy dan perbandingannya dengan pf.

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

Pendahuluan

Di episode 11 sebelumnya kita telah melindungi data dengan backup. Namun pertahanan tidak berhenti di penyimpanan — di sisi jaringan juga ada tembok yang harus dibangun. Pada episode ini kita akan membangun firewall NetBSD dengan npf dan ipfilter — menulis ruleset di npf.conf, mengaktifkan NAT, mengelola dengan npfctl, serta memahami ipfilter sebagai opsi legacy dan membandingkannya dengan pf dari OpenBSD.

Konsep Dasar Firewall

Sebelum menulis rules, pahami tiga konsep inti:

KonsepPenjelasan
RuleAturan yang mencocokkan lalu lintas (protokol, port, arah)
PolicySikap default: menolak (block) atau mengizinkan (pass)
StatefulFirewall mengingat koneksi yang sudah diizinkan

Prinsip desain yang paling aman: default deny — tolak semuanya, lalu izinkan hanya yang dibutuhkan. Inilah fondasi npf.

npf: NetBSD Packet Filter

Arsitektur npf

npf adalah firewall stateful yang dikembangkan khusus untuk NetBSD. Keunggulannya: syntax yang bersih, dukungan NAT dan IPv6 yang matang, serta aturan yang bisa di-reload tanpa memutus koneksi. NPF dibangun sebagai kernel module yang dikelola dengan npfctl — dan kita melihatnya sebagai modul npf di episode 9.

Ruleset ditulis di /etc/npf.conf. Contoh lengkap untuk server:

Isi /etc/npf.conf
$if = "wm0"
$ext_ip = 192.168.1.50
 
set default: in block all
set default: out block all
 
group default {
    # Loopback bebas
    pass on lo0 all
    # Traffic keluar diizinkan
    pass out on $if inet family 4 proto { tcp, udp, icmp } \
        from $ext_ip to any
    # SSH masuk
    pass in on $if inet proto tcp from any to $ext_ip port 22 \
        flags S/SA keep state
    # HTTP dan HTTPS
    pass in on $if inet proto tcp from any to $ext_ip port { 80, 443 } \
        flags S/SA keep state
}
# NAT keluar untuk jaringan internal
group "external" on $if {
    nat $if inet from 192.168.1.0/24 to any
}

Mari bedah bagian pentingnya:

BarisArti
set default: in block allDefault deny untuk semua masuk
set default: out block allDefault deny untuk semua keluar
pass on lo0 allLoopback diizinkan penuh
pass out ... keep stateKoneksi keluar diizinkan dan diingat
pass in ... port 22 flags S/SA keep stateHanya koneksi baru SSH yang masuk
nat $if ... to anyNAT untuk jaringan internal

Opsi flags S/SA keep state memastikan hanya koneksi baru (SYN) yang diizinkan masuk; koneksi turunannya dikenali state table.

Info

Variable $if dan $ext_ip di awal file membuat ruleset mudah dipindah antar mesin — cukup ubah dua baris itu, bukan seluruh ruleset. Ini pola yang disarankan untuk konfigurasi terpusat.

Mengelola dengan npfctl

Setelah file ditulis, aktifkan firewall:

Memuat konfigurasi npf
npfctl start
Konfirmasi start
NPF is now active.

Memuat ulang ruleset setelah mengubah npf.conf — tanpa memutus koneksi:

Reload ruleset npf
npfctl reload

Melihat statistik dan ruleset aktif:

Melihat statistik npf
npfctl stats
Contoh output stats
Interface wm0: 15 packets passed, 3 packets blocked

Untuk mematikan sementara:

Menghentikan npf
npfctl stop

Memvalidasi Ruleset

Sebelum memuat ruleset ke sistem produksi, validasi syntax-nya:

Mengecek syntax npf.conf
npfctl validate /etc/npf.conf
Contoh output valid
Configuration is valid.

Mengaktifkan npf di Boot

Aktifkan lewat rc system (ingat pola episode 6):

Tambah ke /etc/rc.conf
npf=YES
npf_flags=""

Saat boot, NetBSD akan menjalankan /etc/rc.d/npf dan memuat /etc/npf.conf.

ipfilter: Opsi Legacy

IPFilter adalah firewall BSD klasik yang juga tersedia di NetBSD. Ia dikelola dengan ipf, ipfstat, dan ipnat (untuk NAT):

Melihat aturan ipf aktif
ipfstat -i
Contoh output ipfstat
pass in quick on wm0 proto tcp from any to 192.168.1.50 port = 22
pass in quick on wm0 proto tcp from any to 192.168.1.50 port = 80

Aturan ipf ditulis di /etc/ipf.conf dan dimuat dengan:

Memuat aturan ipfilter
ipf -Fa -f /etc/ipf.conf

Warning

IPFilter masih didukung di NetBSD, tetapi untuk proyek baru npf adalah pilihan yang disarankan — ia modern, native NetBSD, dan terus dikembangkan. IPFilter ada di sini untuk kompatibilitas dan sistem legacy.

npf vs ipfilter vs pf

NetBSD mendukung tiga firewall yang bisa dipilih:

FirewallAsalKelebihanKekurangan
npfNetBSDModern, NAT+IPv6 matang, reload tanpa putusLebih sedikit contoh online
ipfilterProyek terpisahStabil, kaya fitur, banyak dokumentasiLegacy, syntax lebih tua
pfOpenBSDTerbukti di banyak sistemDi NetBSD kurang dirawat vs npf
Aspeknpfipfilterpf
SyntaxBersih, mirip pfVerboseIkonik OpenBSD
NATnat di rulesetipnat terpisahnat di pf.conf
IPv6Dukungan penuhDukungan baikDukungan penuh
Rekomendasi NetBSDUtamaLegacyAlternatif

Bagi kalian yang baru mulai, npf adalah pilihan paling tepat — satu bahasa untuk aturan, NAT, dan IPv6.

Debugging Firewall

Ketika koneksi tidak berjalan, periksa berurutan:

LangkahPerintah
Apakah npf aktif?npfctl show
Adakah paket di-block?npfctl stats
Ruleset mana yang cocok?npfctl list
Log firewallLihat log kernel dengan dmesg
Melihat ruleset aktif
npfctl list

Penutup

Pada episode 12 ini, kalian telah membangun tembok pertahanan NetBSD: menulis ruleset npf.conf dengan prinsip default deny, mengaktifkan NAT, mengelola firewall dengan npfctl, memahami ipfilter sebagai opsi legacy, serta memetakan perbandingan npf, ipfilter, dan pf.

Inti yang harus dibawa pulang:

  • Gunakan prinsip default deny: block semua, izinkan hanya yang dibutuhkan.
  • Ruleset di /etc/npf.conf; kelola dengan npfctl start/reload/stop/validate.
  • NAT ditulis langsung di dalam ruleset npf — nat $if inet from <net> to any.
  • Aktifkan di boot dengan npf=YES di /etc/rc.conf.
  • Untuk proyek baru, npf adalah pilihan utama; ipfilter untuk sistem legacy.

Di episode 13 selanjutnya kita akan mengamankan pintu administrasi: SSH dan remote access hardening — menyesuaikan sshd_config untuk key ed25519, menonaktifkan root dan password, serta mengamankan akses dengan fail2ban. Sampai jumpa di episode 13!

Belajar NetBSD - Firewall: npf & ipfilter | Belajar NetBSD