Mikrotik : Firewall RAW dan Connection Tracking Lanjutan

Revision as of 07:01, 22 October 2026 by Maintenance script (talk | contribs) (Protected "Mikrotik : Firewall RAW dan Connection Tracking Lanjutan": Proteksi editorial: edit/move sysop ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite)))
(diff) ← Older revision | Latest revision (diff) | Newer revision β†’ (diff)

Firewall RAW dan connection tracking adalah dua bagian RouterOS yang jarang disentuh orang sampai jaringan bermasalah. Kalau firewall filter itu pos satpam, RAW adalah pemeriksaan di gerbang, dan connection tracking adalah buku tamu di dalam.

Artikel ini melanjutkan Mikrotik : Firewall Filter Dasar dan Mikrotik : Praktikum Cek Firewall Filter dengan Counter dan Log. Sekarang kita masuk satu lapis lebih dalam: menyaring paket sebelum buku tamu ditulis, lalu mengatur isi buku tamunya.

🎯 Tujuan

Setelah membaca dan mempraktikkan artikel ini, kamu bisa:

  • Menjelaskan urutan pemeriksaan paket: RAW, connection tracking, mangle, lalu filter.
  • Membedakan tiga tabel firewall RouterOS dan tahu kapan memakai yang mana.
  • Membuat rule RAW untuk membuang paket sampah sebelum masuk tabel koneksi.
  • Memakai action=notrack dengan sadar risikonya, bukan asal tempel.
  • Membaca tabel koneksi dan mengatur timeout-nya sesuai kebutuhan jaringan.
  • Menjelaskan kenapa router bisa penuh walaupun bandwidth masih longgar.

πŸ“ Konteks nyata

Bayangkan pos keamanan sebuah sekolah. Di gerbang, petugas memeriksa plat nomor dan barang bawaan. Setelah lolos, tamu menulis di buku tamu: nama, tujuan, jam masuk.

Buku tamu itu mahal. Setiap baris memakai memori, setiap tamu harus dicocokkan pulang-perginya. Kalau gerbang dibiarkan terbuka dan ribuan orang asing masuk hanya untuk menulis di buku lalu pergi, petugas buku tamu akan kewalahan.

Itulah yang terjadi di RouterOS. Tanpa RAW, semua paket yang masuk dicatat dulu ke tabel koneksi, baru difilter. Padahal sebagian besar paket sampah sudah kelihatan salah sejak di gerbang.

πŸ”₯ Kasus nyata: Sebuah SMK dengan 40 PC lab dan sekitar 300 HP siswa memakai satu router untuk try out CBT. Senin pagi semua siswa gagal login. Guru menyangka internet ISP putus, ternyata ping ke gateway tetap 1 ms.

Pemeriksaan menunjukkan `/ip firewall connection print count-only` menyentuh 412.000 entri, CPU router 100%, dan RAM tersisa tipis. Penyebabnya dua: satu blok IP publik mengirim SYN ke ribuan port acak, plus puluhan laptop siswa menjalankan aplikasi unduhan yang membuka ratusan koneksi.

Solusinya bukan menambah bandwidth. Tujuh rule RAW untuk membuang bogon, TCP flags mustahil, dan port 0 dipasang di depan; ditambah batas koneksi baru per siswa. Hasilnya tabel koneksi turun ke 30 ribuan, CPU kembali 20-an persen, dan CBT jalan lagi tanpa ganti perangkat.

🧠 Konsep singkat

Connection tracking adalah kemampuan kernel mencatat semua sesi logis: siapa bicara dengan siapa, lewat port apa, berapa byte, dan sudah berapa lama. NAT bergantung penuh padanya, begitu juga stateful firewall.

Karena itu conntrack punya biaya. Setiap entri memakan memori, dan tabelnya punya batas. RAW ada supaya kita bisa membuang sampah sebelum biaya itu dibayar.

πŸ”Ή Urutan pemeriksaan paket

Untuk paket yang masuk dari kabel dan diteruskan ke jaringan lain, urutan sederhananya:

  1. RAW prerouting β€” pemeriksaan kasar, belum ada catatan koneksi.
  2. Connection tracking β€” paket dicocokkan atau dibuatkan entri baru.
  3. Mangle prerouting β€” penandaan paket dan koneksi.
  4. Keputusan routing β€” mau ke mana paket ini.
  5. Filter forward β€” izinkan atau buang.
  6. Queue β€” giliran kirim.

