Belajar UFW - Konsep Dasar & Arsitektur Utama
Episode 2 of 23

Belajar UFW - Konsep Dasar & Arsitektur Utama

Membedah cara kerja UFW dari perintah Python hingga aturan netfilter di kernel lewat backend iptables atau nftables (iptables-nft), serta memahami struktur file konfigurasi /etc/default/ufw, /etc/ufw/*.rules, dan urutan evaluasi before, user, dan after

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

Pendahuluan

Episode 1 memperkenalkan UFW sebagai frontend yang menyederhanakan iptables. Sekarang saatnya membuka kap mesin: apa yang sebenarnya terjadi di balik perintah ufw allow 22/tcp? Episode 2 membedah arsitektur UFW — dari Python wrapper, backend iptables/nftables, hingga file-file konfigurasi yang menyimpan ruleset kalian.

Mengapa ini penting? Karena saat terjadi masalah (port tidak kebuka, ruleset tiba-tiba berubah, konflik dengan Docker), kalian harus tahu di mana mencari: di frontend UFW, di backend netfilter, atau di file konfigurasi. Memahami arsitektur mengubah kalian dari pengguna yang menghafal perintah menjadi administrator yang bisa mendiagnosis.

Perjalanan Sebuah Perintah

Ketika kalian mengetik ufw allow 80/tcp, ini yang terjadi:

100%

Alurnya: UFW (Python) menerima perintah, menormalkannya menjadi aturan lengkap (memasukkan source/destination, protocol, interface, dan default policies), lalu menulis aturan ke backend — iptables-restore untuk sistem legacy atau iptables-nft/nftables untuk sistem modern. Kernel mengeksekusi aturan itu lewat framework netfilter.

Backend: iptables vs nftables (iptables-nft)

UFW tidak berkomunikasi langsung dengan kernel — ia memakai satu dari dua backend:

BackendPenjelasanKapan Dipakai
iptables (legacy)Perintah iptables tradisionalKernel/Distro lawas
iptables-nftCompatibility layer yang menulis aturan dalam format nftablesDefault di Ubuntu/Debian modern

iptables-nft adalah keajaiban kompatibilitas: ia menerima sintaks iptables yang kalian kenal, tetapi menuliskan hasilnya sebagai aturan nftables di kernel. Ini berarti UFW yang sudah kalian kenal bisa berjalan di atas backend netfilter modern tanpa mengubah apa pun.

Cek backend mana yang aktif di sistem kalian:

Cek backend netfilter aktif
sudo ufw status verbose
ls -l /usr/sbin/iptables

Output ls -l /usr/sbin/iptables biasanya menunjuk ke iptables-nft (via symlink atau update-alternatives) di distro modern. Episode 18 akan kembali ke topik ini saat troubleshooting backend.

Note

Istilah penting: netfilter adalah framework di dalam kernel Linux untuk memfilter/memodifikasi paket. iptables/nftables adalah tools user-space untuk mengelola aturannya. UFW adalah lapisan paling atas yang membuat kedua tools itu ramah dipakai.

Struktur File dan Komponen

Ruleset UFW disimpan di dalam beberapa file yang memiliki peran berbeda:

Struktur file UFW
/etc/default/ufw              # konfigurasi utama (IPv6, default policies)
/etc/ufw/
├── before.rules              # aturan sistem, dijalankan PERTAMA (IPv4)
├── before6.rules             # aturan sistem sebelum aturan user (IPv6)
├── after.rules               # aturan sistem, dijalankan TERAKHIR (IPv4)
├── after6.rules              # aturan sistem setelah aturan user (IPv6)
├── user.rules                # ruleset hasil perintah kalian (IPv4)
├── user6.rules               # ruleset hasil perintah kalian (IPv6)
├── sysctl.conf               # setelan kernel yang dikelola UFW
├── applications.d/           # application profiles
└── ufw.conf                  # konfigurasi dasar daemon/status

/etc/default/ufw

File pertama yang harus kalian kenal. Ini berisi default policies dan opsi utama:

/etc/default/ufw (potongan)
# Set to yes to apply rules to support IPv6 traffic
IPV6=yes
 
# Set the default forward policy
DEFAULT_FORWARD_POLICY="DROP"
 
# Set the default input policy
DEFAULT_INPUT_POLICY="DROP"
 
# Set the default output policy
DEFAULT_OUTPUT_POLICY="ACCEPT"
 
# Set the default application policy
DEFAULT_APPLICATION_POLICY="ACCEPT"

Kebijakan default inilah yang menentukan nasib paket yang tidak cocok dengan aturan mana pun. Nilai DROP pada DEFAULT_INPUT_POLICY berarti semua lalu lintas masuk ditolak kecuali diizinkan eksplisit — filosofi default deny yang menjadi fondasi keamanan server (episode 9).

before.rules, user.rules, after.rules

Saat UFW menyusun ruleset lengkap, urutannya selalu before → user → after:

  1. before.rules — aturan sistem penting yang HARUS berlaku duluan, seperti mengizinkan loopback dan menolak paket rusak. Kalian bisa menambah aturan di sini (misalnya NAT untuk port forwarding, episode 13).
  2. user.rules — aturan dari perintah ufw allow/ufw deny/ufw limit yang kalian ketik. Bagian ini jangan diedit manual — biarkan UFW yang mengelolanya.
  3. after.rules — aturan penutup, biasanya untuk logging dan penolakan tambahan.

Urutan ini krusial karena netfilter mengevaluasi aturan secara berurutan — yang pertama cocok menang. Letak sebuah aturan menentukan prioritasnya, dan kita akan memanfaatkannya di episode 13 dan 17.

Urutan evaluasi ruleset
before.rules  user.rules  after.rules
   (system)        (kalian)       (penutup)

Bagaimana UFW Menyimpan Ruleset

Ketika kalian menjalankan ufw allow 80/tcp, UFW melakukan tiga hal sekaligus:

  1. Menambah aturan ke file user.rules (atau user6.rules untuk IPv6).
  2. Memuat ulang ruleset lengkap (before + user + after) ke kernel via iptables-restore/iptables-nft.
  3. Menampilkan konfirmasi seperti Rule added.

Karena itu kalian bisa melihat apa yang sebenarnya disimpan dengan dua cara: lewat frontend (ufw status) atau lewat backend (iptables -L). Perhatikan perbedaannya:

Lihat ruleset dari dua sudut
sudo ufw status
sudo iptables -L INPUT -n -v --line-numbers

ufw status menampilkan versi yang mudah dibaca; iptables -L -n -v menampilkan aturan mentah yang dieksekusi kernel. Jika keduanya tidak konsisten, kalian sedang menghadapi masalah yang akan kita pecahkan di episode 18.

Penutup

Pada episode 2 ini, kalian telah membedah arsitektur UFW dari atas ke bawah.

Inti yang harus dibawa pulang:

  • Alur: perintah UFW (Python) → backend (iptables / iptables-nft) → netfilter kernel.
  • Backend modern memakai iptables-nft, menulis aturan dalam format nftables dengan sintaks iptables.
  • File utama: /etc/default/ufw (policies), before.rules/user.rules/after.rules (urutan eksekusi), applications.d/ (profiles).
  • Default policies DROP (input) + ACCEPT (output) adalah fondasi default deny.
  • Netfilter mengevaluasi aturan berurutan — urutan before → user → after menentukan prioritas.

Di episode 3 selanjutnya, kita mulai hands-on: instalasi, status, dan enabling UFW — memastikan versi 0.36.2, membaca ufw status/status verbose/status numbered, serta mengaktifkan UFW tanpa terkunci dari SSH. Sampai jumpa di episode 3!