İçeriğe geç
MikroTik · · 20 dk okuma · Orta

MikroTik Firewall Kuralları — Başlangıçtan İleri Seviyeye

RouterOS firewall chain yapısı, input/forward/output farkı, address list kullanımı, NAT kuralları ve production-ready kural setleri. KOBİ ve ISP edge senaryolarıyla.

#mikrotik #firewall #routeros #guvenlik #nat #address-list
TL;DR

RouterOS firewall chain yapısı, input/forward/output farkı, address list kullanımı, NAT kuralları ve production-ready kural setleri. KOBİ ve ISP edge senaryolarıyla.

Accept (açık)
Varsayılan politika
(MikroTik Docs)
%68
Yapılandırma kaynaklı ihlal
(Verizon DBIR 2024)
500K+
CVE-2023-30799 etkilenen cihaz
(NIST NVD)
İçindekiler
Son güncelleme: 12 Mart 2026

MikroTik router’ın firewall’ı hiç yapılandırılmamışsa, varsayılan kural “her şeye izin ver” demek. Bu durum hem yönetim arayüzünü hem de iç ağı açık bırakır. Doğru yapılandırılmış bir firewall ise brute-force girişimlerini keser, yetkisiz yönetim erişimini engeller ve segmentler arası trafiği kontrol altına alır. Bu yazı, sıfırdan başlayıp production-ready bir kural seti oluşturmayı gösteriyor.

Firewall Mantığı — 2 Dakikada

RouterOS’ta her paket üç zincirden (chain) birinden geçer:

[İNTERNET] → Router → [İÇ AĞ]

           Router OS
         (input chain)
ChainNe Kontrol EderÖrnek
inputRouter’a gelen trafikSSH bağlantısı, ping, VPN
forwardRouter’dan geçen trafikLAN → İnternet, VLAN arası
outputRouter’dan çıkan trafikRouter’ın kendi oluşturduğu paketler

Kritik nokta: Paketler kurallara yukarıdan aşağıya bakılır, ilk eşleşen kural uygulanır ve durur. Bu yüzden kural sırası belirleyici.

Varsayılan Politika

RouterOS’ta kural yazılmamışsa accept. Son kural olarak drop eklemek iyi pratik:

/ip firewall filter
add chain=input action=drop comment="Catch-all drop — son kural"
add chain=forward action=drop comment="Catch-all drop — son kural"

Dikkat: Bu kuralları son sıraya ekle. Şu an aktif bağlantıların kesilmemesi için established,related kuralını önce ekle.


Chain’ler: Ne İşe Yarar?

Input Chain

Router’ın kendisine gelen trafiği yönetir. Yanlış yapılandırılırsa router yönetim erişimi açık kalır.

Neler input’a girer:

  • SSH, Telnet, WinBox erişimi
  • SNMP sorguları
  • DNS sorguları (router recursive resolver olarak kullanılıyorsa)
  • VPN tüneli başlatma (IKEv2, L2TP)
  • ICMP (ping)

Forward Chain

En çok kural yazılan yer. Router üzerinden geçen trafiği kontrol eder.

Neler forward’a girer:

  • LAN cihazlarının internet erişimi
  • VLAN’lar arası trafik
  • DMZ’den iç ağa erişim girişimleri
  • Port yönlendirilen (dstnat) trafiğin iç hedefe ulaşması

Output Chain

Router’ın kendi oluşturduğu paketler. Genellikle az kural yazılır ama monitoring, DNS ve NTP trafiği buradan geçer.


Temel Güvenlik Kuralları

Her MikroTik router’da olması gereken minimum kural seti:

/ip firewall filter

# 1. Established ve related bağlantılara izin ver
# Aktif bağlantıların kesilmesini önler
add chain=input action=accept connection-state=established,related \
    comment="01 - Accept established/related"

add chain=forward action=accept connection-state=established,related \
    comment="02 - Accept established/related (forward)"