Untuk paket yang lahir dari router sendiri, RAW punya chain output. RAW hanya punya dua chain ini, tidak ada input dan tidak ada forward.

πŸ“Š Angka penting: Tabel conntrack tumbuh sesuai kebutuhan, tidak dialokasikan penuh saat boot. Batas atasnya tergantung RAM, dan RouterOS tidak akan melewati 1.048.576 entri.

πŸ”Ή Tiga tabel yang sering tertukar

Aspek RAW Filter Mangle
Kapan jalan Sebelum conntrack Setelah conntrack Setelah conntrack
Chain prerouting, output input, forward, output lima chain
Matcher berbasis koneksi Tidak ada Ada (connection-state, connection-mark) Ada
Bisa menandai paket Tidak Tidak Ya
Biaya CPU Paling murah Sedang Paling mahal
Cocok untuk Buang sampah, DDoS Kebijakan izin/tolak Marking untuk queue dan routing

πŸ”Ή Apa yang bisa dan tidak bisa dilakukan RAW

RAW bisa membuang paket berdasarkan alamat, port, protokol, TCP flags, ukuran paket, dan limit. RAW juga bisa memakai address-list.

RAW tidak bisa memakai matcher yang bergantung pada catatan koneksi: connection-state, connection-mark, connection-bytes, connection-rate, layer7-protocol, dan tcp-state. Alasannya sederhana: catatannya belum dibuat.

⚠️ Hati-hati: Kalau sebuah paket ditandai notrack, paket itu melewati conntrack. Artinya NAT tidak berlaku untuk paket tersebut, dan filter tidak bisa mencocokkannya sebagai new atau established. Paket seperti ini muncul sebagai untracked, jadi rule filter harus mengizinkan untracked kalau trafiknya memang mau dilewatkan.

🧩 Istilah penting

Istilah Arti sederhana
Connection tracking Buku tamu digital: mencatat setiap sesi beserta arah balasannya
Entri koneksi Satu baris di buku tamu, misalnya "10.10.10.5:51234 ke 1.1.1.1:443"
RAW Pemeriksaan di gerbang, sebelum buku tamu ditulis
notrack Perintah "jangan catat tamu ini" saat lewat gerbang
untracked Status paket yang sengaja tidak dicatat
invalid Paket yang tidak cocok dengan catatan mana pun, biasanya sampah
FastTrack Jalur cepat untuk koneksi yang sudah dikenal, melewati firewall dan conntrack
timeout Batas waktu sebuah entri bertahan tanpa aktivitas

πŸ”§ Praktik: RAW dan connection tracking di lab

Lab ini memakai dua perangkat: router uji dan satu laptop yang berperan sebagai pengirim paket nakal. Alamat yang dipakai contoh: WAN router 192.0.2.10/24, LAN 10.10.10.1/24, laptop penyerang 192.0.2.66.

πŸ’‘ Tips: Ganti alamat di bawah dengan alamat lab sekolahmu. Jangan pernah mengetes flood ke jaringan sekolah lain, cukup ke lab sendiri yang terisolasi.

πŸ”Ή Langkah 1: potret kondisi awal

Sebelum mengubah apa pun, catat dulu angka awalnya. Tanpa angka awal, kita tidak bisa membuktikan perbaikan.

/ip firewall connection tracking print
/ip firewall connection print count-only
/ip firewall filter print stats

Perhatikan enabled, max-entries, dan total-entries. Nilai enabled=auto berarti conntrack menyala otomatis begitu ada rule firewall yang membutuhkannya.

πŸ§ͺ Uji cepat: buka 20 tab browser di laptop, lalu jalankan count-only lagi. Angkanya akan naik. Itu bukti bahwa setiap sesi benar-benar dicatat.

πŸ”Ή Langkah 2: bukti RAW jalan sebelum conntrack

Sekarang kita buktikan urutannya, bukan sekadar percaya diagram.

