Menyelami aturan evaluasi netfilter dan urutan before, user, after, melakukan audit ruleset dengan ufw status numbered, serta menyusun best practice: least privilege, pencatatan log, dan dokumentasi setiap perubahan ruleset di server produksi

Sepanjang series ini kita menyebut "urutan aturan itu penting" berkali-kali. Episode 17 menuntaskan janji itu: rule ordering — bagaimana netfilter mengevaluasi aturan, bagaimana UFW membangun urutannya, dan bagaimana kalian memanfaatkannya. Setelah itu, kita rangkum best practice yang menjadikan kalian admin yang bukan sekadar bisa, tapi andal.
Mengapa episode ini penting? Karena sebagian besar bug firewall — port kebuka padahal sudah deny, deny yang tidak pernah bekerja, konflik aturan yang membingungkan — berakar pada kesalahpahaman tentang urutan. Best practice, di sisi lain, adalah apa yang membedakan konfigurasi yang bisa dirawat dari konfigurasi yang menunggu waktu untuk meledak.
Netfilter mengevaluasi paket secara berurutan, aturan pertama yang cocok menang. Kalian sudah melihatnya di episode 2 dan 13. Konsekuensi praktisnya:
Contoh aturan mati:
sudo ufw allow from 10.0.0.0/8 to any port 22 proto tcp
sudo ufw deny from 10.0.0.5 to any port 22 proto tcpKarena allow 10.0.0.0/8 dievaluasi lebih dulu (ditambahkan lebih awal), IP 10.0.0.5 — yang ada di dalam subnet — tetap lolos; aturan deny tidak pernah dipertimbangkan. Ini contoh nyata mengapa urutan adalah logika, bukan detail.
Urutan evaluasi global dari episode 2 dan 11:
1. before.rules (system) — loopback, invalid, established, ICMP
2. user.rules (rules kalian) — dari ufw allow/deny/limit, diurutkan
sesuai posisinya
3. after.rules (penutup) — logging deny, aturan terakhir
4. default policies — jaring pengaman terakhirDi dalam blok user.rules, urutan mengikuti posisi — yang ditambahkan lebih awal di baris lebih atas. ufw insert (episode 6) mengubah posisi ini.
Audit adalah pemeriksaan berkala atas kesehatan ruleset. Alat utamanya ufw status numbered:
sudo ufw status numberedStatus: active
To Action From
-- ------ ----
[ 1] 22/tcp ALLOW IN Anywhere
[ 2] 10.0.0.5 22/tcp DENY IN 10.0.0.5
[ 3] 80/tcp ALLOW IN Anywhere
[ 4] 443/tcp ALLOW IN Anywhere
[ 5] 8080/tcp ALLOW IN Anywhere
[ 6] 22/tcp (v6) ALLOW IN Anywhere (v6)Saat audit, tanyakan:
[2] deny 10.0.0.5 mati karena [1] allow 22/tcp Anywhere lebih dulu cocok.[5] 8080 harusnya tidak terbuka (episode 15). Bandingkan dengan ss -tlnp.Perbaiki urutan dengan ufw delete + ufw insert (episode 6 dan 8):
sudo ufw delete 2
sudo ufw insert 1 deny from 10.0.0.5 to any port 22 proto tcpSekarang deny dievaluasi pertama — 10.0.0.5 benar-benar ditolak.
Buka seminimal mungkin, se-spesifik mungkin:
80/tcp, 443/tcp saja.Setiap aturan harus bisa dijawab: "siapa yang butuh ini, dan kenapa?" Jika tidak ada jawabannya, hapus aturannya.
ufw logging on (level low) untuk produksi — catat yang ditolak, tanpa membanjiri disk (episode 12). Log adalah bahan bakar monitoring dan forensik.
Setiap perubahan ruleset harus terdokumentasi. Kebiasaan sederhana yang luar biasa efeknya:
date >> ~/ufw-lab/CHANGELOG.md
echo "- Buka 8080/tcp untuk staging (tiket #123)" >> ~/ufw-lab/CHANGELOG.mdSaat audit, CHANGELOG.md ini menjelaskan mengapa sebuah aturan ada — sesuatu yang tidak bisa dijawab oleh ufw status mana pun.
Jadwalkan audit ruleset secara rutin (mingguan/bulanan):
sudo ufw status numbered
sudo ufw show added
sudo ss -tlnpBandingkan tiga output: aturan aktif vs perintah asli vs layanan yang benar-benar berjalan. Ketidakcocokan = pekerjaan menunggu.
Ubah aturan satu per satu, verifikasi dampaknya (episode 16), baru lanjut. Jangan menulis 10 aturan sekaligus lalu "berharap" semuanya benar.
Tip
Perlakuan ruleset seperti kode: versioned (git), code-reviewed (anggota tim lain membaca sebelum apply), dan diuji (ujian koneksi dari mesin lain). Ini jembatan ke episode 20-21, di mana ruleset benar-benar menjadi kode yang dikelola terpusat.
status numbered.allow untuk layanan yang sama. Sederhanakan.Pada episode 17 ini, kalian telah menguasai rule ordering dan best practice.
Inti yang harus dibawa pulang:
before → user → after → default policy.ufw status numbered adalah alat audit utama; bandingkan dengan ss -tlnp dan ufw show added.Di episode 18 selanjutnya, kita memasuki mode dokter: Troubleshooting Koneksi & Rules — mendiagnosis dengan ufw status verbose, iptables -L -n -v, ss -tlnp, dan tcpdump, plus memecahkan kasus klasik: terkunci SSH, port tidak kebuka, dan konflik IPv6. Sampai jumpa di episode 18!