# 2. Invalid paketleri düşür
# TCP state machine hatası — sahte veya zarar amaçlı paketler
add chain=input action=drop connection-state=invalid \
    comment="03 - Drop invalid"

add chain=forward action=drop connection-state=invalid \
    comment="04 - Drop invalid (forward)"

# 3. Loopback arayüzüne izin ver
add chain=input action=accept in-interface=lo \
    comment="05 - Accept loopback"

# 4. ICMP rate limit — ping flood koruması
add chain=input action=accept protocol=icmp \
    limit=50/5s,10:packet \
    comment="06 - ICMP rate limited"

add chain=input action=drop protocol=icmp \
    comment="07 - Drop excess ICMP"

# 5. Yönetim erişimi — sadece güvenilir IP'lerden
# Kendi IP'ni veya VPN subnet'ini buraya yaz
add chain=input action=accept src-address=192.168.88.0/24 \
    protocol=tcp dst-port=22,8291,443 \
    comment="08 - Management access from LAN only"

# 6. WinBox ve SSH'ı internetten kapat
add chain=input action=drop in-interface-list=WAN \
    protocol=tcp dst-port=22,23,8291 \
    comment="09 - Block management from WAN"

# 7. Tüm diğer input trafiğini düşür
add chain=input action=drop \
    comment="10 - Catch-all drop (input)"

# 8. LAN'dan internete çıkışa izin ver
add chain=forward action=accept in-interface-list=LAN \
    out-interface-list=WAN \
    comment="11 - LAN to WAN"

# 9. Tüm diğer forward trafiğini düşür
add chain=forward action=drop \
    comment="12 - Catch-all drop (forward)"

Interface list oluşturmayı unutma:

/interface list
add name=WAN
add name=LAN

/interface list member
add interface=ether1 list=WAN
add interface=bridge-lan list=LAN

Address List Kullanımı

Address list, IP adreslerini gruplayarak kuralları basitleştirir. Dinamik olarak da güncellenebilir.

Statik Whitelist (Yönetim Erişimi)

/ip firewall address-list
add address=203.0.113.10 list=mgmt-whitelist comment="Ofis dışı yönetim IP"
add address=192.168.88.0/24 list=mgmt-whitelist comment="Dahili ağ"

/ip firewall filter
add chain=input action=accept src-address-list=mgmt-whitelist \
    protocol=tcp dst-port=22,8291 \
    comment="Management — whitelist only"

Dinamik Brute-Force Koruması

3 başarısız girişten sonra IP’yi otomatik blacklist’e al:

/ip firewall filter

# Aşamalar: İlk ve ikinci hatalı girişi say
add chain=input action=add-src-to-address-list \
    protocol=tcp dst-port=22 connection-state=new \
    src-address-list=ssh-stage2 \
    address-list=ssh-blacklist address-list-timeout=10d \
    comment="SSH BF: 3. deneme → blacklist"

add chain=input action=add-src-to-address-list \
    protocol=tcp dst-port=22 connection-state=new \
    src-address-list=ssh-stage1 \
    address-list=ssh-stage2 address-list-timeout=1m \
    comment="SSH BF: 2. deneme → stage2"

add chain=input action=add-src-to-address-list \
    protocol=tcp dst-port=22 connection-state=new \
    address-list=ssh-stage1 address-list-timeout=1m \
    comment="SSH BF: 1. deneme → stage1"

# Blacklist'teki IP'leri düşür
add chain=input action=drop src-address-list=ssh-blacklist \
    comment="SSH BF: Drop blacklisted"

Pratik ipucu: Bu kuralları SSH kurallarından önce yerleştir. Kural sırası kritik.


Layer 7 Protocol Filtering

L7 filtering her paketi regex ile tarar. CPU yoğun — yüksek trafikte dikkatli kullan.

