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.

Share
Firewall Server Linux: Panduan Lengkap Konfigurasi iptables, nftables, dan UFW

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.