Filter Rules nastavení ve Firewall na MikroTik routeru

Bez ohledu na to, jaký MikrotTik router máte, jeho operační systém a správcovské rozhraní Router OS je vždy stejné. Tato wiki page popisuje funkci a nastavení Firewall.

Podstata funkce Filter Rules

Filter Rules slouží k definování pravidel firewallu, která určují, jak router zpracovává příchozí a odchozí síťový provoz. Skrze Firewall rules lze kontrolovat přístup k síťovým zdrojům, blokovat nežádoucí provoz, omezit síťové útoky a realizovat další bezpečnostní politiky.

Ve výchozím nastavení, MikroTik RouterOS funguje na principu "default deny". Koncept "default deny" nebo "implicitně zamítnout" ve firewall pravidlech znamená, že veškerý síťový provoz, který není explicitně povolen prostřednictvím definovaných pravidel, je automaticky blokován.

Prostřednictvím firewall rules se specifikují:

  • podmínky přístupu z vnějšku do routeru (chain=input) pouze traffic související se správou routeru - ssh, webfig apod
  • podmínky přístupu z vnějšku do zařízení za routerem (chain=forward )
  • podmínky přístupu ze zařízení za routerem do internetu ( chain=output )

RouterOS v továrním nastavení má již několik předdefinovaných filter rules umožńujících často žádanou funkcionalitu, jako je například možnost přistupování ze zařízení za routerem k internetu. Význam jednotlivých pravidel naleznete v sekci předdefinovaná pavidla.

Přehled nastavených pravidel na routeru

  • V terminálu: /ip/firewall/filter. Výpis příkazem print.
  • Ve Webfig/Winbox: záložka Filter Rules sekce IP/Firewall.

Vysvětlení předdefinovaných pravidel

Screenshot níže pochází z prostředí Webfig (služba www), a to sekce IP/Firewall → záložka Filter Rules.

