Autor: sutrus
Datum: 12 pro 2021 14:29
Zobrazení: 213
Popis: Filter


Úvod
Filtry brány firewall slouží k povolení nebo blokování určitých paketů předávaných do místní sítě, odesílaných z routeru nebo určených do routeru.

Existují dva způsoby nastavení filtrování:
  • povolit určitý provoz a vše ostatní zahodit
  • zahoďte pouze škodlivý provoz, vše ostatní je povoleno.
Obě metody mají své výhody a nevýhody, například z hlediska bezpečnosti je první metoda mnohem bezpečnější, ale vyžaduje vstup správce, kdykoli je třeba přijmout provoz pro novou službu. Tato strategie poskytuje dobrou kontrolu nad provozem a snižuje možnost narušení z důvodu chybné konfigurace služby.

Na druhou stranu při zabezpečení zákaznické sítě by bylo toto noční můrou administrátora, akceptovat všechny možné služby, které mohou uživatelé používat. Proto je v pokročilých nastaveních nezbytné pečlivé plánování brány firewall.

Filtr brány firewall se skládá ze tří předdefinovaných řetězců, které nelze odstranit:
Pfd1.png
  • input - slouží ke zpracování paketů vstupujících do routeru přes jedno z rozhraní s cílovou IP adresou, která je jednou z adres routeru.
    Pakety procházející(forward) routerem nejsou zpracovávány jako input.
  • forward - slouží ke zpracování paketů procházejících routerem.
  • output - slouží ke zpracování paketů vycházejících z routeru a opouštějících jej přes jedno z rozhraní.
    Pakety procházející(forward) routerem nejsou zpracovávány jako output.
Při zpracování řetězce jsou pravidla z řetězce přebírána v pořadí, v jakém jsou v něm uvedena, shora dolů. Pokud paket vyhovuje kritériím pravidla, provede se s ním zadaná akce a žádná další pravidla v tomto řetězci se již nezpracovávají (výjimkou jsou akce průchozích pravidel). Pokud paket nevyhověl žádnému pravidlu v rámci vestavěného řetězce, je přijat. Podrobnější zpracování paketů v systému RouterOS je popsáno ve schématu Tok paketů v systému RouterOS.



Vlastnosti
VlastnostPopis
action (název akce; výchozí: accept)Akce, která se provede, pokud je paket shodný s pravidlem:
  • accept - přijme paket. Paket není předán dalšímu pravidlu brány firewall
  • add-dst-to-address-list - přidá cílovou adresu do seznamu adres zadaného parametrem address-list
  • add-src-to-address-list - přidá zdrojovou adresu do seznamu adres zadaného parametrem address-list
  • drop - tiché zahození paketu
  • fasttrack-connection - zpracovává pakety ze spojení využívajícího FastPath zapnutím funkce FastTrack pro dané spojení
  • jump - skok na uživatelem definovaný řetězec určený hodnotou parametru jump-target
  • log - přidá do systémového protokolu zprávu obsahující následující údaje: in-interface, out-interface, src-mac, protokol, src-ip:port->dst-ip:port a délku paketu. Po porovnání paketu je paket předán dalšímu pravidlu v seznamu, podobně jako u passthrough
  • passthrough - pokud je paket v souladu s pravidlem, zvýší se čítač a přejde se na další pravidlo (užitečné pro statistiky)
  • reject - zahození paketu a odeslání zprávy ICMP o odmítnutí
  • return - předá řízení zpět do řetězce, odkud došlo ke skoku
  • tarpit - zachytí a podrží spojení TCP (na příchozí paket TCP SYN odpoví SYN/ACK)


address-list-timeout (none-dynamic / none-static / time; výchozí: none-dynamic)Časový interval, po kterém bude adresa odstraněna ze seznamu adres zadaného parametrem address-list. Používá se ve spojení s akcemi add-dst-to-address-list nebo add-src-to-address-list.
  • Hodnota none-dynamic (00:00:00) ponechá adresu v seznamu adres až do restartu
  • Hodnota none-static ponechá adresu v seznamu adres navždy a bude zahrnuta do exportu/zálohy konfigurace


chain (název; Výchozí: )Určuje, do kterého řetězce bude pravidlo přidáno. Pokud vstupní údaj neodpovídá názvu již definovaného řetězce, bude vytvořen nový řetězec


