1. Pengenalan MikroTik Firewall
Firewall MikroTik merupakan salah satu fitur paling kuat dan serbaguna di RouterOS. Firewall memungkinkan administrator untuk mengontrol lalu lintas jaringan (traffic filtering) yang masuk, keluar, dan melintasi router. Dengan konfigurasi firewall yang tepat, kamu dapat melindungi jaringan dari serangan luar, mengatur akses pengguna, hingga mengoptimalkan jalur data ke internet.
Konsep Dasar Firewall MikroTik
Sebelum masuk ke konfigurasi, penting untuk memahami tiga konsep inti dalam firewall MikroTik: Chain, Rule, dan Action. Ketiganya bekerja secara berurutan β setiap paket data yang melintasi firewall akan diperiksa berdasarkan rangkaian rule yang sudah ditentukan.
| Konsep | Deskripsi | Contoh |
|---|---|---|
| Chain | Kumpulan aturan yang dikelompokkan berdasarkan titik pemeriksaan paket. Menentukan kapan rule diterapkan. | input, forward, output, srcnat, dstnat |
| Rule | Satu atau lebih kondisi (criteria) yang harus dipenuhi paket agar action tertentu diterapkan. | src-address=192.168.1.0/24, protocol=tcp, dst-port=22 |
| Action | Tindakan yang dilakukan terhadap paket yang cocok dengan rule. Menentukan fate dari paket tersebut. | accept, drop, reject, add-src-to-address-list |
Paket Masuk dari Internet
β
βΌ
βββββββββββββββ
β Interface β
β Ethernet β
ββββββββ¬βββββββ
β
ββββββββββββββΌβββββββββββββ
βΌ β βΌ
βββββββββββ β βββββββββββ
β INPUT β β β FORWARD β
β (ke β β β (melintasβ
β router) β β β router) β
ββββββ¬βββββ β ββββββ¬βββββ
β β β
βΌ βΌ βΌ
βββββββββββ βββββββββββ βββββββββββ
β Filter β β NAT β β Filter β
β Rules β β Rules β β Rules β
ββββββ¬βββββ ββββββ¬βββββ ββββββ¬βββββ
β β β
βΌ βΌ βΌ
βββββββββββββββββββββββββββββββββ
β OUTPUT (ke router) β
βββββββββββββββββ¬ββββββββββββββββ
β
βΌ
βββββββββββββββ
β Interface β
β Keluar β
βββββββββββββββ
Tanpa firewall yang dikonfigurasi dengan benar, MikroTik akan menerima semua paket dari jaringan manapun. Ini berarti setiap orang di internet bisa mencoba mengakses layanan yang berjalan di router β termasuk Winbox, SSH, dan API. Firewall adalah garis pertahanan pertama dan utama untuk keamanan jaringan kamu.
2. Filter Rules: Input, Forward, Output Chain
Filter rules adalah komponen utama firewall MikroTik yang berfungsi memfilter paket berdasarkan kriteria tertentu. Terdapat tiga chain utama yang perlu dipahami oleh setiap administrator jaringan.
Chain INPUT
Chain input memproses paket yang ditujukan ke router itu sendiri
(bukan paket yang melintasi router). Ini termasuk koneksi Winbox, SSH, WinAPI, ping ke
router, dan semua layanan yang berjalan di MikroTik.
# Step 1: Terima semua paket yang merupakan balasan dari koneksi yang sudah ada
/ip firewall filter
add chain=input action=accept connection-state=established,related \
comment="Accept established/related connections"
# Step 2: Terima paket tidak terkoneksi yang aman (invalid = buang)
add chain=input action=drop connection-state=invalid \
comment="Drop invalid packets"
# Step 3: Izinkan loopback (traffic internal router)
add chain=input action=accept in-interface=loopback \
comment="Accept loopback"
# Step 4: Izinkan ICMP/ping ke router dari jaringan lokal
add chain=input action=accept protocol=icmp \
src-address=192.168.1.0/24 \
comment="Allow ping from LAN"
# Step 5: Izinkan akses Winbox dari LAN saja
add chain=input action=accept protocol=tcp dst-port=8291 \
src-address=192.168.1.0/24 \
comment="Allow Winbox from LAN"
# Step 6: Izinkan SSH dari jaringan management saja
add chain=input action=accept protocol=tcp dst-port=22 \
src-address=192.168.1.0/24 \
comment="Allow SSH from management network"
# Step 7: Drop semua paket lain yang mencoba masuk ke router
add chain=input action=drop comment="Drop all other input traffic"
Chain FORWARD
Chain forward memproses paket yang melintasi router β
yaitu paket yang dikirim dari satu jaringan ke jaringan lain melalui router. Ini adalah
chain yang paling sering bekerja karena semua koneksi internet melewati MikroTik sebagai router.
# Terima paket established/related yang melintasi router
/ip firewall filter
add chain=forward action=accept connection-state=established,related \
comment="Accept forward established/related"
# Drop paket invalid
add chain=forward action=drop connection-state=invalid \
comment="Drop invalid forward packets"
# Izinkan akses internet dari LAN ke WAN
add chain=forward action=accept src-address=192.168.1.0/24 \
out-interface=ether1-wan \
comment="Allow LAN to WAN"
# Blokir akses langsung dari internet ke jaringan internal
add chain=forward action=drop in-interface=ether1-wan \
out-interface=ether2-lan \
src-address=!192.168.1.0/24 \
comment="Block unsolicited WAN to LAN"
# Drop semua forward lain (policy default)
add chain=forward action=drop comment="Drop all other forward traffic"
Chain OUTPUT
Chain output memproses paket yang berasal dari router itu sendiri
dan keluar melalui interface tertentu. Ini jarang dikonfigurasi kecuali kamu ingin
membatasi layanan internal router mengirim traffic ke jaringan tertentu.
# Izinkan DNS dari router sendiri
/ip firewall filter
add chain=output action=accept protocol=udp dst-port=53 \
comment="Allow DNS output"
# Izinkan NTP dari router
add chain=output action=accept protocol=udp dst-port=123 \
comment="Allow NTP output"
# Drop router traffic ke port berbahaya
add chain=output action=drop protocol=tcp dst-port=23 \
comment="Block telnet output from router"
| Chain | Sumber Paket | Tujuan Paket | Contoh Penggunaan |
|---|---|---|---|
| input | Semua | Router sendiri | Blokir akses SSH dari internet |
| forward | Satu jaringan | Jaringan lain (via router) | Kontrol akses internet user |
| output | Router sendiri | Semua | Batasi update otomatis router |
MikroTik memproses firewall rule dari atas ke bawah. Begitu paket cocok
dengan suatu rule, paket tersebut langsung diproses oleh action rule tersebut dan
tidak diperiksa ke rule berikutnya. Pastikan rule accept
yang spesifik ditempatkan sebelum rule drop yang umum!
3. NAT: SRCNAT & DSTNAT (Port Forwarding)
NAT (Network Address Translation) adalah mekanisme yang memungkinkan banyak komputer di jaringan lokal menggunakan satu alamat IP publik. MikroTik mendukung dua jenis utama NAT: srcnat (Source NAT) untuk traffic keluar, dan dstnat (Destination NAT) untuk meneruskan port dari internet ke server internal.
SRCNAT (Masquerading)
SRCNAT mengganti alamat IP sumber paket dengan IP publik router saat paket keluar ke internet. Ini adalah cara paling umum agar seluruh komputer di LAN bisa berselancar internet menggunakan satu IP publik.
# Masquerade untuk jaringan lokal ke internet
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 \
out-interface=ether1-wan action=masquerade \
comment="LAN to Internet Masquerade"
# SRCNAT statis (jika IP publik tetap, lebih efisien dari masquerade)
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 \
out-interface=ether1-wan \
to-addresses=203.0.113.5 \
action=srcnat \
comment="Static SRCNAT to public IP"
Gunakan masquerade jika IP publik berubah-ubah (dynamic IP). Gunakan
srcnat dengan to-addresses statis jika IP publik tetap β
ini lebih hemat CPU karena router tidak perlu mengecek IP publik setiap paket.
DSTNAT (Port Forwarding)
DSTNAT memungkinkan kamu meneruskan port tertentu dari IP publik ke komputer di jaringan internal. Ini penting untuk mengakses layanan seperti web server, FTP, atau kamera CCTV dari luar jaringan.
# Port forwarding: HTTP (80) ke Web Server internal
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=80 \
in-interface=ether1-wan \
to-addresses=192.168.1.10 to-ports=80 \
comment="Forward HTTP to Web Server"
# Port forwarding: HTTPS (443) ke Web Server
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=443 \
in-interface=ether1-wan \
to-addresses=192.168.1.10 to-ports=443 \
comment="Forward HTTPS to Web Server"
# Port forwarding: SSH (2222) ke Server Linux
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=2222 \
in-interface=ether1-wan \
to-addresses=192.168.1.20 to-ports=22 \
comment="Forward SSH to Linux Server"
# Port forwarding: RDP (3389) ke Windows PC
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=3389 \
in-interface=ether1-wan \
to-addresses=192.168.1.30 to-ports=3389 \
comment="Forward RDP to Windows PC"
# Port forwarding: MQTT (1883) ke IoT Server
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=1883 \
in-interface=ether1-wan \
to-addresses=192.168.1.40 to-ports=1883 \
comment="Forward MQTT to IoT Server"
ββββββββββββ ββββββββββββ ββββββββββββββββ
β Internet β βββΆ IP Publik:80 βββββββΆβ MikroTik ββββββΆβ 192.168.1.10 β
β Client β β Router β β Web Server β
ββββββββββββ β :80 β :80β β :80 β
ββββββββββββ ββββββββββββββββ
ββββββββββββ ββββββββββββ ββββββββββββββββ
β Internet β βββΆ IP Publik:2222 ββββΆβ MikroTik ββββββΆβ 192.168.1.20 β
β Client β β Router β β Linux Server β
ββββββββββββ β:2222β :22 β β :22 β
ββββββββββββ ββββββββββββββββ
Port forwarding membuka akses ke server internal dari internet. Pastikan kamu hanya meneruskan port yang benar-benar diperlukan, gunakan password yang kuat pada layanan tersebut, dan pertimbangkan untuk menggunakan VPN sebagai gantinya jika memungkinkan. Hindari meneruskan port seperti 23 (telnet), 3306 (MySQL), atau 27017 (MongoDB) langsung ke internet.
4. Mangle & Marking (Connection Marking, Packet Marking)
Mangle adalah fitur firewall MikroTik yang digunakan untuk memanipulasi paket dan menerapkan "mark" (tanda) pada paket atau koneksi. Marking ini kemudian bisa digunakan oleh firewall filter, queue, routing, dan komponen lainnya untuk mengambil tindakan lebih lanjut.
Jenis-Jenis Marking
| Jenis Mark | Deskripsi | Kegunaan Utama |
|---|---|---|
| Connection Mark | Menandai seluruh koneksi berdasarkan paket pertamanya. Semua paket dalam koneksi yang sama akan otomatis mendapat mark yang sama. | Queue management, bandwidth limiting |
| Packet Mark | Menandai paket individu tanpa mempengaruhi paket lain dalam koneksi yang sama. | Traffic classification untuk queue tree |
| Routing Mark | Menandai paket agar di-route melalui jalur tertentu. Berguna untuk policy-based routing. | Load balancing, failover routing |
Contoh Konfigurasi Mangle
# === Connection Marking ===
# Tandai koneksi upload dari pengguna VIP
/ip firewall mangle
add chain=forward src-address=192.168.1.100 protocol=tcp \
dst-port=80,443 \
action=mark-connection new-connection-mark=vip-traffic \
passthrough=yes \
comment="Mark VIP user web traffic"
# Tandai koneksi upload dari pengguna biasa
add chain=forward src-address=192.168.1.0/24 \
protocol=tcp dst-port=80,443 \
action=mark-connection new-connection-mark=regular-traffic \
passthrough=yes \
comment="Mark regular user web traffic"
# === Packet Marking ===
# Tandai paket upload dari koneksi VIP
add chain=forward connection-mark=vip-traffic \
action=mark-packet new-packet-mark=vip-upload \
passthrough=no \
comment="Mark VIP upload packets"
# Tandai paket download ke koneksi VIP
add chain=forward connection-mark=vip-traffic \
action=mark-packet new-packet-mark=vip-download \
passthrough=no \
comment="Mark VIP download packets"
# === Routing Mark ===
# Tandai paket dari server untuk routing via ISP B
/ip firewall mangle
add chain=forward src-address=192.168.1.10 \
action=mark-routing new-routing-mark=via-isp-b \
passthrough=no \
comment="Route server traffic via ISP B"
# Tandai paket untuk load balancing ECMP
add chain=prerouting src-address=192.168.1.0/24 \
connection-state=new \
action=mark-connection \
new-connection-mark=ecmp-balance \
per-connection-classifier=both-addresses:2/0 \
passthrough=yes \
comment="ECMP connection marking - path 0"
add chain=prerouting src-address=192.168.1.0/24 \
connection-state=new \
action=mark-connection \
new-connection-mark=ecmp-balance \
per-connection-classifier=both-addresses:2/1 \
passthrough=yes \
comment="ECMP connection marking - path 1"
Gunakan connection mark jika kamu ingin menerapkan tindakan pada
seluruh koneksi (semua paket yang berhubungan). Gunakan
packet mark jika kamu hanya perlu menandai paket individual.
Untuk queue tree dan bandwidth management, kamu biasanya membutuhkan
keduanya β connection mark untuk mengidentifikasi koneksi, lalu packet mark
untuk diterapkan ke queue tree.
5. Proteksi Jaringan: Anti-DDoS, Brute Force & Brute SSH
Firewall MikroTik bukan hanya sekadar filter traffic β ia juga mampu mendeteksi dan memblokir berbagai jenis serangan jaringan. Pada bagian ini, kita akan membahas konfigurasi firewall untuk melindungi router dan jaringan dari serangan DDoS, brute force, serta berbagai serangan umum lainnya.
Anti-DDoS Basic
Serangan DDoS (Distributed Denial of Service) mencoba membuat jaringan atau layanan tidak bisa diakses dengan mengirim traffic dalam volume besar. Berikut konfigurasi firewall untuk mitigasi DDoS dasar:
# === ANTI-DDoS FILTER RULES ===
# Buat address list untuk tracking attacker
/ip firewall address-list
add list=ddos-attackers timeout=00:05:00
# 1. Drop paket dengan flag fragment (serangan fragmen)
/ip firewall filter
add chain=input action=drop protocol=icmp \
fragment=no \
comment="Anti-DDoS: Drop ICMP fragment"
# 2. Drop paket TCP tanpa flag SYN yang mencurigakan
add chain=input action=drop protocol=tcp \
tcp-flags=!syn connection-state=new \
comment="Anti-DDoS: Drop TCP non-SYN new connections"
# 3. Drop SYN flood (banyak SYN tanpa ACK)
add chain=input action=add-src-to-address-list \
protocol=tcp tcp-flags=syn connection-state=new \
src-address-list=ddos-connection-limit \
address-list=ddos-attackers \
address-list-timeout=00:05:00 \
comment="Anti-DDoS: Track SYN flood attackers"
# 4. Limit koneksi baru per IP (SYN flood protection)
add chain=input protocol=tcp tcp-flags=syn connection-state=new \
src-address-list=ddos-connection-limit \
action=drop \
comment="Anti-DDoS: Drop SYN flood"
add chain=input protocol=tcp tcp-flags=syn connection-state=new \
action=add-src-to-address-list \
address-list=ddos-connection-limit \
address-list-timeout=30s \
limit=50/10,5 \
passthrough=yes \
comment="Anti-DDoS: Add to SYN limit list"
# 5. Drop UDP flood (serangan volume tinggi UDP)
add chain=input action=drop protocol=udp \
connection-state=new \
src-address-list=udp-flood \
comment="Anti-DDoS: Drop UDP flood"
add chain=input action=add-src-to-address-list protocol=udp \
connection-state=new \
address-list=udp-flood \
address-list-timeout=00:01:00 \
limit=50/10,5 \
passthrough=yes \
comment="Anti-DDoS: Track UDP flood"
# 6. Drop XMAS scan (serangan reconnaissance)
add chain=input action=drop protocol=tcp \
tcp-flags=fin,psh,urg \
comment="Anti-DDoS: Drop XMAS scan"
# 7. Drop NULL scan
add chain=input action=drop protocol=tcp \
tcp-flags=!fin,!syn,!rst,!psh,!ack,!urg \
comment="Anti-DDoS: Drop NULL scan"
Proteksi Brute Force Login
Serangan brute force mencoba login ke layanan (Winbox, SSH, API) dengan mencoba banyak kombinasi username dan password secara berulang. Berikut cara memblokir IP yang melakukan percobaan login berlebihan:
# === BRUTE FORCE PROTECTION: WINBOX ===
# Buat address list untuk tracker
/ip firewall address-list
add list=winbox-brute-force timeout=00:10:00
add list=blocked-winbox timeout=00:30:00
# Drop IP yang sudah diblokir
/ip firewall filter
add chain=input protocol=tcp dst-port=8291 \
src-address-list=blocked-winbox \
action=drop \
comment="Block brute force Winbox (penalty)"
# Tambah ke blacklist jika koneksi melebihi batas
add chain=input protocol=tcp dst-port=8291 \
src-address-list=winbox-brute-force \
action=add-src-to-address-list \
address-list=blocked-winbox \
address-list-timeout=00:30:00 \
comment="Escalate to blacklist: Winbox brute force"
add chain=input protocol=tcp dst-port=8291 \
action=add-src-to-address-list \
address-list=winbox-brute-force \
address-list-timeout=00:05:00 \
limit=3/1,5 \
passthrough=yes \
comment="Track Winbox login attempts"
# === BRUTE FORCE PROTECTION: SSH ===
/ip firewall address-list
add list=ssh-brute-force timeout=00:10:00
add list=blocked-ssh timeout=00:30:00
# Drop SSH dari IP yang sudah masuk blacklist
/ip firewall filter
add chain=input protocol=tcp dst-port=22 \
src-address-list=blocked-ssh \
action=drop \
comment="Block brute force SSH (penalty)"
# Escalate ke blacklist
add chain=input protocol=tcp dst-port=22 \
src-address-list=ssh-brute-force \
action=add-src-to-address-list \
address-list=blocked-ssh \
address-list-timeout=00:30:00 \
comment="Escalate to blacklist: SSH brute force"
# Track SSH login attempts
add chain=input protocol=tcp dst-port=22 \
action=add-src-to-address-list \
address-list=ssh-brute-force \
address-list-timeout=00:05:00 \
limit=5/1,5 \
passthrough=yes \
comment="Track SSH login attempts"
# === BRUTE FORCE PROTECTION: API (RouterOS API) ===
/ip firewall address-list
add list=api-brute-force timeout=00:10:00
add chain=input protocol=tcp dst-port=8728 \
src-address-list=api-brute-force \
action=add-src-to-address-list \
address-list=blocked-winbox \
address-list-timeout=00:30:00 \
comment="Escalate to blacklist: API brute force"
add chain=input protocol=tcp dst-port=8728 \
action=add-src-to-address-list \
address-list=api-brute-force \
address-list-timeout=00:05:00 \
limit=3/1,5 \
passthrough=yes \
comment="Track API login attempts"
Proteksi Lanjutan: Connection Tracking Limits
# Batasi jumlah koneksi simultan per IP
/ip firewall filter
add chain=forward protocol=tcp connection-state=new \
src-address=192.168.1.0/24 \
connection-limit=150,32 \
action=drop \
comment="Limit connections per host (150/32)"
# Batasi jumlah koneksi ICMP per detik (anti ping flood)
add chain=input protocol=icmp \
limit=5/1,5 \
action=accept \
comment="Rate limit ICMP (5/sec)"
add chain=input protocol=icmp \
action=drop \
comment="Drop ICMP flood (exceed rate limit)"
# Drop paket dengan TTL rendah (traceroute probe)
add chain=input protocol=icmp ttl=equal:1 \
action=drop \
comment="Drop traceroute probes"
# Batasi concurrent FTP connections
add chain=forward protocol=tcp dst-port=21 \
connection-limit=3,32 \
action=drop \
comment="Limit FTP connections per host"
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β BRUTE FORCE PROTECTION FLOW β
β β
β Koneksi Masuk βββΆ Apakah IP di blacklist? β
β β β
β βββββββ΄ββββββ β
β β β β
β [YA] [TIDAK] β
β β β β
β DROP Apakah melebihi batas percobaan? β
β β β
β βββββββ΄ββββββ β
β β β β
β [YA] [TIDAK] β
β β β β
β Tambahkan ke Terima & biarkan β
β blacklist + β
β DROP β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
6. Layer 7 Protocol Filtering (Blokir Aplikasi)
Layer 7 protocol filtering memungkinkan kamu memblokir atau mengontrol aplikasi berdasarkan konten payload-nya, bukan hanya port atau IP. Ini sangat berguna untuk memblokir aplikasi seperti BitTorrent, Telegram, WhatsApp, atau protokol tertentu yang menggunakan port standar (misalnya HTTP/80) tapi mengandung aplikasi berbeda.
Layer 7 protocol matching tersedia di RouterOS v6 dengan nama
layer7-protocol. Fitur ini menggunakan regex (regular expression)
untuk memindai konten paket. Perlu diingat bahwa Layer 7 filtering cukup memakan CPU,
jadi gunakan secara bijak dan kombinasikan dengan filter rules port-based.
# === LAYER 7 PROTOCOL DEFINITIONS ===
# Blokir BitTorrent
/ip firewall layer7-protocol
add name=BitTorrent regexp="^(\\x13BitTorrent protocol|d1:ad2:id20:|\\x08\\x00\\x00\\x00\\x00\\x00\\x00\\x00)\\x00" \
comment="BitTorrent protocol detection"
# Blokir Telegram
add name=Telegram regexp="tg://|api.telegram.org" \
comment="Telegram protocol detection"
# Blokir WhatsApp
add name=WhatsApp regexp="whatsapp|WHATS" \
comment="WhatsApp protocol detection"
# Blokir DNS-over-HTTPS (DoH) untuk kontrol DNS
add name=DoH regexp="(dns\\.google|cloudflare-dns|dns\\.quad9)" \
comment="DNS-over-HTTPS detection"
# Blokir TikTok
add name=TikTok regexp="(tikcdn|bytedance|douyin|tiktok)" \
comment="TikTok protocol detection"
# === LAYER 7 FILTER RULES ===
/ip firewall filter
add chain=forward layer7-protocol=BitTorrent action=drop \
comment="Drop BitTorrent traffic"
add chain=forward layer7-protocol=Telegram src-address=192.168.1.0/24 \
action=drop \
comment="Block Telegram from LAN"
add chain=forward layer7-protocol=WhatsApp \
action=accept \
comment="Allow WhatsApp (no block)"
add chain=forward layer7-protocol=DoH action=drop \
comment="Block DNS-over-HTTPS"
add chain=forward layer7-protocol=TikTok src-address=192.168.1.0/24 \
action=drop \
comment="Block TikTok from LAN"
Layer 7 matching hanya memindai beberapa byte pertama dari payload paket.
Aplikasi modern seperti Telegram dan WhatsApp menggunakan enkripsi end-to-end, sehingga
deteksi hanya bisa berfungsi pada saat koneksi awal (handshake). Selain itu, regex Layer 7
sangat berat untuk CPU β gunakan hanya jika filter berbasis port tidak cukup.
Pertimbangkan juga menggunakan content matching (content=)
sebagai alternatif yang lebih ringan.
7. Firewall di RouterOS v7 (Fitur Baru)
RouterOS v7 membawa banyak perubahan signifikan pada subsystem firewall. MikroTik mengubah arsitektur dari kernel networking lama ke nftables-based backend yang memberikan performa lebih baik, fitur lebih modern, dan kemampuan filtering yang lebih canggih.
Perubahan Utama di RouterOS v7
| Fitur | RouterOS v6 | RouterOS v7 |
|---|---|---|
| Backend Firewall | iptables-based custom kernel | nftables-based, lebih cepat & modern |
| Fasttrack | Tersedia (limited) | Ditingkatkan, lebih efisien |
| Conntrack | Single-threaded | Multi-threaded, lebih scalable |
| NAT Hairpinning | Tidak tersedia | Dukungan native |
| HW Offloading | Limited | Extended HW offloading support |
Fitur Baru: Fasttrack & HW Offloading di v7
# === FASTTRACK CONNECTIONS (RouterOS v7) ===
# Aktifkan fasttrack untuk koneksi established/related
/ip firewall filter
add chain=forward action=fasttrack-connection \
connection-state=established,related \
hw-offload=yes \
comment="Fasttrack established/related connections"
# Pastikan rule accept untuk established ada sebelum fasttrack
add chain=forward action=accept connection-state=established,related \
comment="Accept established (non-fasttrack fallback)"
# === HARDWARE OFFLOADING ===
# Aktifkan HW offloading pada bridge (switch chip)
/interface bridge
set [find name=bridge1] hardware=on vlan-filtering=yes
# === CONNECTION TRACKING TUNING ===
/ip firewall connection tracking
set enabled=yes \
tcp-timeout=1d00:00:00 \
udp-timeout=30s \
icmp-timeout=10s \
fasttimeout=00:30:00 \
udp-stream-timeout=300s
NAT Hairpinning di RouterOS v7
NAT hairpinning memungkinkan komputer di LAN mengakses layanan yang di-forward menggunakan IP publik/router. Di RouterOS v6, ini memerlukan workarounding β v7 mendukungnya secara native.
# === NAT HAIRPINNING (RouterOS v7) ===
# Port forwarding dari internet ke server
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=443 \
in-interface=ether1-wan \
to-addresses=192.168.1.10 to-ports=443 \
comment="Port forward HTTPS (internet)"
# Hairpin rule: agar LAN juga bisa akses via IP publik
/ip firewall nat
add chain=dstnat protocol=tcp dst-port=443 \
src-address=192.168.1.0/24 \
to-addresses=192.168.1.10 to-ports=443 \
comment="NAT Hairpin for HTTPS"
# === ROUTING-MARK BASED NAT (v7) ===
# SRCNAT berbeda untuk masing-masing ISP
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 \
out-interface=ether1-isp1 routing-mark=via-isp1 \
to-addresses=203.0.113.5 \
action=srcnat \
comment="SRCNAT via ISP 1"
add chain=srcnat src-address=192.168.1.0/24 \
out-interface=ether2-isp2 routing-mark=via-isp2 \
to-addresses=198.51.100.5 \
action=srcnat \
comment="SRCNAT via ISP 2"
Saat migrasi ke RouterOS v7, pastikan untuk melakukan backup penuh konfigurasi
terlebih dahulu (/export file=backup-v6). Beberapa rule mungkin
memerlukan penyesuaian syntax, terutama yang berkaitan dengan passthrough,
connection-tracking, dan layer7-protocol. Test konfigurasi
di lingkungan staging sebelum diterapkan ke production.
8. Best Practices & Backup Rules
Mengkonfigurasi firewall yang efektif memerlukan perencanaan yang matang. Berikut best practices yang wajib diikuti untuk memastikan firewall MikroTik kamu berfungsi optimal dan aman.
Checklist Firewall MikroTik Terbaik
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β MIKROTIK FIREWALL BEST PRACTICES β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β 1. β
Selalu mulai dengan ACCEPT established/related β
β 2. β
Drop INVALID connection-state β
β 3. β
Limit akses ke management interface (Winbox, SSH) β
β 4. β
Gunakan address-list untuk IP management β
β 5. β
Konfigurasi default policy DROP untuk input/forward β
β 6. β
Aktifkan connection tracking β
β 7. β
Aktifkan fasttrack untuk performa β
β 8. β
Backup rules secara berkala β
β 9. β
Gunakan comment di setiap rule β
β 10. β
Monitor logs untuk aktivitas mencurigakan β
β 11. β
Batasi ICMP untuk anti-flood β
β 12. β
Gunakan NAT hanya pada interface yang tepat β
β 13. β
Nonaktifkan layanan yang tidak digunakan β
β 14. β
Update RouterOS secara berkala β
β 15. β
Gunakan username default yang diubah β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Script Backup & Restore Firewall Rules
# === BACKUP KONFIGURASI ===
# Backup penuh (binary) - cepat untuk restore
/system backup save name="firewall-backup-2026-06-20"
# Export dalam format teks (bisa diedit manual)
/export file="firewall-export-2026-06-20"
# Export hanya firewall rules
/ip firewall filter print file="filter-rules-backup"
/ip firewall nat print file="nat-rules-backup"
/ip firewall mangle print file="mangle-rules-backup"
/ip firewall address-list print file="address-list-backup"
# === RESTORE KONFIGURASI ===
# Restore dari backup binary
/system backup load name="firewall-backup-2026-06-20"
# Import dari file export (teks)
/import file-name="firewall-export-2026-06-20"
# === SCHEDULE AUTO BACKUP ===
# Buat backup otomatis setiap hari
/system scheduler
add name=daily-backup \
interval=1d \
on-event="\
/system backup save name=\"auto-backup-\$[:pick [/system clock get date] 0 4]-\$[:pick [/system clock get date] 5 7]-\$[:pick [/system clock get date] 8 10]\";\
/log info message=\"Daily backup completed\";\
" \
comment="Auto backup setiap hari"
Template Firewall Dasar (Copy-Paste Ready)
Berikut template firewall MikroTik yang bisa langsung kamu jalankan untuk setup awal keamanan. Ganti IP dan interface sesuai dengan konfigurasi jaringanmu.
# ================================================
# MIKROTIK FIREWALL TEMPLATE - BeebaneLabs
# Ganti IP, interface, dan password sesuai kebutuhan
# ================================================
# --- STEP 1: Address List untuk Management ---
/ip firewall address-list
add address=192.168.1.0/24 list=management comment="LAN Management"
add address=192.168.1.10 list=management comment="Admin PC"
# --- STEP 2: Disable Layanan Tidak Perlu ---
/ip service
set telnet disabled=yes
set ftp disabled=yes
set www disabled=yes
set api disabled=yes
set api-ssl disabled=yes
set winbox address=192.168.1.0/24
set ssh address=192.168.1.0/24
set www-ssl address=192.168.1.0/24
# --- STEP 3: Change Default Password ---
/user set admin password="R4h4s1a_S3cr3t!"
# --- STEP 4: Disable Hotspot, DHCP if not needed ---
# (Uncomment jika tidak menggunakan)
# /ip service set www disabled=yes
# --- STEP 5: Connection Tracking ---
/ip firewall connection tracking
set enabled=yes
# --- STEP 6: INPUT Chain ---
/ip firewall filter
# Accept established/related
add chain=input action=accept \
connection-state=established,related \
comment="INPUT: Accept established"
# Drop invalid
add chain=input action=drop \
connection-state=invalid \
comment="INPUT: Drop invalid"
# Accept loopback
add chain=input action=accept \
in-interface=loopback \
comment="INPUT: Accept loopback"
# Accept ICMP (rate limited)
add chain=input action=accept \
protocol=icmp limit=5/1,5 \
comment="INPUT: Accept ICMP (rate limit)"
# Accept Winbox from management
add chain=input action=accept \
protocol=tcp dst-port=8291 \
src-address-list=management \
comment="INPUT: Winbox from management"
# Accept SSH from management
add chain=input action=accept \
protocol=tcp dst-port=22 \
src-address-list=management \
comment="INPUT: SSH from management"
# Accept DNS from LAN (for router-as-DNS)
add chain=input action=accept \
protocol=udp dst-port=53 \
src-address=192.168.1.0/24 \
comment="INPUT: DNS from LAN"
# Accept NTP
add chain=input action=accept \
protocol=udp dst-port=123 \
src-address=192.168.1.0/24 \
comment="INPUT: NTP from LAN"
# Drop all other input
add chain=input action=drop \
comment="INPUT: Drop all other"
# --- STEP 7: FORWARD Chain ---
add chain=forward action=accept \
connection-state=established,related \
comment="FORWARD: Accept established"
add chain=forward action=drop \
connection-state=invalid \
comment="FORWARD: Drop invalid"
add chain=forward action=accept \
src-address=192.168.1.0/24 \
out-interface=ether1-wan \
comment="FORWARD: LAN to internet"
add chain=forward action=drop \
comment="FORWARD: Drop all other"
# --- STEP 8: NAT ---
/ip firewall nat
add chain=srcnat src-address=192.168.1.0/24 \
out-interface=ether1-wan action=masquerade \
comment="NAT: LAN to internet"
Setelah menerapkan firewall, selalu verifikasi dengan cara berikut:
β’ Cek rule aktif: /ip firewall filter print stats
β’ Cek hit count per rule untuk melihat rule mana yang bekerja
β’ Test dari luar jaringan menggunakan nmap atau ShieldsUP!
β’ Pastikan koneksi internet masih berfungsi untuk user di LAN
β’ Cek connection tracking: /ip firewall connection tracking print count
9. Quiz: Uji Pemahamanmu
Jawab pertanyaan berikut untuk menguji pemahaman kamu tentang konfigurasi firewall di MikroTik RouterOS. Pilih satu jawaban terbaik untuk setiap pertanyaan.