Ieder modern Windows-besturingssysteem komt met een handige ingebouwde firewall genaamd de 'Windows Defender Firewall'. Deze firewall is erg handig en geeft je een breed scala aan opties, waaronder het loggen van geblokkeerde verbindingen en succesvolle verbindingen. Opmerkelijk genoeg staan deze logopties echter standaard uit.
In deze handleiding laten we zien hoe je logging inschakelt in de Windows Defender Firewall en vervolgens de data interpreteert.
Windows Defender Firewall logging inschakelen
Stap 1
Verbind met je Windows Server via Remote Desktop of de VPS-console.
Stap 2
Klik op de Windows Start-knop, type 'firewall' en klik op 'Windows Defender Firewall with Advanced Security' in de zoekresultaten.
Stap 3
Klik in de 'Windows Defender Firewall with Advanced Security' aan de rechterkant op 'Properties'.
Stap 4
Een nieuw venster opent waar je eerst uitkomt in het 'Domain Profile' tabblad. Klik op 'Customize' in het blok onder 'Logging'.
Er zijn nog enkele opties zichtbaar in de Domain Profile, Private Profile en Public Profile tabbladen. Deze hoef je niet aan te passen:
- In dit voorbeeld zie je dat de 'Firewall state' op 'Off' staat. De VPS die voor deze handleiding gebruikt is, is namelijk niet opgenomen in een Windows Domein (Active Directory). Wanneer je een VPS aan een Windows Domein toevoegt wordt ook de firewall voor het Domain Profile geactiveerd.
We raden aan om in ieder geval onder 'Private Profile' en 'Public Profile' de state altijd op 'On' te houden. - Standaard staat op alle profielen 'Inbound connections' op 'Block' en 'Outbound connections' op 'Allow'.
- Onder 'Protected network connections' kun je aanpassen op welke netwerkadapter de firewall van toepassing is.
- We raden aan de instellingen onder 'Settings' > 'Customize' niet aan te passen. De optie om bijvoorbeeld een notificatie te krijgen bij een blokkade van een binnenkomende verbinding zou tot een storend aantal notificaties leiden.
Stap 5
Je kunt nu de logging inschakelen en de volgende bijbehorende opties aanpassen:
- Name: De naam en locatie waar het logbestand wordt opgeslagen. De standaard waarde is c:\Windows\system32\LogFiles\Firewall\pfirewall.log en hoef je niet aan te passen.
- Size limit (KB): Het maximale formaat van het logbestand (default 4MB). Onder normale omstandigheden is dit ruim voldoende.
- Log dropped packets: Deze optie bepaalt of een logmelding wordt aangemaakt wanneer de firewall verkeer tegenhoud.
- Log succesful connections: Bepaalt of succesvolle verbindingen ook gelogd moeten worden. We raden aan deze optie uit te zetten; hiermee wordt namelijk ook succesvol uitgaand verkeer gelogd, wat voor een hoop onoverzichtelijkheid zorgt in je logs. Mocht je een situatie hebben waarvoor je moet weten wie wanneer succesvol is ingelogd, dan kun je daar ook de Windows Event Viewer voor gebruiken.
Zet de optie 'Log dropped packets' op 'Yes' en klik op 'OK'.
Stap 6
Je keert terug naar het onderliggende venster en het tabblad 'Domain Profile'. Klik nu eerst op het tabblad 'Private Profile' en herhaal stap 4 & 5. Klik daarna op het tabblad 'Public Profile' en herhaal nogmaals stap 4 & 5. Je kunt nu alle nog openstaande Windows Firewall-vensters sluiten.
Stap 7
Herstart je VPS tot slot. Doe je dit niet, dan is de kans groot dat je al snel geen updates meer ziet in je logbestanden als gevolg van een conflict met de 'Base Filtering Engine'-service. Eventuele ontbrekende logmeldingen worden in dat geval na een herstart van je VPS of de Base Filtering Engine bijgewerkt.
Windows Firewall Logdata interpreteren
De data van je Windows Firewall logbestand is gelukkig relatief eenvoudig te interpreteren. Wanneer je het bestand opent krijg je te zien waaruit iedere regel is opgebouwd:
date time action protocol src-ip dst-ip src-port dst-port size tcpflags tcpsyn tcpack tcpwin icmptype icmpcode info path pid
- date: De datum waarop het Firewall-evenement is gelogd
- time: Het tijdstip waarop het Firewall-evenement plaatsvond
- action: De maatregel die de Firewall heeft genomen. Als je deze handleiding volgt zal dit doorgaans altijd 'DROP' zijn. Mocht je ook succesvolle connecties loggen, dan zie je hier bijvoorbeeld ook 'ALLOW'-meldingen.
- protocol: Het gebruikte protocol, bijvoorbeeld TCP, UDP, of ICMP.
- src-ip: Het IP-adres waar vandaan de verbinding tot stand wordt gebracht.
- dst-ip: Het IP-adres waarmee verbonden wordt, bij 'DROP'-meldingen is dat eigenlijk altijd het IP-adres van jouw VPS.
- src-port: Vanaf welk poortnummer de versturende computer een verbinding opzet.
- dst-port: Het poortnummer waarmee de computer op src-ip probeert te verbinden. Het aardige is dat als je je Remote Desktop-poort verandert, er zo goed als geen pogingen om met poort 3389 te verbinden gelogd worden. Een potentiële aanvaller zal namelijk direct merken dat daar geen service meer op actief is en geen verdere pogingen doen.
Let op: Alle informatie onder dit punt is voor het onderzoeken van veiligheidsgerelateerde zaken zo goed als altijd overbodige informatie (met allicht 'path' en 'pid' als uitzondering).
- size: De omvang van het gelogde netwerk-packet in bytes.
- tcpflags: Gegevens over eventuele TCP control flags in TCP headers die aan het netwerkverkeer worden meegegeven.
- tcpsyn: Het TCP sequence getal in de network packet.
- tcpack: Toont het TCP acknowledgement getal in de packet.
- tcpwin: Het TCP window formaat in bytes in de gelogde packet.
- icmptype: In het geval het om een ICMP-bericht gaat, zal het type hier getoond worden (meestal is dit veld leeg).
- icmpcode: In het geval het om een ICMP-bericht gaat, wordt hier de ICMP code getoond (meestal ook leeg).
- info: Kan aanvullende informatie tonen, maar is meestal een leeg veld.
- path: Toont de richting van het verkeer SEND (uitgaand netwerkverkeer), RECEIVE (ontvangen verkeer), FORWARD (doorgestuurd), en UNKNOWN (onbekend).
- pid: Ieder proces in Windows (en ook Linux en MacOS) heeft een uniek Process ID. Het PID toont dit unieke Process ID.
Twee voorbeelden:
2022-10-21 12:04:12 DROP TCP 123.123.123.123 111.222.333.444 63573 3389 52 S 2140869953 0 8192 - - - RECEIVE 4
2022-10-21 12:04:49 ALLOW UDP 111.222.333.444 239.255.255.250 61929 1900 0 - - - - - - - SEND 932
- We stelden eerder dat de size, tcpflags, tcpsyn, tcpack, tcpwin, icmptype, icmpcode en info flags niet relevant zijn voor security onderzoeken. De nog wel relevante velden zijn in bold en italic gemarkeerd
- In dit voorbeeld zien we een 'RECEIVE' en een 'SEND' path. Dit verteld ons in één oogopslag dat de eerste melding binnenkomend verkeer is en de tweede uitgaand.
- In de eerste melding zien we een tegengehouden poging (DROP) om met de Remote Desktop poort 3389 te verbinden vanaf IP-adres 123.123.123.123. Uit veiligheidsoverwegingen raden we aan altijd je Remote Desktop Poort te veranderen en enkel je eigen IP-adressen toestaan daarmee te verbinden.
- De tweede melding laat ons zien dat vanaf het IP-adres van de VPS (123.123.123.123) succesvol (ALLOW) verkeer wordt verstuurd naar het IP-adres 239.255.255.250. In dit geval gaat het om onschuldig broadcast verkeer. Tenzij je een reden hebt om te vermoeden dat vanaf je VPS aanvallen worden uitgevoerd, kun je alle 'SEND' messages veilig negeren (die zijn standaard ook niet zichtbaar tenzij je de optie 'Log succesful connections' aanzet in de eerste paragraaf).