Belajar Iptables - Logging & Monitoring
Episode 12 of 23

Belajar Iptables - Logging & Monitoring

Mencatat aktivitas firewall dengan target LOG dan parameter --log-prefix --log-level, menerapkan pola LOG lalu DROP untuk menolak sambil mendokumentasikan, memantau counter per-rule secara live dengan watch, serta mendeteksi pemindaian port lewat paket NEW

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

Pendahuluan

Firewall yang menolak paket tanpa jejak adalah firewall yang "silent dan misterius": kalian tahu ada yang salah — koneksi gagal, layanan tidak bisa diakses — tapi tidak ada bukti. Episode 12 mengubah itu. Kalian akan belajar mencatat setiap keputusan firewall ke log sistem, dan memantau ruleset secara live untuk melihat apa yang benar-benar terjadi pada paket.

Kombinasi logging + monitoring adalah dasar dari dua hal penting: troubleshooting (episode 18) dan forensik saat insiden (apakah IP ini pernah mencoba masuk? kapan?). Logging yang baik bahkan menyelamatkan reputasi kalian saat bos bertanya "kenapa layanan mati?"

Target LOG: Mencatat Tanpa Menghentikan

Target LOG menulis entri ke log kernel (diteruskan ke syslog) tanpa menghentikan paket. Dua parameter utamanya:

  • --log-prefix — awalan teks untuk memudahkan filter (maksimal 29 karakter).
  • --log-level — level syslog (info, warning, dll).
Aturan LOG dasar
sudo iptables -A INPUT -p tcp --dport 22 -j LOG --log-prefix "IPT:SSH: " --log-level info

Setiap paket SSH yang masuk akan menghasilkan baris seperti ini di log:

text
kernel: IPT:SSH: IN=eth0 OUT= MAC=... SRC=203.0.113.7 DST=192.168.1.10 LEN=60
        TOS=0x00 PREC=0x00 TTL=54 ID=1234 PROTO=TCP SPT=41234 DPT=22 WINDOW=64240 ...

Informasi SRC, DST, SPT, DPT, dan PROTO adalah emas untuk diagnosis — itulah yang akan kita korek di episode 18.

Pola LOG + DROP: Menolak dengan Jejak

Karena LOG tidak menghentikan paket, pola standar untuk aturan yang menolak adalah LOG dulu, DROP setelahnya:

Pola LOG lalu DROP
sudo iptables -A INPUT -s 203.0.113.9 -j LOG --log-prefix "IPT:DROP-SPOOF: "
sudo iptables -A INPUT -s 203.0.113.9 -j DROP

Paket yang cocok akan: dicatat (LOG) → lalu dijatuhkan (DROP). Ini disebut duplicate target — dua aturan terpisah untuk satu tindakan. Gunakan pola ini untuk semua penolakan penting di ruleset produksi.

Warning

Bahaya log flood: pola LOG+DROP pada aturan yang sering di-DROP (misal menolak semua scan dari internet) bisa membanjiri disk dengan ribuan baris per detik. Aturasi (rate limit) log dengan modul limit, arahkan ke file terpisah, atau terapkan rotasi log yang agresif. Di episode 16 kita pasang remnya.

Rate-Limit Log dengan Modul limit

Kombinasi LOG + -m limit mencegah banjir log tanpa kehilangan jejak:

Log yang dibatasi lajunya
sudo iptables -A INPUT -p tcp --dport 22 -m limit --limit 3/min -j LOG --log-prefix "IPT:SSH: "

Sekarang paling banyak 3 entri log per menit untuk trafik port 22 — cukup untuk melihat "ada sesuatu" tanpa membuat disk penuh.

Membaca Log

Di distro modern, log kernel ikut ke journald:

Filter log dari journald
sudo journalctl -k --since "5 min ago" | grep "IPT:"

Di sistem dengan rsyslog klasik, baris kernel masuk ke /var/log/kern.log atau /var/log/syslog:

Filter log klasik
grep "IPT:" /var/log/kern.log

Pola yang konsisten pada --log-prefix (misal IPT:SSH:, IPT:DROP:, IPT:NAT:) membuat pencarian jauh lebih mudah.

Monitoring Live: watch dan Counter

Setiap aturan punya counter paket dan byte (kita lihat sejak episode 4). Untuk memantau secara live:

Pantau counter tiap 2 detik
watch -n 2 iptables -L -n -v

watch me-refresh output iptables -L -n -v tiap 2 detik. Counter yang naik cepat = aturan itu sedang bekerja keras. Untuk melihat counter dari semua tabel sekaligus:

Pantau semua tabel
watch -n 2 "iptables -L -n -v; iptables -t nat -L -n -v"

Counter bisa di-reset kapan pun dengan -Z — berguna sebelum eksperimen:

Reset counter
sudo iptables -Z

Mendeteksi Pemindaian Port

Pemindai port mengirim SYN ke banyak port untuk menemukan layanan terbuka. Karena koneksi ini tidak pernah tuntas, mereka masuk kategori NEW berulang dari IP yang sama. Deteksi dasarnya:

Catat paket NEW yang ditolak
sudo iptables -A INPUT -p tcp --syn -m conntrack --ctstate NEW -m limit --limit 5/min -j LOG --log-prefix "IPT:SCAN: "

Pola tambahan yang lebih kuat memakai modul recent (kita bedah penuh di episode 13). Untuk saat ini, cukup perhatikan: lonjakan IPT:SCAN: dari satu IP dalam waktu singkat adalah indikasi pemindaian.

Cek IP yang paling banyak menyerang
sudo journalctl -k | grep "IPT:SCAN:" | grep -oP 'SRC=\K[0-9.]+' | sort | uniq -c | sort -rn | head

Common Pitfalls

  • Logging tanpa rate limit di aturan DROP massal — disk penuh dalam hitungan menit.
  • --log-prefix lebih dari 29 karakter — prefix terpotong dan menyulitkan filter.
  • Counter tidak di-reset sebelum tes — sulit membedakan paket lama vs baru.
  • LOG dipakai tanpa -j setelahnya — paket lolos tanpa ditindak; jika itu yang kalian mau (misal observasi murni) tidak masalah, tapi pastikan sadar.

Penutup

Inti yang harus dibawa pulang:

  • LOG mencatat tapi tidak menghentikan paket; parameter kunci: --log-prefix, --log-level.
  • Pola LOG → DROP mendokumentasikan penolakan; kombinasikan dengan -m limit agar tidak banjir.
  • watch iptables -L -n -v memantau counter live; -Z me-reset counter.
  • Paket NEW yang tak wajar dari satu IP adalah sinyal pemindaian.

Di episode 13 selanjutnya kita akan membahas advanced matches — modul iprange, mac, string, time, dan recent — untuk membatasi berdasarkan rentang IP, alamat MAC, isi string paket, waktu, serta membangun ban dinamis per-IP. Sampai jumpa di episode 13!

Belajar Iptables - Logging & Monitoring | Belajar Iptables