Ne Zaman Kullanılır?

  • Port bazlı engelleme yetmediğinde (BitTorrent farklı portlardan geçiyorsa)
  • Belirli protokolleri trafikten ayırt etmek gerektiğinde

Örnek: Torrent Engelleme

/ip firewall layer7-protocol
add name=bittorrent regexp="^(\x13bittorrent|azaq|\x04-?\x00\x00\x00)"

/ip firewall filter
add chain=forward action=drop layer7-protocol=bittorrent \
    comment="L7: Drop BitTorrent"

Performans Uyarısı

L7 filtresi ilk 10 paketi veya ilk 2KB’yi inceler. Bant genişliği arttıkça CPU yükü doğru orantılı artar. 100+ Mbps trafikte L7 yerine connection mark veya Simple Queue tercih edilebilir.


NAT Kuralları

srcnat — Masquerade

LAN’daki cihazların internet çıkışı için:

/ip firewall nat
add chain=srcnat action=masquerade out-interface-list=WAN \
    comment="Masquerade — LAN to WAN"

dstnat — Port Forwarding

Dışarıdan iç sunucuya erişim:

# Web sunucusu (80/443) → 192.168.88.100'e yönlendir
/ip firewall nat
add chain=dstnat action=dst-nat \
    protocol=tcp dst-port=80,443 in-interface-list=WAN \
    to-addresses=192.168.88.100 to-ports=80,443 \
    comment="Port forward: Web server"

# RDP → sadece VPN'den gelen trafiğe izin ver
add chain=dstnat action=dst-nat \
    protocol=tcp dst-port=3389 in-interface=ovpn-server \
    src-address-list=vpn-users \
    to-addresses=192.168.88.50 to-ports=3389 \
    comment="Port forward: RDP (VPN only)"

Hairpin NAT

Senaryo: İç ağdaki PC, sirket.com (83.45.12.10) adresine bağlanmaya çalışıyor. Bu IP aslında aynı ağdaki sunucuya yönlendiriliyor. Router bunu desteklemiyorsa bağlantı başarısız olur.

/ip firewall nat
add chain=srcnat action=masquerade \
    out-interface=bridge-lan \
    dst-address=192.168.88.100 \
    comment="Hairpin NAT — internal server via public IP"

Connection Tracking

ConnTrack tablosu tüm aktif bağlantıları takip eder. Büyük ağlarda performansı etkiler.

# Mevcut connection tracking tablosunu gör
/ip firewall connection print

Timeout Ayarları (ISP/Büyük Ağ)

/ip firewall connection tracking
set tcp-established-timeout=1d
set tcp-time-wait-timeout=10s
set tcp-syn-received-timeout=5s
set udp-timeout=10s
set udp-stream-timeout=1m

Küçük ağlarda varsayılan değerler yeterli. 10.000+ eş zamanlı bağlantıda tablo dolar, paket kaybı başlar.


Firewall Log Analizi

Kuralları loglamak sorun tespitini kolaylaştırır ama çok kural loglanırsa disk ve CPU etkilenir.

Seçici Loglama

# Sadece drop edilen ve şüpheli paketleri logla
/ip firewall filter
add chain=input action=log log-prefix="[DROP-INPUT] " \
    connection-state=new in-interface-list=WAN \
    comment="Log: New connections from WAN (debug)"

Graylog Entegrasyonu

/system logging action
add name=remote target=remote remote=192.168.88.200 remote-port=514 \
    bsd-syslog=yes syslog-facility=local0 syslog-severity=info

/system logging
add action=remote topics=firewall

Log analizi yaparken dikkat edilecek pattern’ler:

  • Aynı IP’den kısa sürede yüzlerce bağlantı girişimi → port scan
  • dst-port=22,3389,23,445 → yönetim portlarına brute-force
  • Gece saatlerinde iç ağdan dışarıya büyük veri transferi → veri sızdırma

Yaygın Hatalar ve Çözümleri

Problem: “İnternete çıkamıyorum”