/ip firewall raw add chain=prerouting action=drop protocol=icmp \
    src-address=192.0.2.66 comment="lab: blokir icmp penyerang"
/ip firewall raw print stats

Minta laptop penyerang mengirim banjir ICMP, lalu cek dua hal: counter rule RAW naik, tetapi count-only di tabel koneksi tidak bertambah untuk ICMP dari alamat itu.

Kalau urutannya terbalik, entri ICMP akan muncul dulu baru hilang. Di sinilah bedanya menyaring di gerbang dengan menyaring di dalam ruangan.

πŸ”Ή Langkah 3: buang paket sampah dengan RAW

Sekarang kita pasang penyaringan kasar yang rutin dipakai di lapangan. Mulai dari daftar alamat yang tidak pantas muncul di internet.

/ip firewall address-list
add list=lab-bogon address=127.0.0.0/8 comment="RFC6890 loopback"
add list=lab-bogon address=0.0.0.0/8 comment="RFC6890"
add list=lab-bogon address=169.254.0.0/16 comment="RFC6890 link local"
add list=lab-bogon address=224.0.0.0/4 comment="multicast"
add list=lab-bogon address=240.0.0.0/4 comment="RFC6890 reserved"

/ip firewall raw
add chain=prerouting action=drop in-interface-list=WAN src-address-list=lab-bogon comment="lab: bogon dari WAN"
add chain=prerouting action=drop in-interface-list=WAN dst-address-list=lab-bogon comment="lab: bogon ke tujuan"
add chain=prerouting action=drop protocol=tcp tcp-flags=!fin,!syn,!rst,!ack comment="lab: flags mustahil"
add chain=prerouting action=drop protocol=tcp tcp-flags=fin,syn comment="lab: SYN+FIN"
add chain=prerouting action=drop protocol=tcp tcp-flags=syn,rst comment="lab: SYN+RST"
add chain=prerouting action=drop protocol=tcp port=0 comment="lab: tcp port 0"
add chain=prerouting action=drop protocol=udp port=0 comment="lab: udp port 0"

Arti tcp-flags=!fin,!syn,!rst,!ack adalah "tidak ada satu pun dari flag itu yang menyala". Paket TCP normal selalu punya minimal salah satunya, jadi yang cocok dengan rule ini memang sampah.

πŸ“Š Angka penting: Kernel Linux sudah membatasi ICMP sekitar 100 paket per detik. Membuat limit ICMP sendiri biasanya hanya menambah beban, bukan menambah keamanan.

πŸ”Ή Langkah 4: notrack untuk trafik yang tidak butuh buku tamu

Ada trafik yang memang tidak perlu dicatat: protokol routing, multicast lokal, dan sebagian trafik backup. Dokumentasi MikroTik memakai OSPF sebagai contoh klasik.

/ip firewall raw
add chain=prerouting protocol=ospf action=notrack comment="lab: ospf tanpa conntrack"
add chain=output protocol=ospf action=notrack comment="lab: ospf keluar tanpa conntrack"

/ip firewall filter
add chain=input action=accept connection-state=established,related,untracked \
    comment="lab: izinkan untracked"

Setelah itu, cari entri OSPF di tabel koneksi. Seharusnya tidak ada lagi.

⚠️ Hati-hati: notrack tidak bisa dipakai untuk trafik yang perlu NAT atau queue berbasis connection-mark. Kalau kamu menotrack seluruh trafik forward, internet client bisa mati total karena masquerade kehilangan catatannya.

πŸ”Ή Langkah 5: batasi laju koneksi baru

Membuang sampah saja belum cukup. Penyerang bisa mengirim paket yang terlihat sah, hanya jumlahnya keterlaluan. Di RAW, pembatas yang tidak butuh conntrack adalah dst-limit.

/ip firewall raw
add chain=prerouting protocol=tcp tcp-flags=syn in-interface-list=WAN \
    dst-port=22,23,8291 dst-limit=10,20,src-address/1m \
    action=drop comment="lab: batasi koneksi baru ke layanan admin"

Artinya: maksimal 10 paket SYN per detik per alamat sumber, dengan toleransi awal 20 paket, dan catatan pembatas kedaluwarsa setelah 1 menit.

