Menguasai empat operasi manipulasi aturan iptables: -A append di akhir chain, -I insert di posisi tertentu, -D delete dengan nomor baris atau spesifikasi lengkap, dan -R replace, beserta pentingnya urutan rule first match wins dan iterasi yang aman

Setelah di episode 5 kita mengenal target, match, dan parameter rule, sekarang kita belajar mengelola aturan yang sudah ada. Firewall jarang dibangun sekali jadi — biasanya diubah berkali-kali: menambah layanan, memindahkan urutan, menghapus aturan yang salah, mengganti yang usang. Empat operasi ini — append, insert, delete, replace — adalah cara kita melakukannya.
Mengapa episode ini krusial? Karena prinsip first match wins dari episode 2 berarti posisi aturan menentukan efektivitasnya. Menambahkan aturan dengan cara yang salah bisa membuat firewall kalian — yang tampak benar di -L — sebenarnya tidak melakukan apa yang kalian inginkan.
-A menambahkan aturan di akhir chain — paling bawah, setelah semua aturan yang ada:
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -L -n --line-numbersChain INPUT (policy DROP)
num target prot opt source destination
1 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
2 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443Aturan baru mendapat nomor 2. Jika chain sudah punya -A INPUT -j DROP di paling bawah, aturan yang di-append setelahnya tidak akan pernah dieksekusi — semua paket sudah di-DROP lebih dulu. Inilah jebakan klasik append.
-I menyisipkan aturan di atas aturan yang ada. Tanpa nomor, aturan masuk di posisi 1 — paling atas:
sudo iptables -I INPUT -s 203.0.113.9 -j DROPUntuk posisi spesifik, sebutkan nomornya:
sudo iptables -I INPUT 3 -p tcp --dport 8080 -j ACCEPT-I INPUT 3 menempatkan aturan di nomor 3, mendorong aturan lama turun satu langkah. Insert adalah cara tercepat menangani masalah urgent — misalnya memblokir IP penyerang yang sedang menyerang — karena aturannya langsung dievaluasi paling awal.
Ada dua cara menghapus: dengan nomor baris atau dengan spesifikasi lengkap:
sudo iptables -D INPUT 2sudo iptables -D INPUT -p tcp --dport 8080 -j ACCEPTCara pertama perlu --line-numbers untuk tahu nomor yang benar. Cara kedua menghapus aturan yang persis sama dengan spesifikasi yang diberikan — berguna saat menulis script idempotent (hapus dulu, lalu append ulang). Kesalahan umum: spesifikasi yang sedikit berbeda dari aturan aslinya tidak akan cocok, dan perintah gagal dengan pesan Bad rule.
Tip
Untuk script, gunakan pola hapus-tanpa-peduli-error dulu, lalu append: iptables -D INPUT ... 2>/dev/null || true diikuti iptables -A INPUT .... Pola ini membuat script idempotent — aman dijalankan berulang kali tanpa menumpuk duplikat aturan.
-R mengganti aturan pada posisi tertentu dengan spesifikasi baru:
sudo iptables -R INPUT 1 -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPTAturan nomor 1 — yang tadinya membuka SSH untuk semua orang — sekarang hanya untuk subnet 10.0.0.0/8. Replace sering dipakai untuk tightening tanpa mengubah jumlah aturan, sehingga posisi aturan lain tidak bergeser.
Prinsip first match wins memberi aturan praktis:
Urutan yang salah adalah sumber bug firewall paling umum:
# SALAH: aturan umum menutupi aturan khusus
sudo iptables -A INPUT -p tcp -j DROP
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT # tidak pernah dieksekusi!
# BENAR: khusus dulu, umum belakangan
sudo iptables -A INPUT -p tcp --dport 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -j DROPPraktik standar mengubah ruleset di server langsung:
sudo iptables -I INPUT -p tcp --dport 22 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -L -n --line-numbers
# verifikasi dengan sesi SSH kedua dari subnet 10.0.0.0/8Jika perubahan bermasalah, hapus secepatnya lewat sesi yang masih hidup:
sudo iptables -D INPUT 1Warning
Jangan pernah merombak banyak aturan sekaligus di mesin produksi tanpa mekanisme rollback. Pola yang aman: ubah satu aturan, verifikasi, lalu lanjut. Kalau harus banyak perubahan, simpan ruleset lama dengan iptables-save dulu (episode 8) supaya bisa dikembalikan dalam satu langkah.
Mengelola chain user-defined berpasangan dengan manipulasi di atas. Buat chain baru, insert/append di dalamnya, dan delete seluruh chain setelah bersih:
sudo iptables -N GUEST
sudo iptables -A GUEST -j DROP
sudo iptables -D GUEST -j DROP
sudo iptables -X GUEST-X hanya berhasil jika chain sudah kosong — urutannya harus delete semua isi dulu, baru hapus chain-nya.
Inti yang harus dibawa pulang:
-A append di akhir, -I insert di posisi (default 1), -D delete (nomor atau spesifikasi), -R replace.Di episode 7 selanjutnya kita akan membahas state & conntrack — module conntrack dengan --ctstate ESTABLISHED,RELATED, perbedaannya dengan module state yang lama, serta cara membangun filter stateful yang membuka koneksi keluar tanpa membuka seluruh port masuk. Sampai jumpa di episode 7!