Základní princip
Úvod Brána firewall implementuje stavové (pomocí sledování spojení) a bezstavové filtrování paketů, a tím poskytuje bezpečnostní funkce, které se používají k řízení toku dat do routeru, z routeru a data procházející routerem. Spolu s překladem síťových adres (NAT) slouží jako nástroj pro zabránění neoprávněného přístupu k přímo připojeným sítím a samotnému směrovači a také jako filtr odchozího provozu.
Síťové brány firewall brání vnějším hrozbám v přístupu k citlivým datům dostupným uvnitř sítě. Kdykoli jsou různé sítě spojeny dohromady, vždy hrozí, že do vaší sítě LAN pronikne někdo zvenčí. Takové vniknutí může mít za následek krádež a šíření soukromých dat, změnu nebo zničení cenných dat nebo vymazání celých pevných disků. Brány firewall se používají jako prostředek, který zabraňuje bezpečnostním rizikům spojeným s připojením k jiným sítím nebo je minimalizuje. Správně nakonfigurovaný firewall hraje klíčovou roli při efektivním a bezpečném nasazení síťové infrastruktury.
MikroTik RouterOS má velmi výkonnou implementaci firewallu s funkcemi, které zahrnují např:
- stavová kontrola paketů
- filtrování protokolů peer-to-peer
- klasifikace provozu pomocí:
- zdrojová adresa MAC
- IP adresy (síťové nebo seznamy) a typy adres (broadcast, lokální, multicast, unicast)
- port nebo rozsah portů
- protokoly IP
- možnosti protokolu (pole typu a kódu ICMP, příznaky TCP, možnosti IP a MSS)
- rozhraní, ze kterého paket přišel nebo přes které odešel
- vnitřní značení spojení
- DSCP byte
- obsah paketu
- rychlost příchodu paketů a pořadová čísla
- velikost paketu
- čas příchodu paketu
Jak to funguje
Brána firewall funguje pomocí pravidel. Každé pravidlo se skládá ze dvou částí - přiřazovacího prvku, který porovnává datový tok s danými podmínkami, a akce, která určuje co se má s porovnávaným paketem udělat.
RouterOS využívá 5 dílčích funkcí brány firewall:
- sledování spojení
- Filtry
- NAT
- Mangle
- RAW
Stavy spojení
Chcete-li zcela porozumět pravidlům brány firewall, musíte nejprve pochopit různé stavy, které se mohou vztahovat na konkrétní síťový paket. V systému RouterOS existuje pět stavů spojení:
- NEW - Stav NEW nám říká, že paket je prvním paketem, který vidíme. To znamená, že bude porovnán první paket, který modul conntrack uvidí v rámci konkrétního spojení. Například pokud vidíme paket SYN a je to první paket v rámci spojení, který vidíme, bude porovnán.
- ESTABLISHED - stav ESTABLISHED viděl provoz v obou směrech a pak bude tyto pakety průběžně porovnávat. Spojení ESTABLISHED jsou poměrně snadno pochopitelná. Jediným požadavkem pro přechod do stavu ESTABLISHED je, aby jeden hostitel odeslal paket a aby později obdržel odpověď od druhého hostitele. Stav NEW se po přijetí paketu s odpovědí na firewall nebo přes něj změní na stav ESTABLISHED
- RELATED - spojení je považováno za RELATED, pokud souvisí s jiným již navázaným spojením. Aby bylo spojení považováno za RELATED, musíme mít nejprve spojení, které je považováno za ESTABLISHED. Spojení ESTABLISHED pak vytvoří spojení mimo hlavní spojení. Nově vzniklé spojení pak bude považováno za RELATED, například paket, který zahajuje datové spojení FTP
- INVALID - stav INVALID znamená, že paket nelze identifikovat nebo že nemá žádný stav. V tomto stavu se doporučuje vše DROP;
- UNTRACKED - paket, u kterého bylo v tabulce RAW brány Firewall nastaveno, že se sledování spojení obejde
Příklad konfigurace
Podívejme se na základní nastavení brány firewall, které chrání router. Ve výchozím nastavení brána firewall RouterOS přijímá vše, blokování se dosáhne přidáním pravidla filtru, které na konci všech pravidel vše zahodí. Pro náš směrovač chceme povolit pouze ICMP, ssh a Winbox a zbytek zahodit:
Kód: Vybrat vše
/ip firewall filter
add chain=input connection-state=invalid action=drop comment="Drop Invalid connections"
add chain=input connection-state=established,related,untracked action=accept comment="Allow Established/Related/Untracked connections"
add chain=input protocol=icmp action=accept ;comment="Allow ICMP"
add chain=input protocol=tcp ports=8291,22 action=accept comment="Allow Winbox and SSH"
add chain=input action=drop comment="Drop everything else"
Další příklady konfigurace /ip firewallu filter najdete v části Vytváříme první firewall.
Sledování spojení - Connection Tracking
Sledování spojení umožňuje jádru sledovat všechna logická síťová spojení nebo relace, a tím i všechny pakety, které mohou toto připojení tvořit. NAT se spoléhá na tyto informace, aby všechny související pakety překládal stejným způsobem. Díky sledování spojení můžete používat funkce stavového firewallu i u bezstavových protokolů, jako je UDP.
Seznam sledovaných spojení lze zobrazit příkazem /ip firewall connection pro ipv4 a /ipv6 firewall connection pro IPv6.
Kód: Vybrat vše
[admin@MirkoTik] /ip firewall connection> print
Flags: S - seen-reply, A - assured
# PR.. SRC-ADDRESS DST-ADDRESS TCP-STATE TIMEOUT
0 udp 10.5.8.176:5678 255.255.255.255:5678 0s
1 udp 10.5.101.3:646 224.0.0.2:646 5s
2 ospf 10.5.101.161 224.0.0.5 9m58s
3 udp 10.5.8.140:5678 255.255.255.255:5678 8s
4 SA tcp 10.5.101.147:48984 10.5.101.1:8291 established 4m59s
[admin@MirkoTik] /ipv6 firewall connection> print
Flags: S - seen reply, A - assured
# PRO.. SRC-ADDRESS DST-ADDRESS TCP-STATE
0 udp fe80::d6ca:6dff:fe77:3698 ff02::1
1 udp fe80::d6ca:6dff:fe98:7c28 ff02::1
2 ospf fe80::d6ca:6dff:fe73:9822 ff02::5
Existují dva další způsoby, kdy je paket považován za nový. První z nich je případ bezstavových spojení (jako je UDP), kdy v tabulce spojení není žádný záznam o spojení. Druhý je případ stavového protokolu (TCP). V tomto případě je nový paket, který zahajuje nové spojení, vždy paketem TCP s příznakem SYN.
Pokud paket není nový, může patřit buď k navázanému(established) nebo souvisejícímu(related) spojení, nebo nepatří k žádnému spojení, čímž se stává neplatným(invalid). Paket se stavem established, jak již většina z vás uhodla, patří k existujícímu spojení z tabulky sledování spojení. Stav related je velmi podobný, s tím rozdílem, že paket patří ke spojení, které souvisí s některým z existujících spojení, například chybové pakety ICMP nebo pakety datových spojení FTP.
Stav nesledování(untracked) spojení je zvláštním případem, kdy jsou pravidla brány firewall RAW použita k vyloučení spojení ze sledování spojení. Toto jediné pravidlo způsobí, že veškerý předávaný provoz obejde mechanismus sledování spojení, čímž se urychlí zpracování paketů v zařízení.
Jakýkoli jiný paket je považován za neplatný(invalid) a ve většině případů by měl být zahozen.
Na základě těchto informací můžeme nastavit základní sadu pravidel pro filtrování, která urychlí filtrování paketů a sníží zatížení procesoru tím, že budou přijímat navázané/související pakety, zahazovat neplatné pakety a pracovat na podrobnějším filtrování pouze nových paketů.
Kód: Vybrat vše
ip firewall filter
add chain=input connection-state=invalid action=drop comment="Drop Invalid connections"
add chain=input connection-state=established,related,untracked action=accept comment="Allow Established/Related/Untracked connections
FastTrack
IPv4 FastTrack se automaticky používá pro takto označená spojení. Pro označení spojení jako FastTrack použijte akci brány firewall "fasttrack-connection". V současné době lze skutečně FastTrackovat pouze spojení TCP a UDP (i když lze pro FastTrack označit jakékoli spojení). IPv4 FastTrack podporuje také NAT (SNAT, DNAT nebo obojí).
Všimněte si, že ne všechny pakety ve spojení mohou být FastTrackovány, takže je pravděpodobné, že některé pakety projdou pomalou cestou, i když je spojení označeno pro FastTrack. To je důvod, proč za pravidlem fasttrack-connection obvykle následuje identické pravidlo "action=accept". Pakety FastTrack obcházejí firewall, sledování spojení, simple queues, queue tree s parent=global, IP accounting, IPSec, hotspot universal client, přiřazení VRF, takže je na správci, aby zajistil, že FastTrack nebude kolidovat s jinou konfigurací.
Požadavky
Funkce IPv4 FastTrack je aktivní, pokud jsou splněny následující podmínky:
- není mesh, konfigurace rozhraní metarouteru
- není spuštěn sniffer, torch nebo generátor provozu
- /tool mac-scan není aktivně používán;
- /tool ip-scan není aktivně používán;
- v menu IP/Settings je povolena funkce FastPath a Route cache.
V případě směrovačů SOHO s výchozí konfigurací z výroby můžete veškerý provoz v síti LAN rychle sledovat pomocí tohoto jediného pravidla umístěného v horní části filtru brány firewall.
Kód: Vybrat vše
/ip firewall filter add chain=forward action=fasttrack-connection connection-state=established,related
/ip firewall filter add chain=forward action=accept connection-state=established,related
Služby - Services
V této části jsou uvedeny protokoly a porty používané různými službami systému MikroTik RouterOS. Pomůže vám zjistit, proč váš router MikroTik naslouchá určitým portům a co je třeba zablokovat/povolit v případě, že chcete zabránit nebo povolit přístup k určitým službám.
Výchozí služby jsou:
Služba | Popis |
---|---|
telnet | Služba Telnet |
ftp | Služba FTP |
www | Webfig http služba |
ssh | Služba SSH |
www-ssl | Webfig HTTPS služba |
apiSlužba API | |
winbox | Odpovídá za přístup k nástroji Winbox a také k aplikaci Tik-App pro chytré telefony a Dude |
api-ssl | Služba API přes SSL |
Vlastnosti
Všimněte si, že není možné přidávat nové služby, povoleny jsou pouze úpravy stávajících služeb.
Vlastnost | Popis |
---|---|
address (IP adresa/maska sítě / IPv6/0..128; výchozí: ) | Seznam prefixů IP/IPv6, ze kterých je služba dostupná |
certificate (jméno; výchozí: none) | Platí pouze pro služby závislé na certifikátech (www-ssl, api-ssl) |
name (name; výchozí: none) | Název služby |
port (integer: 1..65535; výchozí: ) | Port, na kterém naslouchá konkrétní služba |
Kód: Vybrat vše
[admin@MikroTik] > ip service set [find name~"winbox"] address=192.168.88.0/24
[admin@MikroTik] > ip service print
Flags: X - disabled, I - invalid
# NAME PORT ADDRESS CERTIFICATE
0 telnet 23
1 XI ftp 21
2 XI www 80
3 ssh 22
4 XI www-ssl 443 none
5 XI api 8728
6 winbox 8291 192.168.88.0/24
7 XI api-ssl 8729 none
Seznamy adres - Address List
Seznamy adres brány firewall umožňují uživateli vytvářet seznamy IP adres seskupených pod společný název. Filtry brány firewall, Mangle a zařízení NAT pak mohou tyto seznamy adres používat k porovnávání paketů. Záznamy v seznamu adres lze také dynamicky aktualizovat pomocí položek action=add-src-to-address-list nebo action=add-dst-to-address-list, které se nalézají v NAT, Mangle a Filter.
Pravidla brány firewall s akcí add-src-to-address-list nebo add-dst-to-address-list pracují v průchozím režimu, což znamená, že odpovídající pakety budou předány dalším pravidlům brány firewall. Základní příklad dynamicky vytvořeného seznamu adres:
Kód: Vybrat vše
[admin@MirkoTik] > ip firewall address-list add address=www.mikrotik.com list=MikroTik
[admin@MirkoTik] > ip firewall address-list print
Flags: X - disabled, D - dynamic
# LIST ADDRESS CREATION-TIME TIMEOUT
0 MikroTik www.mikrotik.com oct/09/2019 14:53:14
1 D ;;; www.mikrotik.com
MikroTik 159.148.147.196 oct/09/2019 14:53:14
Layer7-protocol
Layer7-protocol je metoda vyhledávání vzorů v ICMP/TCP/UDP. Shromažďuje prvních 10 paketů spojení nebo první 2KB spojení a hledá vzor ve shromážděných datech. Pokud vzor není ve shromážděných datech nalezen, matcher přestane dále kontrolovat. Přidělená paměť je uvolněna a protokol je považován za neznámý. Měli byste vzít v úvahu, že velké množství spojení výrazně zvýší využití paměti a procesoru. Chcete-li tomu předejít, přidávejte do brány firewall regulární výrazy, a tak snížíte množství dat opakovaně předávaných filtrům 7. vrstvy.
Dalším požadavkem je, že matcher L7 musí vidět oba směry provozu (příchozí i odchozí). Aby byl tento požadavek splněn, měla by být L7 pravidla v forward kanálu. Pokud je pravidlo nastaveno ve vstupním/směrovacím řetězci, musí být stejné pravidlo nastaveno také ve výstupním/směrovacím řetězci, jinak nemusí být shromážděná data úplná, což může vést k nesprávnému přiřazení.
V tomto příkladu použijeme vzor pro porovnání paketů RDP:
Kód: Vybrat vše
/ip firewall layer7-protocol add name=rdp regexp="rdpdr.*cliprdr.*rdpsnd"