Büyük ihtimalle forward chain’de catch-all drop var ama LAN→WAN kuralı eksik veya yanlış interface list kullanılmış.

# Kontrol et:
/ip firewall filter print where chain=forward
# LAN to WAN kuralı var mı? Interface list doğru mu?

/interface list print
/interface list member print
# ether1 WAN listesinde mi? Bridge LAN listesinde mi?

Problem: “VPN bağlanamıyorum”

IKEv2/IPSec için gerekli portlar input chain’de açık değil:

/ip firewall filter
add chain=input action=accept protocol=udp dst-port=500,4500 \
    comment="IKEv2 — UDP 500/4500"
add chain=input action=accept protocol=ipsec-esp \
    comment="IPSec ESP"

Problem: “Kural çalışmıyor”

Kural sırasını kontrol et. print çıktısında kuralların numarasına bak:

/ip firewall filter print
# Kuralın drop kuralından önce mi yoksa sonra mı olduğuna bak

Catch-all drop’tan sonra eklenen kural hiçbir zaman çalışmaz.

Problem: “WinBox aniden bağlanmıyor”

Brute-force koruması kendi IP’ni blacklist’e aldı:

/ip firewall address-list print where list=ssh-blacklist
# Kendi IP'n orada mı?
/ip firewall address-list remove [find where address=SENIN_IPIN]

Production-Ready Kural Seti

KOBİ Router (50 Çalışan, 3 VLAN)

Senaryo: 3 VLAN (yönetim: 192.168.10.0/24, çalışan: 192.168.20.0/24, misafir: 192.168.30.0/24). Dışarıdan VPN erişimi var.

/ip firewall filter

# === INPUT CHAIN ===
add chain=input action=accept connection-state=established,related comment="01-Input: Accept established"
add chain=input action=drop connection-state=invalid comment="02-Input: Drop invalid"
add chain=input action=accept in-interface=lo comment="03-Input: Accept loopback"
add chain=input action=accept protocol=icmp limit=50/5s,10:packet comment="04-Input: ICMP rate-limit"
add chain=input action=drop protocol=icmp comment="05-Input: Drop excess ICMP"
add chain=input action=drop src-address-list=ssh-blacklist protocol=tcp dst-port=22 comment="06-Input: Block SSH BF"
add chain=input action=add-src-to-address-list src-address-list=ssh-stage2 address-list=ssh-blacklist address-list-timeout=10d protocol=tcp dst-port=22 connection-state=new comment="07-Input: SSH BF stage3"
add chain=input action=add-src-to-address-list src-address-list=ssh-stage1 address-list=ssh-stage2 address-list-timeout=1m protocol=tcp dst-port=22 connection-state=new comment="08-Input: SSH BF stage2"
add chain=input action=add-src-to-address-list address-list=ssh-stage1 address-list-timeout=1m protocol=tcp dst-port=22 connection-state=new comment="09-Input: SSH BF stage1"
add chain=input action=accept src-address=192.168.10.0/24 protocol=tcp dst-port=22,8291,443 comment="10-Input: Management from mgmt VLAN"
add chain=input action=accept protocol=udp dst-port=500,4500 comment="11-Input: IKEv2"
add chain=input action=accept protocol=ipsec-esp comment="12-Input: IPSec ESP"
add chain=input action=drop in-interface-list=WAN comment="13-Input: Drop all WAN"