comment (řetězec; Výchozí: )Popis / komentář k pravidlu


connection-bytes (integer-integer; Výchozí: )Pracuje s pakety pouze tehdy, pokud bylo daným spojením přeneseno dané množství bajtů. 0 - znamená nekonečno, například connection-bytes=2000000-0 znamená, že pravidlo odpovídá, pokud bylo příslušným spojením přeneseno více než 2 MB


connection-limit (integer,netmask; Výchozí: )Pravidlo pracuje po dosažení dané hodnoty počtu připojení na adresu nebo blok adres. Měl by se používat společně s connection-state=new a/nebo s tcp-flags=syn, protože matcher je velmi náročný na zdroje


connection-mark (no-mark / string; Výchozí: )Porovnává pakety označenými pomocí funkce mangle s určitou značkou připojení. Pokud je nastaven no-mark, pravidlo bude odpovídat jakémukoli neoznačenému spojení


connection-nat-state (srcnat / dstnat; Výchozí: )Umožňuje porovnávat spojení, která jsou srcnatted, distracted nebo obojí. Všimněte si, že connection-state=related connection-nat-state je určeno směrem prvního paketu. Pokud sledování spojení potřebuje využít dst-nat k doručení tohoto spojení stejným hostitelům jako hlavní spojení, bude ve stavu connection-nat-state=dstnat, i když vůbec neexistují pravidla dst-nat


connection-rate (integer 0..4294967295; Výchozí: )Connection Rate umožňuje zachytávat provoz na základě aktuální rychlosti připojení


connection-state (established / invalid / new / related / untracked; Default: )
  • Interpretuje analytická data sledování připojení pro konkrétní paket:
  • established - paket, který patří k existujícímu spojení
  • invalid - paket, který nemá určený stav ve sledování spojení (neobvyklé pakety, pakety se špatným sekvenčním/ack číslem nebo v případě nadměrného využití prostředků na směrovači), z tohoto důvodu je neplatný paket vyloučen z NAT (pouze jako connection-state=new) a při směrování bude stále obsahovat původní zdrojovou IP adresu. Důrazně doporučujeme, aby byly všechny pakety connection-state=invalid v předávacích a vstupních řetězcích filtru firewallu zahozeny.
  • new - paket zahájil nové spojení nebo je jinak spojen se spojením, které dosud nevidělo pakety v obou směrech.
  • related - paket, který souvisí s existujícím spojením, ale není jeho součástí, například chyby ICMP nebo paket, který zahajuje datové spojení FTP.
  • untracked - paket, který byl nastaven tak, aby obcházel sledování spojení v RAW tabulkách firewallu.


connection-type (ftp / h323 / irc / pptp / quake3 / sip / tftp; Default: )Porovnává pakety ze souvisejících(related) spojení na základě informací z jejich pomocníků pro sledování připojení. Příslušný pomocník pro sledování spojení musí být povolen v rámci: /ip firewall service-port


content (string; Default: )Shoda paketů, které obsahují zadaný text


dscp (integer: 0..63; Default: )Porovnává obsah IP hlavičky DSCP


dst-address (IP/netmask / IP range; Default: )Porovnává pakety, jejichž cílová adresa se rovná zadané IP nebo spadá do zadaného rozsahu IP.


dst-address-list (name; Default: )Porovná cílovou adresu paketu se seznamem adres definovaným uživatelem.


dst-address-type (unicast / local / broadcast / multicast; Default: )Porovnává typ cílové adresy:
  • unicast - IP adresa použitá pro přenos z bodu do bodu
  • local - pokud je dst-adresa přiřazena jednomu z rozhraní směrovače
  • broadcast - paket je odeslán všem zařízením v podsíti
  • multicast - paket je předán definované skupině zařízení


dst-limit (integer[/time],integer,dst-address / dst-port / src-address[/time]; Default: )Porovnává pakety, dokud není překročena daná rychlost. Rychlost je definována jako počet paketů za časový interval. Na rozdíl od limit matcheru má každý tok svůj vlastní limit. Tok je definován parametrem mode. Parametry se zapisují takto: format: count[/time],burst,mode[/expire].
  • count - počet paketů v časovém intervalu na tok, kterému se má odpovídat
  • time - určuje časový interval, ve kterém nesmí být překročen počet paketů na tok (nepovinné, pokud není uvedeno, použije se 1s)
  • burst - počáteční počet paketů na tok k porovnání: tento počet se přečte o jedenkrát za čas/počet, až do tohoto počtu
  • mode - tento parametr určuje, jaká jedinečná pole definují tok (src-adresa, dst-adresa, src-a-dst-adresa, dst-adresa-a-port, adresy-a-dst-port)
  • expire - určuje interval, po jehož uplynutí bude tok bez paketů povoleno smazat (nepovinné)


