Belajar UFW - Aturan Lanjut (IP Spesifik & Subnet)
Episode 6 of 23

Belajar UFW - Aturan Lanjut (IP Spesifik & Subnet)

Mendalami aturan UFW berbasis IP: mengizinkan satu IP dengan ufw allow from, membatasi seluruh subnet CIDR seperti 203.0.113.0/24, menyusun kombinasi source, destination port, dan protocol dalam satu rule, serta menempatkan aturan di posisi tertentu dengan ufw insert

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

Pendahuluan

Episode 5 memperkenalkan from untuk membatasi IP sumber. Episode 6 menggali lebih dalam: subnet CIDR, kombinasi penuh source-destination-protocol, dan ufw insert. Di sinilah aturan kalian berubah dari "membuka port" menjadi "membangun kebijakan akses" yang sesungguhnya.

Mengapa ini penting? Karena membuka port untuk Anywhere di server produksi adalah undangan eksplisit bagi pemindai. Ruleset profesional membatasi: SSH hanya untuk subnet kantor, database hanya untuk IP aplikasi, API internal hanya untuk subnet VPC. Episode ini mengajarkan kalian menulis aturan itu dengan benar.

Allow dari Satu IP Spesifik

Bentuk paling dasar — mengizinkan sebuah IP penuh akses ke satu port:

Allow satu IP ke port 22
sudo ufw allow from 203.0.113.10 to any port 22 proto tcp
Output
Rule added

Di status, aturannya tampil seperti ini:

Cek status
sudo ufw status
 
To                         Action      From
--                         ------      ----
22/tcp                     ALLOW       203.0.113.10
22/tcp (v6)                ALLOW       Anywhere (v6)

Perhatikan: aturan IPv4 dibatasi ke 203.0.113.10, tetapi versi IPv6-nya tetap Anywhere (v6) — karena kita belum menentukan IP versi 6. Jika ingin IPv6 juga dibatasi, gunakan alamat IPv6 (episode 11 membahas detailnya).

Allow dari Subnet (CIDR)

Notasi CIDR membatasi sekelompok IP sekaligus. Contoh paling umum di dunia kerja:

Allow subnet kantor ke SSH
sudo ufw allow from 192.168.1.0/24 to any port 22 proto tcp

Artinya: hanya perangkat dalam 192.168.1.0–192.168.1.255 yang boleh SSH. Beberapa contoh subnet yang sering muncul:

SubnetJangkauanKegunaan Umum
10.0.0.0/810.0.0.0–10.255.255.255Jaringan internal besar / VPC
192.168.0.0/16192.168.0.0–192.168.255.255LAN privat klasik
172.16.0.0/12172.16.0.0–172.31.255.255Private network (Docker default)
100.64.0.0/10100.64.0.0–100.127.255.255CGNAT (jaringan provider)

Note

Jika kalian lupa menghitung subnet, gunakan tool bantu: ipcalc 192.168.1.0/24 atau sipcalc. Verifikasi dengan ip addr bahwa alamat mesin kalian memang berada di dalam subnet yang diizinkan — kesalahan paling umum adalah mengizinkan subnet yang salah dan terkunci.

Kombinasi Penuh: Source, Destination, Port, Protocol

Kekuatan UFW ada di kombinasinya. Bentuk lengkap:

Kombinasi lengkap
sudo ufw allow from 10.0.0.0/8 to 10.0.0.5 port 5432 proto tcp

Terjemahan: izinkan lalu lintas dari subnet 10.0.0.0/8 menuju IP 10.0.0.5 port 5432 (PostgreSQL) lewat TCP. Di sini muncul bagian destination IP (to 10.0.0.5) — berguna untuk server multi-layanan di mana kalian ingin membatasi akses ke IP internal tertentu saja.

Pola Praktik yang Sering Dipakai

Database internal — hanya aplikasi di subnet yang boleh menjangkau:

PostgreSQL hanya untuk subnet aplikasi
sudo ufw allow from 10.0.1.0/24 to any port 5432 proto tcp

Backup/agent — mesin backup dari subnet khusus:

Agent monitoring dari subnet monitoring
sudo ufw allow from 10.0.9.0/24 to any port 9100 proto tcp

Admin panel — hanya IP kantor:

Panel admin dari IP kantor
sudo ufw allow from 203.0.113.99 to any port 8443 proto tcp

Pola yang konsisten terlihat: layanan ekspos publik (80/443) → Anywhere; layanan internal → subnet/IP spesifik. Ini prinsip least privilege yang akan kita tuntaskan di episode 17.

ufw insert: Menempatkan Aturan di Posisi Tertentu

Secara default aturan baru ditambahkan di bagian bawah blok aturan user. Kadang kalian butuh aturan yang dievaluasi lebih dulu — misalnya deny yang harus menang atas allow lain yang lebih permisif. Di sinilah ufw insert bekerja.

Lihat dulu posisi saat ini:

Lihat nomor aturan
sudo ufw status numbered
Contoh output
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 80/tcp                     ALLOW IN    Anywhere
[ 3] 443/tcp                    ALLOW IN    Anywhere

Sekarang sisipkan aturan deny di posisi 1 — sehingga dievaluasi paling awal:

Insert deny di posisi 1
sudo ufw insert 1 deny from 203.0.113.66 to any port 22 proto tcp
Output
Rule inserted

Hasilnya, 203.0.113.66 akan ditolak sebelum aturan allow 22/tcp sempat mencocokkannya. Ingat dari episode 2: netfilter mengevaluasi berurutan, yang pertama cocok menang. Posisi = prioritas.

Warning

ufw insert menulis ke posisi dalam blok user rules — bukan ke posisi global ruleset. Aturan di before.rules tetap dievaluasi lebih dulu apa pun nomor insert kalian. Untuk prioritas di atas aturan sistem, kalian harus mengedit before.rules (episode 13 dan 17).

Common Pitfalls

  1. Subnet salah hitung: 192.168.1.0/23 mencakup 192.168.1.0–192.168.2.255, bukan hanya 192.168.1.x. Verifikasi dengan ipcalc.
  2. Lupa destination IP: ufw allow from 10.0.0.0/8 to any port 5432 membuka PostgreSQL ke semua interface mesin — kalau mau hanya ke IP internal, sebutkan to <IP-internal>.
  3. Insert tanpa cek posisi: selalu jalankan ufw status numbered sebelum ufw insert agar nomornya benar.
  4. Deny vs allow yang tumpang tindih: jika allow from 10.0.0.0/8 to any port 22 ada di posisi 1 dan deny di posisi 2, deny-nya tidak pernah dievaluasi untuk traffic 10.0.0.0/8. Urutan benar-benar menentukan hasil.

Penutup

Pada episode 6 ini, kalian telah menguasai aturan lanjut berbasis IP.

Inti yang harus dibawa pulang:

  • ufw allow from <IP> membatasi satu sumber; from <subnet>/<prefix> membatasi sekelompok IP.
  • Kombinasi penuh from SOURCE to DEST port PORT proto PROTO memberi kendali presisi satu baris.
  • Layani pola: publik → Anywhere, internal → subnet/IP spesifik (least privilege).
  • ufw insert <num> ... menempatkan aturan di posisi tertentu; posisi = prioritas evaluasi.
  • Selalu verifikasi subnet dan posisi aturan sebelum menulis.

Di episode 7 selanjutnya, kita beralih ke cara UFW mengelola layanan: Application Profilesufw app list, lokasi profil di /etc/ufw/applications.d/, mengaktifkan ufw allow 'OpenSSH', dan membuat profil kustom untuk aplikasi internal. Sampai jumpa di episode 7!