# === FORWARD CHAIN ===
add chain=forward action=accept connection-state=established,related comment="14-Fwd: Accept established"
add chain=forward action=drop connection-state=invalid comment="15-Fwd: Drop invalid"
add chain=forward action=accept in-interface=vlan10 out-interface-list=WAN comment="16-Fwd: Mgmt VLAN to WAN"
add chain=forward action=accept in-interface=vlan20 out-interface-list=WAN comment="17-Fwd: Staff VLAN to WAN"
add chain=forward action=accept in-interface=vlan30 out-interface-list=WAN comment="18-Fwd: Guest VLAN to WAN"
add chain=forward action=drop in-interface=vlan30 comment="19-Fwd: Guest VLAN isolation (no LAN access)"
add chain=forward action=accept in-interface=vlan10 out-interface=vlan20 comment="20-Fwd: Mgmt → Staff (admin erişimi)"
add chain=forward action=drop in-interface=vlan20 out-interface=vlan10 comment="21-Fwd: Staff → Mgmt block"
add chain=forward action=drop comment="22-Fwd: Catch-all drop"

# === NAT ===
/ip firewall nat
add chain=srcnat action=masquerade out-interface-list=WAN comment="Masquerade"

Pratik İpucu

Yeni bir kural seti uygulamadan önce Safe Mode kullan:

  1. WinBox’ta veya SSH’ta Ctrl+X ile Safe Mode’u etkinleştir
  2. Kuralları uygula
  3. 9 dakika içinde onaylamazsan RouterOS otomatik olarak eski duruma döner

Bu, uzaktan konfigürasyon sırasında kendi erişimini kesmeni engeller.

# SSH'tan safe mode başlatma
/system safe-mode
# "Revert in: 9 minutes" mesajı görünür
# Çıkmak için Ctrl+D (onaylar) veya Ctrl+C (geri alır)

Firewall konfigürasyonu canlı sistemde test edilecekse bu adımı atlama.

Kaynaklar

  1. RouterOS varsayılan firewall politikası accept'tir — kural yazılmamışsa her trafik geçer — MikroTik RouterOS Documentation — Firewall (2025)
  2. Ağ giriş filtrelemesi en temel güvenlik katmanıdır — RFC 2827 (BCP 38) — Network Ingress Filtering (2000)
  3. CVE-2023-30799: MikroTik RouterOS Super Admin ayrıcalık yükseltme açığı — NIST National Vulnerability Database (2023)
  4. Firewall yanlış yapılandırması veri ihlallerinin önde gelen nedenlerinden biridir — Verizon Data Breach Investigations Report (2024)

Sıkça Sorulan Sorular

MikroTik firewall default politikası nedir? +

RouterOS'ta varsayılan politika 'accept' — kural yazılmamışsa her trafik geçer. Bu yüzden en son kural olarak drop eklemek kritik. Yeni kurulan routerlarda mutlaka güvenlik kuralları tanımlanmalı.

Input chain ile forward chain farkı nedir? +

Input chain, router'ın kendisine gelen trafiği kontrol eder (yönetim erişimi, ping, VPN). Forward chain, router üzerinden geçen trafiği kontrol eder (LAN'dan internete çıkış, portlar arası trafik). Yanlış chain'e kural yazılırsa çalışmaz.

MikroTik address list otomatik güncellenebilir mi? +

Evet, script ve netwatch kombinasyonuyla dinamik address list oluşturabilirsin. Örneğin 3 kez başarısız giriş denemesi yapan IP'yi otomatik blacklist'e alabilirsin.

Layer 7 filtering ne zaman kullanılmalı? +

Sadece gerçekten gerekli olduğunda ve performans etkisini göze aldığında. L7 filtering CPU yoğun — her paketi regex'le tarar. Küçük trafik için uygun, yüksek bant genişliğinde sorun çıkarır.

NAT hairpin nedir ve neden lazım? +

İç ağdaki bir cihaz, dışarıdan erişilen sunucunun genel IP'si üzerinden aynı ağdaki başka bir sunucuya erişmeye çalıştığında sorun çıkar. Hairpin NAT bunu çözer — trafik router üzerinden döner.

Profesyonel Destek mi Lazım?

Bu konuda yardıma ihtiyacın varsa yanındayız. Kurulum, konfigürasyon ve sorun giderme için ulaş.

Paylaş X/Twitter LinkedIn

İlgili Yazılar