dst-port (integer[-integer]: 0..65535; Default: )Seznam cílových portů nebo rozsahů portů


fragment (yes/no; Default: )Porovnává fragmentované pakety. První (počáteční) fragment se nepočítá. Pokud je povoleno sledování spojení, nebudou žádné fragmenty, protože systém automaticky sestaví každý paket.


hotspot (auth / from-client / http / local-dst / to-client; Default: )Porovnává pakety přijaté od klientů služby HotSpot s různými přiřazovacími programy služby HotSpot.
  • auth - porovnává pakety ověřených klientů HotSpotu
  • from-client - porovnává pakety, které přicházejí od klienta HotSpotu
  • http - porovnává požadavky HTTP odeslané na server HotSpot
  • local-dst - porovnává pakety, které jsou určeny serveru HotSpot
  • to-client - porovnává pakety, které jsou odesílány klientovi HotSpotu


icmp-options (integer:integer; Default: )Porovnává typy ICMP: pole s kódů


in-bridge-port (name; Default: )Aktuální rozhraní, přes které paket vstoupil do routeru, pokud je příchozí rozhraní most(bridge). Funguje pouze v případě, že je v nastavení mostu povoleno use-ip-firewall


in-bridge-port-list (name; Default: )Seznam rozhraní definovaných v Interface List. Funguje stejně jako in-bridge-port


in-interface (name; Default: )Rozhraní, přes které paket vstoupil do routeru


in-interface-list (name; Default: )Seznam rozhraní definovaných v Interface List. Funguje stejně jako in-interface


ingress-priority (integer: 0..63; Default: )Odpovídá prioritě vstupního paketu. Priorita může být odvozena z bitů VLAN, WMM, DSCP nebo MPLS EXP. další informace


ipsec-policy (in / out, ipsec / none; Default: )Odpovídá zásadě používané protokolem IPsec. Hodnota se zapisuje v následujícím formátu: direction, policy. Směr slouží k výběru, zda se má shodovat se zásadou použitou pro dekapsulaci, nebo se zásadou, která bude použita pro zapouzdření.
  • in - platí v řetězcích PREROUTING, INPUT a FORWARD
  • out - platí v řetězcích POSTROUTING, OUTPUT a FORWARD
  • ipsec - odpovídá, pokud paket podléhá zpracování IPsec
  • none - odpovídá paketu, který nepodléhá zpracování IPsec (například transportní paket IPSec).
Pokud například router přijme paket Gre zapouzdřený v protokolu IPsec, pak pravidlo ipsec-policy=in,ipsec bude odpovídat paketu Gre, ale pravidlo ipsec-policy=in,none bude odpovídat paketu ESP.


ipv4-options (any / loose-source-routing / no-record-route / no-router-alert / no-source-routing / no-timestamp / none / record-route / router-alert / strict-source-routing / timestamp; Default: )Odpovídá možnostem záhlaví IPv4
  • any - odpovídá paketu s alespoň jednou z možností ipv4
  • loose-source-routing - odpovídá paketům s možností volného směrování zdroje. Tato volba se používá ke směrování internetového datagramu na základě informací poskytnutých zdrojem
  • no-record-route - odpovídá paketům bez možnosti záznamu směrování. Tato volba slouží ke směrování internetového datagramu na základě informací poskytnutých zdrojem
  • no-router-alert - porovnává pakety bez možnosti router alter
  • no-source-routing - odpovídá paketům bez možnosti směrování zdroje
  • no-timestamp - odpovídá paketům bez možnosti časového razítka
  • record-route - odpovídá paketům s možností záznamu trasy
  • router-alert - odpovídá paketům s možností router altert
  • strict-source-routing - porovnává pakety s možností strict source routing
  • timestamp - porovnávat pakety s časovým razítkem


jump-target (name; Default: )Název cílového řetězce, na který se má přejít. Použije se pouze v případě action=jump


