Firewall
Firewall je síťový bezpečnostní systém, který chrání vnitřní síť (internal network / inside ) z venku (outside), tedy z internetu. Zakládá se na pravidlech, která jsou sekvenčně analyzovány dokud není nalezena první shoda (first match) v pravidlech. RouterOS Firewallová pravidla jsou řízena ve Filter a NAT sekcích. Firewall pracuje na principu IF – THEN (pokud nějaká podmínka – tak proveď tohle). Pravidla jsou řazeny do takzvaných chainů (chains = řetězů pravidel, já chainy nepřekládám do češtiny). Existují předdefinované chainy. Uživatel může vytvářet nová pravidla.
Firewall Filter
Existují 3 defaultní chainy:
- input (na router/do routeru)
- output (z routeru ven do internetu)
- forward (skrze router třeba do vnitřní sítě nebo skrze router VEN do internetu)
Filter Actions
Každé pravidlo má nějakou akci (action) – co dělat když se packet matchne (shoduje s nějakým pravidlem):
- accept (přijmout/povolit)
- drop (zahození packetu bez oznámení původci zprávy, že byl packet zahozen)
- reject (zahození packetu ale s oznámením původci zprávy o nedoručitelnosti zprávy)
- jump/return k/od uživatele definovaný chain
- a spousta dalších.
Na Filter Actions se dostaneme skrze IP/ Firewall /New Firewall Rule (+ modrým pluskem) -> záložka action.
Filter Chains
Zde se dostaneme pomocí IP / Firewall. Je lepší a přehlednější firewall rozdělit na jednotlivé chainy.
Chain: Input
Chain input chrání služby běžící na routeru před vnějším internetem i z vnitřku. Např. www rozhraní, API, winbox, telnet, ssh a jakoukoliv další službu, která by mohla běžet na routeru a být dostupná z internetu nebo z místní sítě, na kterou se mohou připojit uživatelé.
Chain: Forward
Obsahuje pravidla, kontrolující packety procházející SKRZE router (jak z vnitřní sítě do internetu, tak z internetu do vnitřní sítě). Defaultně je veškerý provoz (traffic) mezi klienty připojenými do routeru povolen. Trafik mezi klienty a internetem není defaultně omezován.
Jak pochopit rozdíl mezi Inputem a Forwardem?
Pokud si na mikrotiku zakážete forwardovat port 80 (http), tak se nedostanete na žádnou webovou stránku v internetu. Ale protože tohle je v chainu Forward, tak se dostanete díky Input pravidlu na WebFig (webové rozhraní) vašeho mikrotiku. Provoz skrze router ven do internetu byl zablokován na portu 80, provoz DO routeru skrze chain Input nijak omezen nebyl a proto Vám to bude fungovat. Často používané porty 20 a 21/tcp FTP (File transfer protocol) 22/tcp SSH (secure shell – vzdálený terminál, šifrovaný) 23/tcp Telnet (nešifrovaná terminálová služba) 25/tcp SMTP (odchozí pošta) 103/tcp 110 (příchozí pošta) 143/tcp IMAP (Internet Message Access Protocol) 80/tcp HTTP (web) 443/tcp HTTPS (zabezpečený web) 3306/tcp MySQL (MySQL databáze) 3724/tcp World of Warcraft Authentizace uživatelů 8085/tcp/udp World of Warcraft herní server 8291/tcp Winbox 5678/udp MikroTik Neighbor Discovery 20561/udp MAC WinBox 27015/udp/tcp Half-life/Counter-strike herní server Další seznam portů zde.
Address List
Adresní listy umožňují vytvářet akce pro vícero IP adres, což je výhodné zejména pro větší sítě, vnitřní sítě se servery atd..atd… IP adresa může být přidaná do seznamu permanentně nebo na předdefinovaný časový interval. Adreslisty mohou obsahovat 1 IP, rozsah IP, nebo celé podsítě. K adreslistům se dostaneme přes IP/Firewall/záložku Address Lists/New Firewall Address List (+) Namísto psaní adres v záložce General se přepneme do advanced a zvolíme adresu (Source/Src/zdrojovou nebo destination/dest/cílovou – to je jedno) a můžeme si tak vybrat předdefinované adreslisty. Dokonce mikrotik je tak vychytaný, že můžeme vyvolat akci, při které si mikrotik automaticky přidá adresu do address listu (opět buď trvale/Permanently nebo dočasně temporarily). IP / Firewall /New Firewall Rule (+) / záložka akce a tam se vybere add src to address list.
Firewall Log
každé pravidlo firewallu může být zalogováno (zalogovat znamená zapsat záznam do deníku událostí firewallu, dále jen log či zalogovat), když se matchne (shodne s právě probíhajícím packetem). K pravidlům lze přidat specifický prefix aby se záznam snadněji dal později v záznamech najít.
NAT
Network address Translation (NAT) je metoda modifikace zdrojové a cílové IP adresy v záhlaví packetu. Existují 2 typy NATu:
- Source NAT / srcNAT / Zdrojový překlad adres
- Destination NAT / destNAT/ Cílový překlad adres
NAT běžně poskytuje přístup uživatelům vnitřní sítě s privátními adresami do Internetu. (src-nat/source NAT) NAT umožňuje přístup z externí (vnější) sítě ke zdrojům (webový server, databázový server) ve vnitřní síti (dst-nat/destination NAT) Na mikrotiku implementují pravidla srcnat a dstnat. Stejně jako běžná Filter rules (filtrovací pravidla) fungují na principu If-Then (jestli je podmínka splněna, tak něco udělej). Funkcionalita je opět uplatněna k prvnímu matchnutí nalezeného pravidla.
Jak funguje NAT
V podstatě to funguje tak, že letí packet od klienta směrem do internetu -> packet dorazí na router, router přepíše zdrojovou privátní adresu typu 192.168.xyz.xyz či 10.xyz.xyz.xyz nebo 172.16.xyz.xyz na veřejnou IP adresu např. 195.178.1.1 a tento packet teprve pustí do internetu. Ten kdo komunikuje s klientem ve vnitřní síti skrze router si tedy myslí, že komunikuje s routerem, protože tohle šachování s IP adresami v záhlaví packetu dělá právě router. Klienta zajímá cílová adresa cílového vzdáleného serveru, se kterým klient komunikuje a vzdálený server zase neřeší nějakou privátní adresu nějakého klienta za routerem, protože jeho zajímá jen veřejná IP routeru, se kterým komunikuje. V případě destination NATu letí např. požadavek na port 80 z vnějšku, z internetu z adresa 21.21.21.21 na veřejnou ip např. 195.178.1.1, packet přistane na WAN rozhraní routeru, router se podívá, kam má packet poslat, pokud se jedná o port 80, zjistí, že má packet poslat na port 80 ip adresy 192.168.20.10, změní destination (cílovou) adresu ze 195.178.1.1 na 192.168.20.10 a tu pošle na na cílový server ve vnitřní síti 192.168.20.10. Jakmile server odpoví/vyhodnotí požadavek, tak odpoví na nějakém portu např. 51234 vzdálenému klientovi s ip 21.21.21.21, zdrojová je tentokrát při odpovědi 192.168.20.10, packet dojde na router, ten zase přehodí zdrojovou adresu ze 192.168.20.10 na 195.178.1.1 a packet přepošle na cílovou adresu vzdálenému klientovi na 21.21.21.21. (pokud jsem tu něco nepopsal, tak dejte vědět v diskusi, rád to tu poupravím).
Redirect
jedná se o speciální typ DSTNATu. Tato akce přesměruje packety do routeru samotného. Toho lze využít k vytvoření transparentních proxy služeb (např. DNS, HTTP atd…) Klient odešle packet s destination adresou konfigurovaného DNS serveru na portu 53, dojde to na router, ten packet přesměruje na novou destination adresu routeru na portu 53. Mikrotikácké DNS servery jsou ve skutečnosti jen DNS cache.
Src NAT
Princip source NATu jsem tu již polopatě popsal. Masquerade je speciální typ srcnatu. Src-nat je tedy defakto akce určená k přepsání source IP adresy nebo portu v přicházejícím packetu na router.
Masquerade
Maškaráda je překlad vnitřních IP adres z vnítřních sítí na WAN rozhraní tak, aby z routeru z WAN rozhrání odcházely packety se source (veřejnou) IP adresou WAN routeru.
NAT Helpers
některé protokoly vyžadují NAT helpery (NAT pomocníky) v natované síti. Typickým příkladem je FTP,H323,tftp, pptp, občas nějaké torrenty a další porty, kde se pracuje s RELATED packety.
Connections
- New – nově příchozí packet otevírající spojení.
- Established – packety, které souvisí s již známým ustanoveným funkčním spojením.
- Related – jsou packety otevírající nové spojení, související s již známým spojením. Typicky protokol FTP. Připojíte se na port 21 tcp, related port je port 20 tcp, který je datový port.
- Invalid – neznámý packet, který nepatří do žádného ze známých či navázaných spojení.
Connection Tracking
Jedna z nejdůležitějších funkcí stavového firewallu. Firewall si udržuje informaci o všech aktivních spojení. Musí být povolen pro NAT a Filter pravidla. Důležitá poznámka: Connection state =/= TCP state. Není to stejné. Pokud byste vypnuli Connection Tracking, tak byste získali bezstavový firewall, jako je např. ACL na ciscu.
FastTrack
Metoda zrychlující propustnost packetů skrze router. Established nebo related connection (spojení) je označeno jako fasttrack connection. Obchází firewall, connection tracking, simple queue (jednoduchou frontu) a další funkcionality. Podporuje však pouze TCP a UDP protokoly. S FastTrackem lze dosáhnout menšího vytížení CPU a vyšší propustnosti, než bez něj a menší zátěž CPU kvůli práci firewallu. Více info zde. Pokud se nepletu, tak FastTrack je povolen na mikrotiku defaultně. Opět v diskusi mě opravte, pokud tu melu nesmysly.
Stavíme firewall
Mějme vnitřní síť routeru 192.168.20.0/24, adresa bridge ve kterém je wlan1 i ether2 je 192.168.20.1. Počítač připojený kabelem či WiFinou do routeru bude 192.168.20.10. Defaultní politika iptables je „nepustím nic“, když nejsou žádná pravidla. Defaultní politika MIKROTIKU je „povolím vše“, když nejsou žádná pravidla. Další důležitá věc. Stanovme si jaké máme zóny na mikrotiku: Mějme 3 zóny, které firewall bude řešit:
- inside
- outside
- DMZ (Demilitarizovaná zóna – kde budou např. servery)
Zpřehlednění pravidel
Jsou 2 možnosti, jak zpřehlednit pravidla:
- 2x kliknout na konkrétní pravidlo a vpravo je možnost comment.
- Subchainy (podrětězy pravidel)
Pro příklad si můžeme přidat accept input pravidlo na bridge interface pro Src. Addressu (src = zdrojová adresa) 192.168.20.10.
Zbytek dopíšu, jak se k tomu dostanu. Zatím to zveřejňuji právě pro ty nešťastníky, kteří zítra píšou certifikační zkoušku. 😉