Níže je terminálový záznam každého z pravidel výše s vysvětlením jeho funkce.

  • 0  D ;;; special dummy rule to show fasttrack counters
    chain=forward action=passthrough

    Speciální pravidlo pro zobrazení počítadel pro FastTrack provoz. Pravidlo samo o sobě neuplatňuje žádnou konkrétní akci na provoz (jde o akci passthrough) - jeho primární účel je umožnit sledování a zobrazování statistik pro FastTrackovaný provoz v rámci firewallu.

  • 1    ;;; defconf: accept established,related,untracked
    chain=input action=accept connection-state=established,related,untracked

    Umožňuje provoz, který je označen jako již ustanovený (established), související (related), nebo není sledován (untracked) - jinými slovy, traffic, který je routeru již znám jako součást existujícího spojení nebo je s ním nějakým způsobem související. To zahrnuje odpovědi na požadavky odeslané z vaší lokální sítě, což je nezbytné pro normální fungování například internetových aplikací. Tímto pravidlem se zajišťuje, že odpovědi na požadavky odeslané z vaší sítě na internet budou přijaty zpět skrze firewall.

  • 2    ;;; defconf: drop invalid
    chain=input action=drop connection-state=invalid

    Drop Invalid: Odhazuje jakýkoliv provoz, který je považován za neplatný nebo poškozený.

  • 3    ;;; defconf: accept ICMP
    chain=input action=accept protocol=icmp

    Povolení zacházení s ICMP (Internet Control Message Protocol) provozem. ICMP je klíčový protokol používaný na internetu pro diagnostické účely a správu sítě, nejznámější díky své roli v ping a traceroute operacích, které umožňují testování dostupnosti a cesty síťových spojení.

  • 4    ;;; defconf: accept to local loopback (for CAPsMAN)
    chain=input action=accept dst-address=127.0.0.1

    Povolení vstupního (input) provozu směřujícího na lokální smyčkové rozhraní (loopback interface), obvykle identifikované IP adresou 127.0.0.1. Toto pravidlo je zásadní pro řadu interních procesů a služeb, které běží na routeru, a může být zvláště důležité pro funkce, jako je CAPsMAN (Centralized Access Point Management) systém pro centralizovanou správu bezdrátových přístupových bodů.

  • 5    ;;; defconf: drop all not coming from LAN
    chain=input action=drop in-interface-list=!LAN

    Standardní bezpečnostní opatření zvyšující bezpečnost vašeho zařízení tím, že blokuje veškerý příchozí provoz na rozhraní input, který nepochází z lokální sítě (LAN)

  • 6    ;;; defconf: accept in ipsec policy
    chain=forward action=accept ipsec-policy=in,ipsec

    Umožňuje provoz, který je součástí definované IPSec politiky, přes router. Klíčové části tohoto pravidla jsou určeny k zajištění, že router akceptuje příchozí šifrovaný a bezpečný provoz IPSec, který je určen pro zařízení ve vaší síti nebo který pochází z vaší sítě a směřuje dovnitř.

    Cílem pravidla je umožnit bezpečný a šifrovaný provoz prostřednictvím IPSec tunelů nebo spojení, které byly vytvořeny pro zabezpečení komunikace mezi dvěma body (například mezi dvěma pobočkami firmy, nebo mezi koncovým uživatelem a VPN serverem). Povolením tohoto provozu router umožňuje:

    • Bezpečnou komunikaci mezi sítěmi nebo zařízeními chráněnými IPSec.
    • Ochrana citlivých dat během přenosu přes nezabezpečené sítě, jako je internet.

    IPSec je široce používán pro vytváření VPN (Virtuální Privátní Sítě), k zabezpečení vzdáleného přístupu a k ochraně dat v pohybu mezi různými sítěmi. Toto pravidlo tedy hraje klíčovou roli ve zjednodušení správy bezpečnostních politik tím, že automaticky povoluje veškerý provoz, který je již považován za bezpečný díky aplikaci IPSec politik, a zároveň zajišťuje, že nešifrovaný nebo neautorizovaný provoz zůstane blokován.

  • 7    ;;; defconf: accept out ipsec policy
    chain=forward action=accept ipsec-policy=out,ipsec

    Obdobně jako u předchozího pravidla, avšak zatímco pravidlo č. 6 umožňuje příchozí IPSec provoz, pravidlo č. 7 specificky povoluje odchozí šifrovaný a bezpečný provoz IPSec, který prochází routerem. Toto pravidlo je zásadní pro správnou funkci IPSec VPN, protože zajistí, že veškerý provoz definovaný v IPSec politikách a směřující z vaší sítě je povolen procházet firewall bez omezení..

  • 8    ;;; defconf: fasttrack
    chain=forward action=fasttrack-connection hw-offload=yes connection-state=established,related

    Umožňuje "fasttrack" spojení pro provoz, který již byl ustanoven a je související. FastTrack je optimalizace, která značně zvyšuje propustnost routeru pro běžný provoz. action=fasttrack-connection se aplikuje na provoz, který odpovídá connection-state=established,related, což jsou spojení, která již byla navázána (např. běžné prohlížení internetu) nebo jsou nějakým způsobem spojena s již existujícím spojením. Toto pravidlo efektivně umožňuje rychlý průchod pro většinu odchozího provozu z lokální sítě.

  • 9    ;;; defconf: accept established,related, untracked
    chain=forward action=accept connection-state=established,related,untracked

    Accept Established, Related, Untracked: Podobně jako u input, ale pro procházející provoz routerem k zařízením za routerem.

  • 10    ;;; defconf: drop invalid
    chain=forward action=drop connection-state=invalid

    Drop Invalid: Odhazuje neplatný procházející provoz.

  • 11    ;;; defconf: drop all from WAN not DSTNATed
    chain=forward action=drop connection-state=new connection-nat-state=!dstnat in-interface-list=WAN

    Drop All from WAN Not DSTNATed: Blokuje veškerý nový příchozí provoz z WAN, který není cílem NAT pravidla, což pomáhá chránit síť před nevyžádaným nebo potenciálně škodlivým provozem.