Untuk membatasi jumlah koneksi bersamaan per siswa, tempatnya di filter karena butuh conntrack:

/ip firewall filter
add chain=forward protocol=tcp connection-limit=40,32 action=drop \
    comment="lab: maksimal 40 koneksi per host"

πŸ“Š Angka penting: connection-bytes menghitung dua arah termasuk header IP, sedangkan connection-rate dihitung ulang tiap detik tanpa rata-rata. Keduanya hanya bekerja untuk TCP dan UDP.

πŸ”Ή Langkah 6: tuning timeout conntrack

Timeout bawaan RouterOS cukup panjang untuk jaringan kecil, tapi boros untuk jaringan ramai. Beberapa nilai bawaan yang perlu kamu tahu:

Parameter Bawaan Catatan
tcp-established-timeout 1 hari Koneksi TCP yang menganggur lama tetap dicatat
tcp-syn-sent-timeout 5 detik Sisa handshake yang gagal cepat dibuang
udp-timeout 30 detik Satu arah
udp-stream-timeout 3 menit Dua arah
icmp-timeout 10 detik Ping dan pesan error
generic-timeout 10 menit Protokol lain

Contoh penyesuaian untuk jaringan sekolah yang ramai:

/ip firewall connection tracking set udp-timeout=20s \
    udp-stream-timeout=2m tcp-established-timeout=12h

⚠️ Hati-hati: Memperpendek timeout memutus sesi yang menganggur, termasuk SSH yang ditinggal makan siang atau VPN yang jarang dipakai. Turunkan bertahap, lalu pantau total-entries selama beberapa hari.

πŸ”Ή Langkah 7: versi Winbox

Kalau lebih nyaman memakai mouse, jalurnya begini:

  1. IP β†’ Firewall β†’ RAW untuk melihat dan menambah rule RAW.
  2. IP β†’ Firewall β†’ Connections untuk membaca tabel koneksi dan menghapus entri tertentu.
  3. Tab Connection Tracking untuk mengubah timeout dan melihat max-entries.

πŸ’‘ Tips: Sebelum menyimpan rule RAW di router produksi, buka dua sesi Winbox dari dua jalur berbeda. Kalau satu rule salah dan memutus akses, sesi kedua masih bisa memperbaiki.

πŸ”Ή Langkah 8: bersih-bersih lab

Jangan tinggalkan rule percobaan di router yang dipakai bersama.

/ip firewall raw remove [find comment~"lab:"]
/ip firewall filter remove [find comment~"lab:"]
/ip firewall address-list remove [find list=lab-bogon]
/ip firewall connection print count-only

🏭 Dipakai di dunia kerja

  • Sekolah: lab CBT dengan 200 siswa butuh koneksi stabil. Tanpa RAW dan batas koneksi, satu siswa yang membuka aplikasi unduhan bisa memperlambat seluruh ruang ujian.
  • Kantor cabang: router kecil di bawah meja sering jadi korban scan internet. RAW membuang pemindaian port sebelum tabel koneksi penuh, sehingga router tidak perlu di-restart tiap minggu.
  • ISP dan warnet: pelanggan mengeluh lambat karena satu perangkat membuka ratusan sesi. Pembatasan koneksi per alamat adalah cara paling murah menegakkan aturan paket.
  • Industri: jalur kontrol mesin dan PLC tidak boleh terganggu. Trafik yang tidak butuh state dipisahkan, sementara trafik produksi dijaga dengan filter ketat.
  • Operator NOC: saat serangan, langkah pertama biasanya memasang drop di RAW karena efeknya langsung terasa tanpa membebani CPU.
  • Lab virtual: router CHR di server dipakai banyak siswa sekaligus. Tuning timeout dan pembatasan koneksi membuat satu lab tidak menghabiskan RAM host.

βœ… Verifikasi

Jalankan berurutan dan cocokkan hasilnya:

  1. Rule terbaca. `/ip firewall raw print` menampilkan rule sesuai urutan yang kamu mau.
  2. Counter bergerak. Kirim paket uji, lalu `/ip firewall raw print stats` menunjukkan angka naik di rule yang benar.
  3. Conntrack tidak membengkak. `/ip firewall connection print count-only` tetap wajar saat uji banjir paket.
  4. Trafik sah tetap jalan. Dari laptop client: ping gateway, buka satu situs HTTPS, dan login ke halaman admin.
  5. Trafik notrack terlihat. `/ip firewall connection print where protocol=ospf` kosong, tetapi adjacency tetap terbentuk.
  6. Timeout berlaku. Tunggu lebih lama dari udp-timeout, lalu pastikan entri UDP benar-benar hilang dari tabel.

