Mikrotik firewall filter leren begrijpen
In dit artikel over de MikroTik firewall duik ik dieper in dit netwerkbeveiligingssysteem. Veel mensen weten niet precies hoe ze hiermee moeten omgaan, en ik was vroeger ook zo. Zelfs tot op heden moet ik nog regelmatig firewallregels testen en de volgorde aanpassen. Hierdoor is het schrijven van dit artikel niet zo eenvoudig als het lijkt. Wil je meer weten over het configureren en beveiligen van de router? Bekijk dan de video die ik hierover heb gemaakt. Een waardevolle tip die ik je vanaf het begin wil geven: bij het manipuleren van de MikroTik firewall, gebruik de Safe Mode knop. Deze maakt de laatste configuratie ongedaan als je de verbinding verliest door een foute configuratie. Het zou zonde zijn indien je jezelf uitsluit op je router, is het niet?
Laat me eerst iets verduidelijken.
De MikroTik router heeft nog veel meer te bieden als het gaat om de MikroTik firewall, want dit is een zeer uitgebreid onderwerp. Zelfs wat ik ga bespreken is maar een klein gedeelte van MikroTik firewall filter rules. Zo kan ik me dieper concentreren op dit specifieke onderwerp. Strikt genomen is de MikroTik firewall niet beperkt tot deze filterregels, want er zijn meer aspecten van de MikroTik firewall. Om er enkele te noemen: er zijn ook Mangle, NAT, Raw, Service Ports en Layer7 Protocols, hoewel het laatste niet meer goed bruikbaar is. Naast de filter rules bespreek ik ook de Address Lists en Connections, omdat deze kunnen worden geïntegreerd in de MikroTik firewall filter rules. Wil je meer weten over hoe je de MikroTik router kunt beveiligen, dan kun je dit lezen en bekijken in een andere blogpost genaamd "MikroTik router beveiligen."
De firewall regels volgen een volgorde
Een belangrijk punt om te weten is dat de MikroTik firewall filterregels in volgorde werken, van boven naar beneden. De pakketten worden onderworpen aan de firewallregels van boven naar beneden totdat er een overeenkomstige match is. Zodra een pakket aan een regel voldoet, wordt de bijbehorende actie uitgevoerd (zoals accepteren, droppen of loggen) en stopt de verwerking van dat pakket. Dit betekent dat de volgorde van de regels essentieel is voor een correcte werking van je firewall. Dit maakt dit artikel schrijven zo moeilijk. Elk netwerk is anders en moet anders worden behandeld in de firewall.
De Mikrotik firewall ondersteund zowel statefull en stateless pakket filtering
De firewall ondersteunt zowel stateful als stateless pakketfiltering. Op deze manier kan de firewall de gegevensstroom vanaf, doorheen, en naar de router inspecteren. Maar wat is nu een stateful firewall? Een stateful firewall houdt de informatie bij van gemaakte netwerkverbindingen die door de router lopen. Deze verbindingen kunnen bijvoorbeeld zijn opgezet tussen een webserver en je pc of tussen twee netwerkapparaten. Hierdoor kan de firewall onderscheid maken tussen toegestane en niet-toegestane pakketten binnen een netwerkverbinding. Zoals al aangehaald, ondersteunt de MikroTik firewall ook stateless pakketfiltering. Dit betekent dat alle inkomende, uitgaande en door de router gaande pakketjes afzonderlijk worden geïnspecteerd, zonder rekening te houden met de staat van een verbinding. Dit zorgt voor extra veiligheid op je router en in je netwerk.
Als je nog geen kennis hebt van MikroTik-routers, raad ik je aan om mijn blog te bezoeken met de titel: "MikroTik router configureren". Ook biedt mijn YouTube kanaal veel hulp met allerlei MikroTik onderwerpen.
Kenmerken van de firewall van Mikrotik
- Connection Tracking: Dit is het hart van de Mikrotik firewall. Zonder connection tracking werkt de firewall niet. Als test kan je een ping uitvoeren naar 8.8.8.8. Schakel connection tracking uit en voer deze ping terug uit. De ping krijgt geen antwoord meer is het niet. Dit komt omdat connection tracking instaat voor: connection-bytes, connection-mark, connection-type, connection-state, connection-limit, connection-rate, new-connection-mark, tarpit, het layer7-protocol en NAT. Dit is een gehele waslijst is het niet?
- Stateful Packet Inspection afgekort (SPI): Zoals al aangehaald kan de firewall netwerkverbindingen volgen en verkeer accepteren op basis van de staat van deze verbinding. Als voorbeeld neem een uitgaande verbinding is toegestaan, dan zal het inkomend dataverkeer afkomstig van deze toegestane verbinding ook goedgekeurd worden.
- Network Address Translation afgekort als NAT: Mikrotik ondersteunt zowel source als destination NAT. Een mooi voorbeeld van SRC NAT is het vertalen van ons privé netwerk naar het public toegankelijk IP-adres van de router. Hierdoor kunnen we op het internet met een IPv4 adres.
- Layer 3 en layer4 filtering: Deze filter kan het data verkeer filteren op basis van IP-adressen en TCP/UDP poorten.
- Firewall Rules: Je kunt aangepaste firewallregels maken die zijn afgestemd op je netwerk en vereisten. Je kunt de regels aanmaken op basis van protocol, IP-adressen, poorten, enzovoort. Deze MikroTik-firewall kan filteren op het inkomende verkeer naar de router zelf (input), het uitgaande verkeer vanuit de router (output) – bijvoorbeeld het pingen van de router naar 8.8.8.8 – en het doorsturende verkeer (forward). Forward verwijst naar verkeer dat door de router passeert, zoals verkeer vanaf het internet naar je pc via de router. Wil je hierover meer weten? Lees dan dit artikel even door.
Connection tracking nader bekeken
De bovenstaande screenshot heb ik genomen op een in dienst zijnde Mikrotik router. Zoals de naam al aangeeft, volgt connection tracking alle netwerkverbindingen en houdt deze bij in een lijst. Uiteraard worden al deze verbindingen geïnspecteerd. Dit betreft zowel verkeer van, doorheen als naar de router. Voor een volledig overzicht van de opties van connection tracking kun je de MikroTik-help raadplegen. Je ziet dat er heel wat techniek komt kijken bij de Mikrotik firewall en het netwerkbeveiligingssysteem in Mikrotik routers. Eens je hiermee overweg kan is het prachtig om de Mikrotik firewall aan te passen naargelang je netwerk.
Connection states beter begrijpen
In de bovenstaande screenshot zie je de verschillende connection states die beschikbaar zijn in de MikroTik firewall configuratie. Ze helpen bij het beheren van de status van netwerkverbindingen en bepalen hoe verkeer wordt behandeld op basis van de toestand van de verbinding. Laten we hierover een afbeelding bekijken hoe pakketten worden beoordeeld als deze de firewall bereiken.
New en ESTABLISHED connection states
NEW:
Op de eerste regel zie je een nieuw pakket binnenkomen op de MikroTik firewall. Dit pakket wordt als nieuw beschouwd, omdat het het eerste pakket van een nieuwe verbinding is. Zodra het eerste pakket is geïnspecteerd, worden de volgende pakketten in deze verbinding doorgaans niet meer afzonderlijk geïnspecteerd. Deze pakketten worden als established beschouwd. Deze vakjes zijn groen gekleurd. Alle groene pakketten op de bovenste rij behoren tot deze gemaakte verbinding en hebben daarom de status 'ESTABLISHED'. Het is belangrijk om te weten dat elk pakket wordt voorzien van een nummer, het sequentienummer. Dit nummer zorgt ervoor dat de pakketten in een bepaalde volgorde worden verzonden, zodat de ontvanger de pakketten correct kan samenstellen. En indien er een her transmissie moet gebeuren is het gemakkelijker om via deze nummering het juiste pakket terug door te sturen en te ontvangen.
Invalid connection states
INVALID: Op de tweede regel zie je een invalid pakket binnenkomen (aangegeven met het zwarte vakje). Invalid pakketten behoren niet tot de actieve verbindingen in de connection tracking tabel en worden als verdacht beschouwd. Deze pakketten worden door de MikroTik firewall radicaal gedropt. Ze kunnen het gevolg zijn van netwerkcorruptie of fouten in het verkeer, zoals beschadigde pakketten die niet correct kunnen worden verwerkt. Ze kunnen ook voorkomen in gevallen waarin verkeer geen geldig antwoord is op een bestaande aanvraag of in situaties waarin een aanval wordt uitgevoerd, zoals een DoS-aanval. Zoals je kunt zien, wordt na een invalid pakket het volgende pakket terug als nieuw beschouwd en opnieuw gecontroleerd.
Related connection states
RELATED: Dit zijn data pakketten die niet direct deel uitmaken van een bestaande verbinding, maar ze zijn wel gerelateerd aan een bestaande verbinding. Dit concept is belangrijk in stateful firewalls zoals die van de MikroTik firewall, omdat het helpt bij het beheren van verkeer dat is gekoppeld aan een bestaande sessie, maar dat niet direct deel uitmaakt van de hoofdverbinding. Een voorbeeld hiervan is indien je op Facebook een filmpje bekijkt behoort dit filmpje bij het related data verkeer. Ik hoop dat je hiermee begrijpt wat related betreft. De Mikrotik firewall is niet zomaar een netwerkbeveiligingssysteem is het niet. Laat ons nog dieper graven in de Firewall filter.
De Mikrotik RAW firewall
De RAW firewall in MikroTik heeft geen connection tracking nodig, wat betekent dat het direct werkt op de pakketstroom zonder de overhead van het bijhouden van de staat van verbindingen. Dit maakt de RAW firewall bijzonder geschikt voor het uitvoeren van zeer specifieke filtering of manipulatie van pakketten voordat deze worden verwerkt door de connection tracking. Bijvoorbeeld, je kunt de RAW chain gebruiken om ongewenst verkeer vroegtijdig te droppen, nog voordat de router het verkeer verder inspecteert of doorstuurt naar andere chains. RAW firewallregels zijn daardoor CPU sparend. Maar daar gaan we nu niet verder op in. Laten we ons concentreren op de INPUT, FORWARD en OUTPUT chains, omdat deze essentieel zijn voor het beheren van verkeer binnen je netwerk.
Welke functie heeft de INPUT, OUTPUT en FORWARD chain op de Mikrotik firewall filter rules
INPUT
De INPUT chain inspecteert en behandelt al het dataverkeer dat direct naar de router zelf gaat. Voorbeelden hiervan zijn een ping naar de router of een inlogpoging op de router via Winbox, SSH of Telnet. Met deze chain kun je regels instellen om bepaalde logins te blokkeren of toe te laten. Bijvoorbeeld, je kunt configureren dat inloggen vanaf de WAN-interface niet is toegestaan, wat de beveiliging van je router versterkt door ongewenste toegang van buitenaf te voorkomen. Op het onderstaande filmpje worden deze begrippen zeer duidelijk uitgelegd.
Meer verduidelijking over de INPUT chain
Deze chain is bedoeld voor het filteren van verkeer dat bestemd is voor de router zelf. Dit betekent dat alle binnenkomende verbindingen of verzoeken die de router proberen te bereiken, zoals beheerinterfaces en netwerkdiensten, door deze chain worden gecontroleerd.
Voorbeelden van verkeer dat door de INPUT chain worden behandeld zijn:
- Een ping afkomstig van welke bron ook naar de router zelf.
- Winbox, SSH, Telnet: Beheertools die toegang bieden tot de router voor configuratie en beheer. Winbox is specifiek voor MikroTik-routers, terwijl SSH en Telnet algemene protocollen zijn voor veilige en niet-beveiligde toegang tot netwerkapparaten.
- Regels configureren: Je kunt specifieke regels definiëren om toegang te beheren op basis van bron- en bestemmings-IP-adressen, poorten en protocollen. In dit geval zou een regel kunnen worden ingesteld om inloggen via de WAN-interface te blokkeren, wat helpt om de router te beschermen tegen externe aanvallen.
FORWARD
De FORWARD chain inspecteert en behandelt al het dataverkeer dat door de router heen gaat. Dit omvat verkeer dat van een netwerk naar een ander netwerk wordt doorgestuurd via de router. Een voorbeeld hiervan is een ping vanaf de PC naar 8.8.8.8, dit ICMP-verkeer gaat doorheen de router.
Meer verduidelijking over de FORWARD chain
FORWARD-chain: Deze chain wordt gebruikt om verkeer te filteren dat door de router heen gaat van de ene interface naar de andere. Dit is cruciaal voor scenario's waarin je router functioneert als een doorgangsstation tussen netwerken, zoals tussen een intern netwerk en het internet.
- Ping-verkeer: Als je vanaf je pc een ping verstuurt naar 8.8.8.8 (Google DNS), ontstaan de pingpakketten op je pc en worden ze door de router naar het internet gestuurd om Google DNS te bereiken. De FORWARD-chain controleert deze pakketten terwijl ze door de router worden doorgestuurd.
- Webserver-toegang: Stel dat je een webserver hebt binnen je netwerk en iemand van buitenaf via het internet probeert toegang te krijgen tot deze webserver. De FORWARD-chain behandelt het verkeer dat door de MikroTik-router wordt geleid om de webserver te bereiken. De router moet het verkeer van de externe bron naar je interne webserver doorsturen.
OUTPUT
De OUTPUT chain inspecteert en behandelt dataverkeer dat afkomstig is van de router zelf. Dit omvat alle uitgaande pakketten die door de router worden gegenereerd. Een voorbeeld hiervan een ping vanaf de router zelf naar 8.8.8.8.
Meer verduidelijking over de FORWARD chain
OUTPUT chain: Deze chain is verantwoordelijk voor het filteren van verkeer dat door de router zelf wordt geïnitieerd. Dit betekent dat elke verbinding of dataverkeer dat de router naar buiten stuurt door deze chain wordt gecontroleerd.
- Ping-verkeer: Als je een ping verstuurt vanuit de router, wordt dit verkeer gecontroleerd door de OUTPUT-chain voordat het het netwerk verlaat.
- Logins: Verkeer dat ontstaat vanuit de router, zoals inloggen op andere netwerkapparaten met Winbox, valt ook onder de OUTPUT-chain.
Blok al het Winbox verkeer naar de router
In het bovenstaand voorbeeld zie je dat ik al het dataverkeer met als bestemming poort 8291 (Winbox) naar de router toe blokkeer. Maar is dat wel de bedoeling? Want niemand kan nog verbinden met de router met Winbox. Ook ik word onherroepelijk geblokt want ik zeg hier al het Winbox verkeer moet worden geblokt. Dit komt omdat ik geen enkele bijkomende parameter ingeef. Bekijk de volgende configuratie die ik ga tonen.
Blok al het Winbox verkeer naar de router afkomstig van de WAN interface
Ik blijf hier werken met de poort 8291maar treed meer in detail. Wat ik hier wil zeggen is dat ik bepaal van welke inkomende interface ik het verkeer wil blokken. Zoals in dit bovenstaand voorbeeld is de inkomende poort de WAN interface. Deze regel zegt dus: " Al het inkomend dataverkeer met als bestemming de router met als poort 8291en dit dataverkeer is afkomstig van de WAN interface. Dit dataverkeer moet worden gedropt. Dit wil ook zeggen indien er iemand wil inloggen vanaf de LAN interface dit wordt toegestaan.
Gebruik van de interface list kan de firewall rules vereenvoudigen
Op de bovenstaande screenshot heb ik twee interface lists aangemaakt. Een WAN list en een LAN list. In de WAN list heb ik de twee interfaces geplaatst die zijn verbonden met de twee ISP's. In de LAN list heb ik de bridge-local geplaatst. Ik plaats de interfaces die in de bridge-lan zijn geplaatst NIET in deze LAN list omdat deze als het ware zijn samengesmolten in de bridge-lan. Al deze interfaces zijn samengenomen in de bridge-lan en vormen één interface. Ik denk dat dit duidelijk is geworden.
In plaats van een interface gebruik ik de interface list. Dit stelt me in de mogelijkheid om meer interfaces te gaan aanduiden in één firewall rule.
Hierboven heb ik terug Winbox verkeer naar de router zelf vanaf de WAN interface list geblokt. Wat is hier zo speciaal aan vraag je zich misschien af. In de WAN interface list kunnen meerdere interfaces worden geplaatst. In dit voorbeeld is de in. interface list de WAN en deze vertegenwoordigd de twee WAN verbindingen.
Dit vereenvoudigd en minimaliseert de firewall filter rules. Het is goed om weten dat elke extra firewall regel bijdraagt aan meer CPU belasting. Dit moet zeker worden vermeden indien je een netwerk wil met een goede en stabiele datadoorvoer. Ik kan meerdere interface lists aanmaken om de firewall regels te verminderen. Een extra voorbeeld hiervan is een interface list voor de LAN netwerken. Ik hoop dat je de opzet van een interface list begrijpt. Bekijk dit filmpje dat ik heb gemaakt hoe je de interface list kan gebruiken.
De interface list is één onderdeel doch er zijn heel wat andere parameters
De Mikrotik firewall filter is zeer uitgebreid waardoor ik niet alle onderwerpen kan behandelen. Zo heb je ook de tabbladen advanced en extra. Hiermee kan je nog veel meer parameters ingeven. Op de onderstaande screenshots zie je de advanced en de extra tab. Maar deze is zo uitgebreid dat ik hier niet over ga uitweiden. Doch deze opties zullen aan bod komen in deze blogpost en filmpjes.
Welke zijn en wat doen de acties die kunnen worden gebruikt in de Mikrotik firewall filter rules
Accept, Drop, Passthrough
Ik begin met de drie standaard firewall acties. Namelijk accept wat wil zeggen datapakketten of verbinding toestaan. Als voorbeeld wil ik inkomende datapakketten met als UDP poorten 500 en 4500 aanvaarden om een L2TP/IPSec tunnel te kunnen opbouwen. Een ander voorbeeld is dat ik ICMP verkeer naar de router toesta.
Een tweede actie is drop. Als ik verkeer wil blokkeren met de firewall filter rules moet ik drop gebruiken. Een voorbeeld hiervan is: ik drop het dataverkeer met als poort TCP 3389 vanaf de WAN interface of interface list. Deze poort wordt gebruikt door het Microsoft Remote Desktop Protocol en ik wil niet dat hier gebruik wordt van gemaakt vanaf de WAN. Hieronder plaats ik de screenshot en wat valt je hopelijk op. Ik gebruik de chain forward want ik wil de Windows computers gaan beschermen.
Dit verkeer passeert de router naar de computers.
De derde actie die ik gebruik is passthrough: Hiermee kan ik datapakketten en bytes gaan tellen. Er zijn nog actie die kunnen worden ingesteld op de Mikrotik router. Dit zie je verder op deze blog. Even een kleine samenvatting van deze drie firewall acties.
Reject en Tarpit
De actie reject kan je vergelijken met drop doch er word een icmp boodschap verzonden naar de afzender. Indien er iemand een ping uitvoert naar de router zal de firewall ingesteld met de actie reject de ping pakketten gaan droppen. Doch de firewall zal een icmp boodschap zenden naar de afzender. Zoals je op de onderstaande screenshot kan zien kan je kiezen welke ICMP boodschap er moet worden verzonden. Reject met een icmp boodschap verraad dat er een router of firewall aanwezig is. Het is dan ook beter om de actie drop te gaan gebruiken. Op deze manier weet de ping aanvrager niet of er een toestel aanwezig is of niet. Een zeer belangrijke actie bij reject is TCP reset. De Mikrotik firewall gaat een TCP reset gaan uitzenden waardoor de TCP verbinding word verbroken. Nog een belangrijke actie is tarpit. Met tarpit kan je syn-flood aanvallen gaan afweren. Dit omdat de firewall simuleert dat de verbinding open is maar de router zal niet verder reageren op de syn aanvragen. Dit is een zeer goed wapen tegen syn-flood aanvallen. Meer lezen over syn-flood aanvallen lees dit hier.
Add src of dst to address list
Nog een zeer groot hulpmiddel is het toevoegen van het bron of bestemming IP-adres aan een adres list. Ik kan hiermee de IP-adressen zien die login pogingen op de router ondernemen. Deze IP-adressen worden automatisch in een adres list geplaatst om daarna verwerkt te worden in een firewall rule. Dit is een groot voordeel dat de Mikrotik firewall heeft en de toepassingen hiervoor zijn legio. Een voorbeeld hiervan: De IP-adressen worden verzameld van de computers die willen inloggen op de router met SSH en Winbox. Deze IP-adressen worden in een adres list geplaatst genaamd blacklist. Ik maak een firewall rule aan waarmee ik alle verzamelde IP-adressen blokkeer die in de blacklist zijn geplaatst. Het is toch prachtig dat je hiervan gebruik kan maken is het niet?
Weet dat de firewall filter rules in volgorde worden doornomen van boven naar onder
In de bovenstaande screenshot van de Mikrotik firewall filter rules zie je de default firewall configuratie. De pakketten komen de firewall binnen en lopen de firewall rules af totdat er een overeenkomst word gevonden. Dit gebeurd vanaf boven naar beneden. Ik moet dus rekening houden met de volgorde. Als ik een firewall rule zou aanmaken blok alles die wil verbinden met de router en ik zou die bovenaan plaatsen zou ik uitgesloten worden. Let dus goed op met wat je doet. Nu je dit weet ga ik naar de actie jump.
De actie jump
Met de actie jump kan je naar een zelfgemaakte chain jumpen. Als voorbeeld als er een ping binnenkomt op de router kan ik direct dit ping verkeer laten jumpen naar de chain ICMP. Op deze manier moeten deze ping pakketten niet alle firewall regels doorlopen en dit resulteert in minder CPU gebruik. Dit komt zeer goed van pas om de router niet al te veel te gaan belasten. De toepassingen hiervan zijn legio.
Een voorbeeld van een Mikrotik firewall filter configuratie
De Mikrotik firewall is breed inzetbaar. Om meer duidelijkheid te geven plaats ik terug een YouTube filmpje die ik heb gemaakt met een basis configuratie. Op deze manier hoop ik dat je meer begrip krijgt wat je moet doen. In de eerste plaats zorg ik ervoor dat ik kan inloggen op de Mikrotik router met Winbox en SSH. Dit is de eerste regel dat ik aanmaak. Daarna blok ik al de rest zodat niemand anders de router kan benaderen via Winbox en SSH. Hou rekening met de volgorde van de firewall regels. Eerst de accept regel en daarna de blok regel. Ik maak steeds gebruik van de safe mode. Indien ik een mis configuratie maak waardoor ik word buitengesloten op de router wordt de laatste aangebrachte firewall configuratie ongedaan gemaakt. Ik raad je aan om de onderstaande video te bekijken en de configuratie mee te volgen.