Další pravidla

  • X    ;;; Remote Winbox access
    chain=input action=accept protocol=tcp dst-port=8291 log=no log-prefix=""

    Remote Winbox Access: Povoluje přístup k WinBoxu (TCP port 8291) z jakékoli adresy (není specifikováno src-address).

  • X    ;;; Allow IKE for IPSec
    chain=input action=accept protocol=udp dst-port=500 log=no log-prefix=""

    Allow IKE for IPSec: Povoluje Internet Key Exchange (UDP port 500), který je používán pro navázání IPSec tunelů.

  • X    ;;; Allow L2TP
    chain=input action=accept protocol=udp dst-port=1701 log=no log-prefix=""

    Allow L2TP: Povoluje L2TP VPN provoz (UDP port 1701).

  • X    ;;; Allow ESP for IPSec
    chain=input action=accept protocol=ipsec-esp log=no log-prefix=""

    Allow ESP for IPSec: Povoluje Encapsulating Security Payload, což je část IPSec protokolu pro šifrovaný přenos dat.

  • X    ;;; Allow IPSec NAT-T
    chain=input action=accept protocol=udp in-interface=ether1 dst-port=4500 log=no log-prefix=""

    Allow IPSec NAT-T: Povoluje IPSec Network Address Translation Traversal (UDP port 4500) pro situace, kdy jsou IPSec klienti/serverská zařízení za NATem.

  • X    ;;; Allow WebFig access from LAN
    chain=input action=accept protocol=tcp src-address=192.168.88.0/24 dst-port=443

    Allow WebFig Access from LAN: Povoluje přístup k webovému rozhraní routeru (WebFig) pro HTTPS (port 443) pouze z LAN sítě (192.168.88.0/24).

  • X    ;;; Allow WebFig access from LAN
    chain=input action=accept protocol=tcp src-address=192.168.88.0/24 dst-port=80

    Allow WebFig Access from LAN: Povoluje přístup k webovému rozhraní routeru (WebFig) pro HTTP (port 80) pouze z LAN sítě (192.168.88.0/24).

Filter rules parametry a akce:

K výpisu Filter Rules se lze dostat následujícím způsobem:

  • V terminálu: /ip/firewall/filter. Výpis příkazem print.
  • Ve Webfig/Winbox: záložka Filter Rules sekce IP/Firewall.

Screenshot níže pochází z prostředí Webfig.

Popis sloupců / účel parametrů

  • # (Číslo): Zobrazuje sekvenční číslo pravidla v rámci firewallu. Toto číslo není pevné a může se změnit, pokud jsou pravidla přidávána, odstraňována nebo přesouvána.
  • Comment: Poskytuje místo pro uživatelský komentář k pravidlu, který může obsahovat popis pravidla nebo jiné poznámky pro lepší orientaci v konfiguraci.
  • Action:: Udává akci, která bude provedena, pokud paket odpovídá kritériím pravidla.
  • Chain: Identifikuje řetězec (chain), do kterého pravidlo patří.
    • input - příchozí provoz do routeru (routerových služeb a rozhraní) - například přihlašovací pokusy přes SSH nebo Winbox. Lze zde definovat pravidla pro blokování neautorizovaného přístupu nebo pro povolení provozu pouze z důvěryhodných zdrojů.
    • forward - provoz procházející routerem, který není určen pro samotný router. Jedná se o provoz mezi různými síťemi, například mezi interní sítí a internetem. Používá se pro implementaci bezpečnostních politik pro síťový provoz procházející routerem, jako je filtrace provozu, omezení přístupu k určitým službám nebo síťovým segmentům, a ochrana interních sítí před potenciálně škodlivým provozem z vnějšku.
    • output - odchozí provoz z routeru - řídí provoz generovaný routerem a směřující ven z něj. Zahrnuje pakety odesílané z routeru do jiných zařízení nebo sítí. Může být použit pro monitorování nebo omezení odchozího provozu z routeru, jako jsou systémové upozornění, DNS dotazy nebo pokusy o aktualizaci firmware. Tento řetězec umožňuje administrátorům zabezpečit, že odchozí provoz z routeru splňuje bezpečnostní politiky a není zneužit pro šíření malwaru nebo útoků.
  • Src. Address: Zobrazuje zdrojovou IP adresu nebo rozsah adres, pro které pravidlo platí. Pokud je toto pole prázdné, pravidlo se vztahuje na veškerý zdrojový provoz.
  • Dst. Address: Zobrazuje cílovou IP adresu nebo rozsah adres, pro které pravidlo platí. Pokud je toto pole prázdné, pravidlo se vztahuje na veškerý cílový provoz.
  • Protocol: Specifikuje síťový protokol, na který se pravidlo vztahuje
  • Dst. Port: Udává cílový port nebo rozsah portů pro TCP nebo UDP protokoly, na které se pravidlo vztahuje.
  • In. Interface: Identifikuje vstupní síťové rozhraní, přes které musí provoz procházet, aby na něj pravidlo platilo.
  • Out. Interface: Identifikuje výstupní síťové rozhraní, které se používá pro pravidla řetězce output nebo forward, specifikující, kam směřuje provoz.
  • Bytes: Zobrazuje celkový počet bytů, které odpovídají pravidlu. Toto je užitečné pro monitorování množství provozu ovlivněného pravidlem.
  • Packets: Ukazuje celkový počet paketů, které prošly pravidlem. Podobně jako byte, toto je užitečné pro monitorování aktivity pravidla.

