Belajar Iptables - Mangle, TOS & Rate Limiting
Episode 11 of 23

Belajar Iptables - Mangle, TOS & Rate Limiting

Menjelajahi tabel mangle untuk memodifikasi paket lewat MARK TTL dan TOS, serta membangun rate limiting dengan modul limit untuk membatasi laju paket dan melindungi layanan dari flood dan brute-force attack

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

Pendahuluan

Sejauh ini kalian belajar memilih paket (match) dan menentukan nasibnya (target). Episode 11 membuka dimensi baru: mengubah isi paket itu sendiri. Tabel mangle memberi kalian kemampuan menandai paket dengan MARK, mengubah TTL/TOS, dan — yang paling sering dipakai — membatasi laju paket dengan modul limit.

Mengapa topik ini penting? Karena firewall produksi tidak hanya menjawab "terima atau tolak", tapi juga "seberapa sering". Layanan yang tidak di-rate-limit adalah korban empuk brute-force dan flood. Episode ini adalah jembatan menuju anti-scan & DDoS mitigation di episode 16.

Tabel Mangle: Mengubah Paket

Tabel mangle menangani modifikasi paket di semua chain hook. Tiga target utamanya:

TargetFungsi
MARKMenandai paket dengan angka untuk routing & QoS (tidak mengubah paket asli di jaringan)
TTLMengubah Time-To-Live paket
TOSMengubah Type of Service / DSCP field

Contoh menandai trafik untuk routing policy:

Mark trafik untuk policy routing
sudo iptables -t mangle -A PREROUTING -p tcp --dport 443 -j MARK --set-mark 10

Paket yang di-MARK kemudian bisa diarahkan lewat tabel routing terpisah — dasar teknik policy-based routing (misal memaksa trafik video lewat jalur tertentu):

Routing berdasarkan mark
echo "100 stream" | sudo tee -a /etc/iproute2/rt_tables
sudo ip route add default via 192.168.1.1 dev eth1 table stream
sudo ip rule add fwmark 10 table stream

Contoh mengubah TTL — kadang dipakai untuk menutup jejak hop count atau memenuhi persyaratan ISP tertentu:

Ubah TTL paket keluar
sudo iptables -t mangle -A POSTROUTING -o eth0 -j TTL --ttl-set 64

Rate Limiting dengan Modul limit

Modul limit membatasi berapa banyak paket yang lolos dalam satuan waktu. Dua parameternya:

  • --limit — laju rata-rata (contoh 5/min, 1/sec, 100/hour).
  • --limit-burst — jatah awal sebelum pembatasan berlaku.
Batas 5 paket per menit
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 5/min --limit-burst 10 -j ACCEPT

Baca aturannya: "izinkan ping, tapi maksimal 5 paket per menit setelah 10 paket pertama habis". --limit-burst adalah bucket awal yang membuat burst kecil tetap diizinkan sebelum throttle bekerja.

Tip

Perhatikan: -m limit ... -j ACCEPT adalah pola allow-with-limit — paket yang lolos diterima, sisanya jatuh ke aturan berikutnya (biasanya LOG + DROP). Rate limiting di iptables selalu bekerja dua aturan: satu yang mengizinkan dalam batas, satu yang menolak sisanya.

Melindungi SSH dari Brute-Force

Pola rate limiting yang paling sering dipakai di dunia nyata: batasi koneksi SSH baru (state NEW) supaya penyerang tidak bisa menebak password tanpa henti.

Rate limit koneksi SSH baru
sudo iptables -A INPUT -p tcp --dport 22 -m conntrack --ctstate NEW -m limit --limit 3/min --limit-burst 5 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "SSH-FLOOD: "
sudo iptables -A INPUT -p tcp --dport 22 -j DROP

Kombinasi tiga aturan:

  1. Koneksi SSH baru diterima selama dalam batas 3/min (burst 5).
  2. Koneksi di luar batas di-log.
  3. Sisanya di-DROP.

Kunci keefektifannya adalah match --ctstate NEW — hanya koneksi baru yang dibatasi; koneksi yang sudah ESTABLISHED (sesi SSH aktif) tetap bebas lewat aturan ESTABLISHED,RELATED di atas chain.

Proteksi Flood ICMP & SYN Dasar

Pola yang sama untuk memadamkan flood sederhana:

Batasi ping flood
sudo iptables -A INPUT -p icmp --icmp-type echo-request -m limit --limit 1/sec -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type echo-request -j DROP

Untuk SYN flood, batasi laju SYN NEW ke layanan publik:

Batasi SYN baru
sudo iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -m limit --limit 100/sec -j ACCEPT
sudo iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -j DROP

Warning

Rate limiting limit adalah token bucket yang murah — bagus untuk meredam noise dan brute-force ringan. Untuk serangan volume tinggi yang nyata (SYN flood besar, DDoS), iptables limit bukan pengganti mitigasi lapisan jaringan (anycast, CDN, atau firewall khusus). Anggap episode 11 sebagai pengaman dasar, dan episode 16 sebagai penguatnya.

Common Pitfalls

  • -m limit dianggap sebagai "rate limit saja" — sebenarnya ia allow-with-limit; selalu pasangkan dengan aturan DROP di belakangnya.
  • Membatasi ESTABLISHED — salah sasaran; limit hanya perlu menyentuh paket NEW.
  • MARK di POSTROUTING — terlalu lambat untuk policy routing; mark harus dibuat di PREROUTING/OUTPUT.
  • Lupa --limit-burst — tanpa burst, sejumlah kecil paket awal (termasuk koneksi sah) ikut kena throttle.

Penutup

Inti yang harus dibawa pulang:

  • Tabel mangle memodifikasi paket: MARK (untuk policy routing), TTL, TOS.
  • Modul limit membatasi laju: --limit (rata-rata) + --limit-burst (jatah awal).
  • Pola baku: allow-with-limit di atas, LOG + DROP di bawahnya.
  • Rate limit diterapkan pada paket NEW — jangan pernah membatasi ESTABLISHED.

Di episode 12 selanjutnya kita akan membahas logging & monitoring — target LOG dengan --log-prefix dan --log-level, pola LOG + DROP untuk aturan yang menolak sambil mencatat, memantau counter per-rule dengan watch, dan mendeteksi pemindaian port lewat paket NEW. Sampai jumpa di episode 12!

Belajar Iptables - Mangle, TOS & Rate Limiting | Belajar Iptables