layer7-protocol (name; Default: )Název filtru vrstvy 7 definovaný v nabídce protokolu vrstvy 7


limit (integer,time,integer; Default: )Porovnává pakety s omezenou rychlostí (paketová nebo bitová rychlost). Pravidlo používající tento matcher bude odpovídat, dokud nebude dosaženo tohoto limitu. Parametry se zapisují v následujícím formátu: count[/time],burst:mode.
  • count - počet paketů nebo bitů za časový interval, který se má porovnat
  • time - určuje časový interval, ve kterém nesmí být překročen počet paketů nebo bitů (nepovinné, pokud není uvedeno, použije se 1s)
  • burst - počáteční počet paketů nebo bitů k porovnání: tento počet se obnovuje každých 10 ms, takže burst by měl být alespoň 1/100 rychlosti za sekundu
  • mode - paketový nebo bitový režim


log-prefix (string; Default: )Přidá zadaný text na začátek každé zprávy protokolu. Použije se pokud action=log


nth (integer,integer; Default: )Porovnává každý n-tý paket: nth=2,1 pravidlo bude odpovídat každému prvnímu paketu z 2, tedy 50 % veškerého provozu, kterému pravidlo odpovídá.


out-bridge-port (name; Default: )Aktuální rozhraní, přes které paket opouští směrovač, pokud je odchozím rozhraním most(bridge). Funguje pouze v případě, že je v nastavení mostu povoleno use-ip-firewall.


out-bridge-port-list (name; Default: )Seznam rozhraní definovaných v Interface List. Funguje stejně jako out-bridge-port


out-interface (name; Default: )Rozhraní, přes které paket opouští router


out-interface-list (name; Default: )Seznam rozhraní definovaných v Interface List. Funguje stejně jako out-interface


packet-mark (no-mark / string; Default: )Porovnává pakety označené pomocí funkce mangle určitou značkou paketu. Pokud je nastavena hodnota no-mark, pravidlo bude odpovídat jakémukoli neoznačenému paketu.


packet-size (integer[-integer]:0..65535; Default: )Porovnává pakety zadané velikosti nebo rozsahu velikostí v bajtech


per-connection-classifier (ValuesToHash:Denominator/Remainder; Default: )PCC matcher umožňuje rozdělit přenosy do stejných proudů s možností ponechat pakety s určitou sadou možností v jednom konkrétním proudu. Další informace >>


port (integer[-integer]: 0..65535; Default: )Porovnává, pokud některý (zdrojový nebo cílový) port odpovídá zadanému seznamu portů nebo rozsahů portů. Použije se pouze v případě, že protokol je TCP nebo UDP


priority (integer: 0..63; Default:)Odpovídá prioritě paketu po nastavení nové priority. Priorita může být odvozena z VLAN, WMM, DSCP, bitu MPLS EXP nebo z priority nastavené pomocí akce set-priority. Další informace >>


protocol (name or protocol ID; Default: tcp)Odpovídá konkrétnímu protokolu IP zadanému názvem nebo číslem protokolu


psd (integer,time,integer,integer; Default: )Pokusy o detekci skenování TCP a UDP. Parametry jsou ve formátu WeightThreshold, DelayThreshold, LowPortWeight, HighPortWeight.
  • WeightThreshold - celková váha posledních paketů TCP/UDP s různými cílovými porty, které přicházejí od stejného hostitele a mají být považovány za sekvenci skenování portů.
  • DelayThreshold - zpoždění paketů s různými cílovými porty přicházejících od stejného hostitele, které se považují za možnou sekvenci skenování portů
  • LowPortWeight - váha paketů s privilegovaným (<1024) cílovým portem
  • HighPortWeight - váha paketu s neprivilegovaným cílovým portem


random (integer: 1..99; Default: )náhodně porovnává pakety s danou pravděpodobností


reject-with (icmp-admin-prohibited / icmp-net-prohibited / icmp-protocol-unreachable / icmp-host-prohibited / icmp-network-unreachable / tcp-reset / icmp-host-unreachable / icmp-port-unreachable; Default: icmp-network-unreachable)Určuje chybu ICMP, která má být odeslána zpět, pokud je paket odmítnut. Platí, pokud action=reject


routing-table (string; Default: )Porovnává pakety, jejichž cílová adresa je řešena v konkrétní směrovací tabulce