Filter Actions

  • accept - Accept umožňuje paketům projít firewall bez dalších omezení. Pokud pravidlo s touto akcí odpovídá síťovému provozu, paket je přijat a pokračuje ve své cestě do cíle. Další pravidla pro daný paket již nejsou vyhodnocována.
  • drop - Drop zahodí pakety, což znamená, že na ně nebude žádná odpověď. Útočník nebo zdroj paketů nebude mít žádné explicitní potvrzení, že byl paket zahozen. Další pravidla pro daný paket již nejsou vyhodnocována.
  • reject - Reject odmítne pakety a na rozdíl od drop, firewall odešle zpět odesílateli zprávu o odmítnutí. Další pravidla pro daný paket již nejsou vyhodnocována.
  • fasttrack - Fasttrack zrychlí průchod paketů tím, že jsou vyjmuty z běžného zpracování firewallu. Tato funkce je navržena tak, aby zlepšila celkový výkon routeru tím, že snižuje zátěž CPU routeru při zpracování velkého množství paketů, obzvláště u síťového provozu, který nepotřebuje procházet všemi kontrolami firewallu, jako je například běžný internetový prohlížeč nebo streamovací provoz. Další pravidla firewallu pro toto spojení se většinou ignorují.
  • jump = přeskočení na jiný chain (řetězec pravidel) ve firewallu. Umožňuje organizovat pravidla firewallu do logických skupin pro lepší správu a přehlednost. Když pravidlo s akcí jump odpovídá paketu, zpracování se přesune do specifikovaného chainu.
  • log = zápis informace o paketu do systémového logu. Lze specifikovat, které informace o paketu se mají logovat.
  • passthrough - Akce passthrough nekončí zpracování pravidel pro daný paket. Po aplikaci pravidla s touto akcí bude paket pokračovat v procházení dalšími pravidly v chainu, a tedy je umožněno kombinovat více akcí pro jeden paket, například logování a následné přesměrování nebo filtraci.
  • return - Přeruší zpracování v aktuálním chainu a vrátí se zpět do nadřazeného chainu, pokud bylo zpracování započato akcí jump.
  • tarpit - Zpomalí komunikaci s útočníkem tím, že udržuje TCP spojení otevřené, ale velmi pomalu odpovídá na jakékoli pokusy o komunikaci.
  • add dst to address list - Přidá cílovou (dst) IP adresu paketu do specifikovaného seznamu adres. Tato akce neovlivňuje další zpracování paketu.
  • add src to address list - Přidá zdrojovou (src) IP adresu paketu do specifikovaného seznamu adres. Stejně jako předchozí akce, neovlivňuje další zpracování paketu.

Duležitost pořadí pravidel

Pravidla ve firewallu jsou zpracovávána sekvenčně odshora dolů. Když síťový paket odpovídá kritériím definovaným v pravidle, toto pravidlo je aplikováno. V návaznosti na konkrétní akci, logický tok na další pravidla může anebo nemusí pokračovat. Správné uspořádání pravidel tedy může zlepšit výkon routeru tím, že rychle zpracovává nejčastější nebo nejkritičtější provoz.

