Firewall Server Linux: Panduan Lengkap Konfigurasi iptables, nftables, dan UFW
Panduan komprehensif firewall server Linux: dari dasar iptables hingga nftables modern, contoh konfigurasi nyata, tips hardening, dan troubleshooting.
Firewall adalah garis pertahanan pertama setiap server. Di Linux, tiga pilihan utama: iptables (legacy), nftables (modern), dan UFW (frontend untuk iptables/nftables). Artikel ini membahas semuanya secara mendalam dengan contoh konfigurasi siap pakai.
Linux Firewall Stack: Sejarah Singkat
Netfilter adalah framework firewall di kernel Linux. iptables adalah tool userspace untuk mengelola aturan netfilter — diperkenalkan di kernel 2.4 (2001). nftables — penerus iptables — hadir di kernel 3.13 (2014) dan menjadi default di Fedora, RHEL 9, Debian 12, dan Ubuntu 22.04+.
iptables: Masih Relevan di 2026
iptables masih digunakan secara luas. Banyak tool — Docker, Kubernetes (kube-proxy iptables mode), fail2ban, crowdsec — masih mengandalkan iptables. Jika server Anda menjalankan container atau menggunakan tool tersebut, iptables tetap diperlukan.
Chain Dasar iptables
INPUT — untuk traffic masuk ke server. FORWARD — untuk traffic yang melewati server (routing). OUTPUT — untuk traffic keluar dari server. Tabel: filter (default), nat, mangle, raw, security.
Konfigurasi Dasar iptables
Aktifkan IP forwarding untuk NAT/routing: sysctl net.ipv4.ip_forward=1. Set default policy ke DROP untuk INPUT dan FORWARD, ACCEPT untuk OUTPUT. Izinkan SSH (port 22/tcp), HTTP (80/tcp), HTTPS (443/tcp). Izinkan established and related connections. Jangan lupa simpan dengan iptables-save > /etc/iptables/rules.v4.
nftables: Firewall Masa Depan
nftables dirancang untuk menggantikan iptables dengan sintaks yang lebih bersih, performa lebih baik, dan fitur lebih modern: aturan untuk IPv4 dan IPv6 dalam satu file, set dan dictionary untuk manajemen IP list yang efisien, chain priority untuk kontrol granular, dan bytecode di kernel yang lebih optimal.
Konfigurasi Dasar nftables
File konfigurasi: /etc/nftables.conf. Gunakan table inet filter untuk menangani IPv4 dan IPv6 sekaligus. Input chain dengan base hook input priority 0. Policy drop default untuk semua traffic inbound. Allow specific services — SSH, HTTP, HTTPS, DNS. Rate limit SSH untuk mencegah brute force. Logging untuk dropped packets.
nftables Sets untuk Manajemen IP
Fitur andalan nftables: sets. Definisikan list IP yang bisa diizinkan atau diblokir, lalu gunakan di rule. Contoh: ip saddr @whitelist accept. Sets bisa di-update tanpa reload seluruh aturan — ideal untuk dynamic blocklist dari fail2ban atau crowdsec.
UFW: Simplifikasi untuk Pemula
UFW (Uncomplicated Firewall) adalah frontend untuk iptables/nftables. Syntax sederhana: ufw allow 22/tcp, ufw deny 23/tcp. Cocok untuk server sederhana dan pengguna yang tidak ingin mempelajari iptables/nftables secara mendalam.
UFW menggunakan profil aplikasi: ufw allow 'Nginx Full', ufw allow 'OpenSSH'. Profil disimpan di /etc/ufw/applications.d. Untuk setup awal server, UFW sudah cukup. Tapi untuk konfigurasi kompleks, nftables langsung lebih fleksibel.
Advanced Firewall Techniques
GeoIP Blocking
Blokir traffic dari negara tertentu dengan xt_geoip (iptables) atau nftables sets dengan data GeoIP. Efektif mengurangi serangan dari region yang tidak melayani user Anda.
Connection Tracking
Kernel connection tracking memungkinkan stateful firewall. Aturan allow established/related connections memastikan traffic balik dari koneksi yang diizinkan tetap bisa lewat.
Rate Limiting
Proteksi terhadap brute force dengan rate limiting: di nftables dengan limit rate, di iptables dengan recent module atau hashlimit.
Common Firewall Mistakes
1. Lupa allow established connections → server tidak bisa menerima response
2. Default policy ACCEPT untuk INPUT → firewall tidak berguna
3. Tidak save rules → rules hilang setelah reboot
4. Salah urutan rules — rule yang match duluan dieksekusi, yang di bawah tidak akan tercapai
5. Tidak test dari remote → terkunci di luar server
Testing dan Troubleshooting
Gunakan nmap untuk port scanning dari luar: nmap -sS -p- your-server.com. Cek apakah hanya port yang diizinkan yang terbuka. Gunakan tcpdump atau tshark untuk debug: tcpdump -i eth0 port 80. Cek conntrack table untuk melihat koneksi aktif: conntrack -L.
Kesimpulan
Untuk server baru: mulai dengan nftables. Sintaks modern, performa lebih baik, dan fitur lebih kaya. Tapi pertahankan iptables jika Anda menggunakan Docker atau tool yang depend padanya. UFW cocok untuk setup sederhana. Apapun pilihannya, prinsip firewall sama: default deny, allow only what's needed, log everything, test thoroughly.