πŸ§ͺ Uji cepat: bandingkan count-only sebelum dan sesudah uji banjir. Kalau angkanya melonjak padahal rule drop sudah aktif, berarti rule kamu tidak kenaβ€”periksa chain dan interface-nya.

⚠️ Kesalahan umum & troubleshooting

Gejala Kemungkinan penyebab Perbaikan
Internet mati setelah menambah rule RAW Rule drop terlalu lebar atau urutannya salah Nonaktifkan rule teratas, cek counter, persempit matcher
Client tidak dapat IP padahal DHCP normal DHCP discover ikut terbuang di RAW Tambahkan rule accept untuk UDP 68 ke 67 dari LAN
NAT tidak bekerja untuk sebagian trafik Trafik tersebut ditandai notrack Hapus rule notrack, atau kecualikan hanya trafik yang benar-benar tidak perlu NAT
OSPF atau BGP tetangganya putus-nyambung Entri conntrack kedaluwarsa di tengah sesi Tambahkan notrack untuk protokol routing dan izinkan untracked
VPN IPsec tidak lewat setelah FastTrack aktif FastTrack melewati pemrosesan IPsec Tambahkan rule accept dengan ipsec-policy=in,ipsec di atas FastTrack
Tabel koneksi penuh saat jam sibuk Banyak sesi sah ditambah scan dari internet Buang bogon di RAW, batasi koneksi per host, turunkan timeout UDP
CPU tinggi padahal rule sedikit Memakai matcher mahal seperti layer7-protocol atau content Pindahkan penyaringan kasar ke RAW, sisakan matcher mahal untuk trafik sedikit
Koneksi sah diputus dengan status invalid Routing asimetris atau loose-tcp-tracking Hapus rule drop invalid, atau set loose-tcp-tracking=yes
Rule RAW tidak pernah kena counter Salah chain: trafik yang lewat hanya diproses di prerouting Pindahkan rule ke prerouting
Halaman tertentu lambat atau gagal Fragmen dibuang setelah notrack Periksa matcher fragment, aktifkan kembali conntrack untuk jalur itu
Winbox terputus setelah rule disimpan Rule drop di prerouting juga mengenai akses ke router Tambahkan accept untuk alamat admin di posisi paling atas

πŸ” Catatan keamanan & etika

  • RAW adalah alat pertahanan, bukan alat menyerang. Semua uji harus di jaringan milik sendiri atau lab yang diizinkan.
  • Aktifkan log=yes hanya saat mendiagnosis. Log firewall pada serangan besar bisa memenuhi disk dan menambah beban CPU.
  • Log berisi alamat IP dan port pengguna. Perlakukan sebagai data pribadi: jangan dibagikan di grup kelas atau media sosial.
  • Mitigasi DDoS dari internet hanya efektif kalau penyedia layanan ikut memblokir di hulu. Router sekolah bukan perisai ajaib.
  • Simpan backup konfigurasi sebelum mengubah RAW. Satu rule drop yang salah bisa mengunci kamu dari perangkat sendiri.

πŸ“Œ Kesimpulan

Firewall filter menentukan siapa yang boleh masuk. RAW menentukan apa yang bahkan tidak perlu dicatat. Connection tracking membuat firewall menjadi stateful, tetapi ia punya harga: memori, CPU, dan batas entri.

Urutan berpikir yang sehat: buang yang jelas sampah di RAW, catat yang perlu di conntrack, tandai yang perlu di mangle, lalu putuskan di filter. Jangan dibalik.

Langkah berikutnya: buka router labmu, catat total-entries hari ini, lalu pasang tiga rule RAW pertamaβ€”bogon, TCP flags mustahil, dan port 0. Bandingkan angkanya besok pagi.

πŸ”— Materi terkait

πŸ“š Referensi