Tipy pro volbu pořadí pravidel

  • FastTrack pravidlo (chain=forward action=fasttrack-connection) umožňuje rychlejší zpracování běžného provozu tím, že jej vynechá z některých dalších kontrol. Mělo by být umístěno relativně vysoko v seznamu pravidel, ale až po pravidlech, které odmítají neplatný a potenciálně škodlivý provoz.
  • Pravidla umožňující přístup k běžně používaným službám, jako je SSH, WinBox, WebFig, IKE pro IPSec, a L2TP, by měla být umístěna výše, pokud očekáváte vysokou frekvenci legálního provozu pro tyto služby. Nicméně, je také důležité zvážit bezpečnostní rizika a potenciálně umístit některá omezující pravidla před ně, pokud chcete zvýšit bezpečnost.
  • Pravidla, která omezuje přístup z určitých sítí (např. chain=input action=accept src-address=192.168.88.0/24 pro WebFig), jsou užitečná pro zvýšení bezpečnosti, ale zároveň je třeba zajistit, aby neblokovala legitimní provoz.
  • Odmítnutí neplatného provozu: chain=input action=drop connection-state=invalid a chain=forward action=drop connection-state=invalid) je kritické pro zvýšení bezpečnosti vaší sítě. Tato pravidla by měla být umístěna na začátku relevantních řetězců (input a forward), aby se co nejdříve eliminovaly neplatné nebo poškozené pakety, což zvyšuje celkovou bezpečnost a pomáhá ušetřit zpracovatelský čas routeru tím, že se zabrání zbytečnému zpracování neplatných paketů.
  • Odmítnutí nepovoleného provozu: , který neodpovídá žádnému z předchozích povolení (chain=input action=drop na konci input řetězce a chain=forward action=drop na konci forward řetězce), by měla být umístěna na konci těchto řetězců. To zajistí, že veškerý povolený provoz prochází podle specifických pravidel nastavených výše v seznamu, zatímco veškerý ostatní provoz, který není explicitně povolen, je na konci procesu odmítnut.

Změna pořadí pravidel

  • Winbox / Webfig: přetažením myši (ve Webfig mi aktuálně nejde )
  • Terminál:
    • Výpis pravidel se provede příkazem print.
    • Přesun pravidla příkazem move numbers="[old rule no] destination="[new rule no]"

Nastavení firewall pro vzdálený přístup

Ve výchozím stavu, RouterOS neumožnuje přístup k routeru skrze WAN. To lze povolit přidáním následujícího pravidla.

  1. Přejděte na kartu Filter Rules v nabídce IP/Firewall (http://192.168.88.1/webfig/#IP:Firewall.Filter_Rules.)
  2. Tlačítkem Add New / popř. + přejděte do nabídky tvorby nového pravidla
  3. Nakonfigurujte parametry pravidla:
    • Chain: Nastavte na input (toto pravidlo se bude týkat vstupujícího provozu).
    • Protocol: Vyberte protokol používaný pro vzdálený přístup (např. TCP pro RDP nebo SSH).
    • Dst. Port: Zadejte port, který je používán pro vzdálený přístup (např. 8291 pro Winbox, 3389 pro RDP, 22 pro SSH), viz sekce routerových služeb.
    • Action: Nastavte na accept, což umožní provoz na daném portu.
    • Comment: Přidejte komentář pro snadnou identifikaci pravidla (např. "Allow RDP" nebo "Allow SSH").
    • Další nepovinné specifikace:
      • Src. Address: Můžete zde zadat specifické IP adresy nebo rozsahy adres, ze kterých chcete povolit přístup.
    • Uložte pravidlo kliknutím na tlačítko Apply nebo Ok.
  4. Úprava pořadí pravidla: Aby bylo pravidlo v rámci toku paketu reflektováno, přesuňte jej nad poslední pravidlo s akcí drop.

Příklad blokování veškerého příchozího přístupu k službám routeru z vnějšku, kromě přístupu přes VPN:

Pravidlo níže musí být v pořadí až za pravidlem explicitně povolujícím provoz z VPN subnetů. Available From nastavte rovněž pro přístupové služby, a to na IP adresy/subnety, které odpovídají rozsahu adres přidělených VPN klientům.

  • Chain: input
  • Src. Address: Umožňuje specifikovat všechny adresy mimo VPN subnety, nebo nechat prázdné pro blokování všech vnějších zdrojů.
  • Action: drop