routing-mark (string; Default: )Porovnává pakety označené pomocí funkce mangle s určitou značkou směrování


src-address (IP/netmask / IP range; Default: )Porovnává pakety, jejichž zdrojová adresa se rovná zadané IP nebo spadá do zadaného rozsahu IP


src-address-list (name; Default: )Porovná zdrojovou adresu paketu se seznamem adres definovaným uživatelem


src-address-type (unicast / local / broadcast / multicast; Default: )Porovnává typ zdrojové adresy:
  • unicast - IP adresa použitá pro přenos z bodu do bodu
  • local - pokud je dst-adresa přiřazena jednomu z rozhraní směrovače
  • broadcast - paket je odeslán všem zařízením v podsíti
  • multicast - paket je předán definované skupině zařízení


src-port (integer[-integer]: 0..65535; Default: )Seznam zdrojových portů a rozsahů zdrojových portů. Platí pouze v případě, že protokol je TCP nebo UDP


src-mac-address (MAC address; Default: )Porovnává zdrojovou adresu MAC paketu


tcp-flags (ack / cwr / ece / fin / psh / rst / syn / urg; Default: )Porovnává zadané příznaky TCP
  • ack - potvrzení dat
  • cwr - omezení přetížení
  • ece - příznak ECN-echo (explicitní oznámení o přetížení)
  • fin - uzavření spojení
  • psh - funkce push
  • rst - přerušení spojení
  • syn - nové spojení
  • urg - urgentní data


tcp-mss (integer[-integer]: 0..65535; Default: )Porovnává hodnotu TCP MSS paketu IP


time (time-time,sat, fri, thu, wed, tue, mon, sun; Default: )Umožňuje vytvořit filtr na základě času a data příchodu paketů nebo, v případě lokálně generovaných paketů, času a data odchodu.


tls-host (string; Default: )Umožňuje přiřazování přenosů HTTPS na základě názvu hostitele SNI protokolu TLS. Akceptuje syntaxi GLOB pro přiřazování zástupných znaků. Uvědomte si, že matcher nebude schopen porovnat hostitelské jméno, pokud je rámec TLS handshake fragmentován do více TCP segmentů (paketů).


ttl (integer: 0..255; Default: )Porovnává pakety s hodnotou TTL


 ! Varování:
Nástroj tls-host matcher je účinným nástrojem k blokování webových stránek založených na protokolu HTTPS, ale například server Youtube používá protokol QUIC (založený na protokolu UDP) namísto běžného protokolu HTTP/2 (založeného na protokolu TCP). TLS-host nefunguje s QUIC, protože závisí na připojení TCP.


Statistiky - Stats
Zobrazení dalších vlastností pouze pro čtení:
VlastnostPopis
bytes (integer)Celkový počet bajtů, kterým pravidlo odpovídá


packets (integer)Celkové množství paketů, kterým pravidlo odpovídá


Kód: Vybrat vše

[admin@MikroTik] > ip firewall filter print stats 
Flags: X - disabled, I - invalid, D - dynamic 
 #    CHAIN                                                                                                                 ACTION                            BYTES         PACKETS
 0  D ;;; special dummy rule to show fasttrack counters
      forward                                                                                                               passthrough              50 507 925 242      50 048 246
 1    ;;; defconf: drop invalid
      forward                                                                                                               drop                            432 270           9 719
 2    ;;; defconf: drop invalid
      input                                                                                                                 drop                            125 943           2 434
 3    input                                                                                                                 accept                   20 090 211 549      20 009 864
 4    ;;; defconf: accept ICMP
      input                                                                                                                 accept                          634 926           7 648
 5    ;;; defconf: drop all not coming from LAN
      input                                                                                                                 drop                          4 288 079          83 428
 6    ;;; defconf: accept in ipsec policy
      forward                                                                                                               accept                                0               0
7    ;;; defconf: accept out ipsec policy
      forward                                                                                                               accept                                0               0
8    ;;; defconf: fasttrack
      forward                                                                                                               fasttrack-connection     28 505 528 775      31 504 682
9    ;;; defconf: accept established,related, untracked
      forward                                                                                                               accept                   28 505 528 775      31 504 682
10    ;;; defconf: drop all from WAN not DSTNATed
      forward                                                                                                               drop                                  0               0



Příklad
Příklad správného zabezpečení zařízení najdete v našem článku Vytvoření prvního firewallu!