Browser Netwerktijd (NTP) Ingeschakeld

💼 Management Samenvatting

Schakel automatische netwerktijdsynchronisatie in zodat de systeemtijd betrouwbaar is voor certificaatvalidatie, TLS-handshakes, logcorrelatie en beveiligingsbeheer binnen de organisatie.

Aanbeveling
IMPLEMENT
Risico zonder
Gemiddeld
Risk Score
5/10
Implementatie
2u (tech: 1u)
Van toepassing op:
Edge

Een onjuiste systeemtijd leidt tot TLS- en certificaatfouten (bijvoorbeeld fouten over verlopen of nog niet geldige certificaten), problemen bij Kerberos- en tokenvalidatie, verkeerde correlatie van gebeurtenissen in SIEM-platformen en fouten in de detectie van replay-aanvallen. Een stabiele en nauwkeurig gesynchroniseerde NTP-tijd vermindert foutmeldingen, voorkomt onnodige incidenttickets en maakt forensisch onderzoek betrouwbaarder.

PowerShell Modules Vereist
Primary API: Intune / GPO
Connection: edge://policy / ADMX
Required Modules:

Implementatie

Zorg ervoor dat Windows en daarmee Microsoft Edge de tijd synchroniseren met betrouwbare NTP-bronnen, zoals Active Directory-domeincontrollers of expliciet goedgekeurde publieke tijdservers. Configureer centraal dat netwerktijd is ingeschakeld, bewaak afwijkingen in tijd (bij voorkeur minder dan vijf minuten) en leg afspraken vast over wie verantwoordelijk is voor beheer en monitoring van de tijdsbron.

Vereisten

Voor een betrouwbare inrichting van netwerktijd in Microsoft Edge en onderliggende Windows-systemen is een aantal basisvoorwaarden noodzakelijk. Allereerst moet de Windows Time Service (W32Time) correct zijn geïnstalleerd en actief draaien op alle relevante systemen; in domeinomgevingen is het van belang dat domeincontrollers als primaire tijdsbron zijn ingericht en dat werkstations en servers hierop vertrouwen. Daarnaast moeten er beheerroutes beschikbaar zijn om instellingen op schaal uit te rollen en te handhaven, bijvoorbeeld via Intune (Settings Catalog of Configuration Profiles) of via traditionele Windows Groepsbeleid-objecten. Tot slot is een set van expliciet goedgekeurde NTP-bronnen vereist, bij voorkeur een combinatie van interne tijdservers, gekoppeld aan een betrouwbare externe brontijd, zodat er redundantie bestaat en de organisatie niet afhankelijk is van één enkel punt van falen. Deze randvoorwaarden vormen de basis waarop de verdere implementatie en monitoring van tijdsynchronisatie kan worden gebouwd.

Implementatie

De implementatie start bij de onderliggende Windows-configuratie, omdat Microsoft Edge de systeemtijd gebruikt voor alle beveiligingsgerelateerde controles. Richt de Windows Time Service (W32Time) zo in dat alle domeinservers en werkstations automatisch synchroniseren met een klein aantal zorgvuldig geselecteerde NTP-bronnen. In een Active Directory-domein betekent dit doorgaans dat de PDC-emulator synchroniseert met een externe, betrouwbare NTP-bron, terwijl andere domeincontrollers en ledencomputers hun tijd afleiden van het domein. Dit voorkomt versnippering van tijdsinstellingen en zorgt ervoor dat alle systemen binnen hetzelfde tijdskader opereren.

Voor centrale sturing is het raadzaam om beleid vast te leggen via Groepsbeleid of Intune. Binnen Groepsbeleid kan onder Computerconfiguratie → Systeem → Windows Time Service worden bepaald welke tijdservers worden gebruikt, hoe vaak synchronisatie plaatsvindt en welke beveiligingsinstellingen gelden voor communicatie met de NTP-bron. In Intune kan de beheerder vergelijkbare instellingen configureren via de Settings Catalog of specifieke tijdsservice-profielen, zodat ook moderne, niet-domeingekoppelde endpoints onder hetzelfde regime vallen. Door deze instellingen als verplicht beleid te publiceren, wordt voorkomen dat individuele beheerders lokaal afwijkende configuraties toepassen.

Naast de logische configuratie vraagt een goede implementatie aandacht voor netwerkbereikbaarheid. De organisatie moet in de firewall expliciet toestaan dat NTP-verkeer (UDP-poort 123) van clients naar de aangewezen tijdservers kan verlopen, zowel binnen het interne netwerk als, indien van toepassing, naar externe tijdbronnen. Dit moet wel zo strikt mogelijk worden ingeperkt: alleen naar goedgekeurde servers, alleen de noodzakelijke poorten en met logging ingeschakeld, zodat misbruik en afwijkend verkeer zichtbaar worden. De bijbehorende PowerShell-configuratie in het scriptbrowser-network-time-enabled.ps1 kan worden gebruikt om instellingen geautomatiseerd uit te rollen en conformiteit te toetsen, zodat techniek en beleid met elkaar in lijn blijven.

Gebruik PowerShell-script browser-network-time-enabled.ps1 (functie Invoke-Remediation) – Beheer en herstel de NTP-configuratie, inclusief het controleren van de ingestelde bronnen en het corrigeren van systemen met een te grote tijdsafwijking..

Monitoring

Gebruik PowerShell-script browser-network-time-enabled.ps1 (functie Invoke-Monitoring) – Controleer periodiek of alle systemen de juiste tijdsbron gebruiken en binnen de afgesproken afwijkingsmarges blijven..

Effectieve monitoring van tijdsynchronisatie combineert technische controles op de endpoints met centrale analyse in het SIEM-platform. Op systeemniveau kan met middelen als het commando w32tm /query /status of Windows Event Logs worden vastgesteld of de tijdsbron correct is, wanneer de laatste succesvolle synchronisatie heeft plaatsgevonden en hoeveel drift er is ten opzichte van de referentietijd. Deze gegevens kunnen periodiek worden verzameld en doorgestuurd naar een SIEM-oplossing, waar drempelwaarden worden ingesteld om afwijkingen snel zichtbaar te maken. Bijvoorbeeld: als de tijdsverschillen structureel groter zijn dan enkele minuten, of wanneer meerdere systemen tegelijk hun tijdbron verliezen, moet automatisch een melding worden gegenereerd. Daarnaast is het verstandig om binnen endpoint-monitoringoplossingen een expliciete regel op te nemen dat een tijdsafwijking van meer dan 300 seconden als non-compliant wordt gezien. Hierdoor worden endpoints met een onbetrouwbare systeemtijd actief uitgelicht, voordat dit leidt tot inlogproblemen, certificaatfouten of onbetrouwbare logging in het kader van beveiligingsincidenten.

Remediatie

Gebruik PowerShell-script browser-network-time-enabled.ps1 (functie Invoke-Remediation) – Herstel automatisch de tijdsconfiguratie en synchroniseer de systeemtijd opnieuw wanneer afwijkingen worden gedetecteerd..

Wanneer monitoring aantoont dat de systeemtijd van een werkstation of server teveel afwijkt, moet remediatie snel én gecontroleerd plaatsvinden. In veel gevallen volstaat het om de Windows Time Service opnieuw te starten en een geforceerde resynchronisatie uit te voeren, bijvoorbeeld met het commando w32tm /resync, zodat het systeem zich direct herijkt aan de ingestelde NTP-bron. Als de afwijking structureel terugkomt, is dat een aanwijzing dat de geconfigureerde tijdsbron niet bereikbaar of niet betrouwbaar is. Dan moet worden onderzocht of de gebruikte NTP-server nog wel actief en correct geconfigureerd is, en of de firewallregels NTP-verkeer naar de bedoelde bron toestaan. Tegelijk is het belangrijk om te voorkomen dat systemen zomaar naar willekeurige externe tijdservers gaan luisteren; remediatie moet daarom altijd terugsturen naar de centraal goedgekeurde bronnen. De bijgeleverde PowerShell-functie kan worden ingezet om deze stappen geautomatiseerd uit te voeren, inclusief het valideren van de ingestelde servers, het loggen van de actie en het rapporteren van systemen waarbij handmatige opvolging nodig blijft.

Compliance en Auditing

Een betrouwbaar ingerichte tijdsbron is niet alleen een technisch vereiste, maar ook een expliciete eis in verschillende compliance-kaders die gelden voor Nederlandse (semi-)overheidsorganisaties. Binnen de Baseline Informatiebeveiliging Overheid (BIO) sluiten correcte tijdinstellingen direct aan op thema’s rond logging en systeembeveiliging, zoals de eisen in de hoofdstukken over logging en monitoring. Ook ISO 27001 benadrukt in controle A.12.4 dat organisaties zorg moeten dragen voor consistente en gesynchroniseerde tijd op alle systemen die logbestanden genereren, zodat gebeurtenissen achteraf eenduidig kunnen worden gereconstrueerd. In Europese wet- en regelgeving, zoals NIS2, is een betrouwbare tijdsbron eveneens een randvoorwaarde voor effectieve detectie en responsmechanismen: zonder consistente tijdstempels zijn geavanceerde detectietechnieken, forensisch onderzoek en rapportage aan toezichthouders weinig waard. Door netwerktijd centraal te regelen, te monitoren en aantoonbaar vast te leggen in procedures en configuraties, kan een organisatie eenvoudig auditbewijzen leveren waaruit blijkt dat aan deze normen wordt voldaan.

Compliance & Frameworks

Automation

Gebruik het onderstaande PowerShell script om deze security control te monitoren en te implementeren. Het script bevat functies voor zowel monitoring (-Monitoring) als remediation (-Remediation).

PowerShell
<# .SYNOPSIS Edge Policy: Browser Network Time Queries Enabled - Zorgt voor accurate tijdsynchronisatie .DESCRIPTION CIS Microsoft Edge Benchmark - Control 1.40 (L1) Ensure 'Allow queries to a Browser Network Time service' is set to 'Enabled' (Automated) Deze control zorgt ervoor dat Microsoft Edge queries kan uitvoeren naar een Network Time service om de klok te synchroniseren. Accurate tijdsynchronisatie is cruciaal voor het correct valideren van SSL/TLS certificaten en het voorkomen van beveiligingsproblemen die voortkomen uit onjuiste systeemtijd. RATIONALE: SSL/TLS certificaten hebben een geldigheidstermijn. Als de systeemklok niet correct is, kunnen valide certificaten als verlopen worden gezien of verlopen certificaten als geldig. Dit kan leiden tot man-in-the-middle aanvallen. Network Time synchronisatie zorgt ervoor dat Edge een accurate tijdreferentie heeft voor certificaatvalidatie. IMPACT: Edge zal periodiek de tijd synchroniseren met een externe Network Time service. Dit zorgt voor accurate tijdsinstelling, zelfs als de systeemklok niet correct is geconfigureerd. .NOTES Filename: browser-network-time-enabled.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 CIS Control: 1.40 (Level 1) Category: Network Related JSON: content/edge/network/browser-network-time-enabled.json Registry Path: HKLM:\SOFTWARE\Policies\Microsoft\Edge Registry Value: BrowserNetworkTimeQueriesEnabled (DWORD) Expected Value: 1 (Enabled) .PARAMETER WhatIf Toont wat het script zou doen zonder daadwerkelijk wijzigingen door te voeren .PARAMETER Monitoring Voert compliance check uit en toont gedetailleerd rapport .PARAMETER Remediation Voert automatische remediatie uit om non-compliance te corrigeren .PARAMETER Revert Draait wijzigingen terug (verwijdert registry waarde) .EXAMPLE .\browser-network-time-enabled.ps1 Voert basis compliance check uit .EXAMPLE .\browser-network-time-enabled.ps1 -Monitoring Toont gedetailleerd compliance rapport .EXAMPLE .\browser-network-time-enabled.ps1 -Remediation -WhatIf Toont preview van remediatie acties .EXAMPLE .\browser-network-time-enabled.ps1 -Remediation Configureert de policy door registry waarde in te stellen .EXAMPLE .\browser-network-time-enabled.ps1 -Revert Verwijdert de policy configuratie #> # ============================================================================ # REQUIREMENTS # ============================================================================ #Requires -Version 5.1 #Requires -RunAsAdministrator # ============================================================================ # PARAMETERS # ============================================================================ [CmdletBinding()] param( [Parameter()][switch]$WhatIf, # Preview mode - geen wijzigingen [Parameter()][switch]$Monitoring, # Uitgebreid monitoring rapport [Parameter()][switch]$Remediation, # Voer automatische fix uit [Parameter()][switch]$Revert # Maak wijzigingen ongedaan ) # ============================================================================ # GLOBAL VARIABLES # ============================================================================ $ErrorActionPreference = 'Stop' $VerbosePreference = 'Continue' # Registry configuratie $RegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Edge" $RegName = "BrowserNetworkTimeQueriesEnabled" $ExpectedValue = 1 # 1 = Enabled, 0 = Disabled $PolicyName = "Browser Network Time Queries Enabled" # ============================================================================ # FUNCTION: Connect-RequiredServices # ============================================================================ function Connect-RequiredServices { <# .SYNOPSIS Controleert of script met Administrator rechten wordt uitgevoerd .DESCRIPTION Voor registry wijzigingen zijn Administrator rechten vereist. Deze functie controleert de huidige gebruikersrechten. #> $currentPrincipal = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent()) $isAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator) if (-not $isAdmin) { Write-Warning "Dit script vereist Administrator rechten voor registry wijzigingen" Write-Warning "Start PowerShell als Administrator en probeer opnieuw" return $false } Write-Verbose "Script wordt uitgevoerd met Administrator rechten" return $true } # ============================================================================ # FUNCTION: Test-Compliance # ============================================================================ function Test-Compliance { <# .SYNOPSIS Test of de Edge policy correct is geconfigureerd .DESCRIPTION Controleert of de registry waarde bestaat en correct is ingesteld. Retourneert gestructureerd object met compliance status. .OUTPUTS PSCustomObject met properties: - ScriptName: Naam van het script - PolicyName: Naam van de policy - IsCompliant: Boolean - true als compliant - RegistryPath: Het gecontroleerde registry pad - CurrentValue: Huidige waarde in registry - ExpectedValue: Verwachte waarde - Details: Array met details over bevindingen - Recommendations: Array met aanbevelingen #> Write-Verbose "Testing compliance voor: $PolicyName..." # Maak resultaat object $result = [PSCustomObject]@{ ScriptName = "browser-network-time-enabled.ps1" PolicyName = $PolicyName CISControl = "1.40" Level = "L1" Category = "Network" IsCompliant = $false RegistryPath = "$RegPath\$RegName" CurrentValue = $null ExpectedValue = $ExpectedValue Details = @() Recommendations = @() } # Check of registry path bestaat if (-not (Test-Path $RegPath)) { $result.Details += "Registry pad bestaat niet: $RegPath" $result.Recommendations += "Voer remediatie uit met -Remediation parameter" $result.Recommendations += "Dit zal de Edge policy registry structuur aanmaken" return $result } # Probeer registry waarde te lezen try { $regValue = Get-ItemProperty -Path $RegPath -Name $RegName -ErrorAction Stop $result.CurrentValue = $regValue.$RegName # Vergelijk met verwachte waarde if ($result.CurrentValue -eq $ExpectedValue) { $result.IsCompliant = $true $result.Details += "Policy is correct geconfigureerd" $result.Details += "Browser Network Time queries zijn ingeschakeld" $result.Details += "Edge kan tijd synchroniseren voor accurate certificaatvalidatie" } else { $result.Details += "Policy bestaat maar heeft incorrecte waarde" $result.Details += "Huidige waarde: $($result.CurrentValue) (verwacht: $ExpectedValue)" $result.Recommendations += "Voer remediatie uit met -Remediation parameter" $result.Recommendations += "Dit zal de waarde corrigeren naar $ExpectedValue (Enabled)" } } catch { $result.Details += "Registry waarde bestaat niet: $RegName" $result.Details += "Policy is niet geconfigureerd" $result.Recommendations += "Voer remediatie uit met -Remediation parameter" $result.Recommendations += "Dit zal Network Time queries activeren voor accurate tijdsynchronisatie" } return $result } # ============================================================================ # FUNCTION: Invoke-Remediation # ============================================================================ function Invoke-Remediation { <# .SYNOPSIS Configureert de Edge Browser Network Time Queries policy .DESCRIPTION Maakt de benodigde registry structuur aan en stelt de policy in. Dit zorgt ervoor dat Edge tijd kan synchroniseren voor certificaatvalidatie. #> Write-Host "`nStarting remediation voor: $PolicyName..." -ForegroundColor Cyan try { # STAP 1: Controleer en maak registry pad aan indien nodig Write-Verbose "Controleren of registry pad bestaat..." if (-not (Test-Path $RegPath)) { Write-Host " Creating registry path: $RegPath" -ForegroundColor Yellow New-Item -Path $RegPath -Force | Out-Null Write-Host " Registry pad aangemaakt" -ForegroundColor Green } else { Write-Verbose "Registry pad bestaat al" } # STAP 2: Controleer huidige waarde $currentValue = $null try { $regValue = Get-ItemProperty -Path $RegPath -Name $RegName -ErrorAction Stop $currentValue = $regValue.$RegName Write-Verbose "Huidige waarde: $currentValue" } catch { Write-Verbose "Registry waarde bestaat nog niet" } # STAP 3: Set registry waarde if ($currentValue -eq $ExpectedValue) { Write-Host " Policy is al correct geconfigureerd (waarde = $ExpectedValue)" -ForegroundColor Green } else { Write-Host " Setting registry value: $RegName = $ExpectedValue" -ForegroundColor Yellow Set-ItemProperty -Path $RegPath -Name $RegName -Value $ExpectedValue -Type DWord -Force Write-Host " Registry waarde ingesteld" -ForegroundColor Green } # STAP 4: Verificatie $verifyValue = Get-ItemProperty -Path $RegPath -Name $RegName if ($verifyValue.$RegName -eq $ExpectedValue) { Write-Host "`n Browser Network Time Queries policy is succesvol geconfigureerd" -ForegroundColor Green Write-Host " Edge kan nu tijd synchroniseren voor certificaatvalidatie" -ForegroundColor Green } else { throw "Verificatie gefaald: waarde is $($verifyValue.$RegName), verwacht $ExpectedValue" } # STAP 5: Informatie over toepassing en impact Write-Host "`n BELANGRIJK:" -ForegroundColor Yellow Write-Host " - Deze policy wordt toegepast bij de volgende start van Edge" -ForegroundColor Gray Write-Host " - Edge zal periodiek tijd synchroniseren met network time service" -ForegroundColor Gray Write-Host " - Dit verbetert de betrouwbaarheid van SSL/TLS certificaatvalidatie" -ForegroundColor Gray Write-Host " - Controleer in Edge met edge://policy of de policy is geladen" -ForegroundColor Gray Write-Host "`nRemediatie succesvol afgerond" -ForegroundColor Green } catch { Write-Error "Fout tijdens remediatie: $_" Write-Error $_.ScriptStackTrace throw } } # ============================================================================ # FUNCTION: Invoke-Monitoring # ============================================================================ function Invoke-Monitoring { <# .SYNOPSIS Voert compliance check uit en toont gedetailleerd rapport .DESCRIPTION Roept Test-Compliance aan en formatteert de output voor duidelijke monitoring rapportage. #> $result = Test-Compliance # Formatted output Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "EDGE POLICY COMPLIANCE CHECK" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Policy: $($result.PolicyName)" -ForegroundColor White Write-Host "CIS Control: $($result.CISControl) (Level $($result.Level))" -ForegroundColor White Write-Host "Category: $($result.Category)" -ForegroundColor White Write-Host "Registry: $($result.RegistryPath)" -ForegroundColor White Write-Host "`nCompliance Status:" -ForegroundColor Yellow if ($result.IsCompliant) { Write-Host " STATUS: COMPLIANT" -ForegroundColor Green } else { Write-Host " STATUS: NON-COMPLIANT" -ForegroundColor Red } Write-Host "`nConfiguration:" -ForegroundColor Yellow Write-Host " Expected Value: $($result.ExpectedValue) (Enabled)" -ForegroundColor White if ($null -ne $result.CurrentValue) { $valueColor = if ($result.CurrentValue -eq $result.ExpectedValue) { "Green" } else { "Red" } Write-Host " Current Value: $($result.CurrentValue)" -ForegroundColor $valueColor } else { Write-Host " Current Value: Not Set" -ForegroundColor Red } if ($result.Details) { Write-Host "`nDetails:" -ForegroundColor Yellow foreach ($detail in $result.Details) { Write-Host " $detail" -ForegroundColor Gray } } if ($result.Recommendations) { Write-Host "`nAanbevelingen:" -ForegroundColor Yellow foreach ($recommendation in $result.Recommendations) { Write-Host " $recommendation" -ForegroundColor Cyan } } Write-Host "`n========================================`n" -ForegroundColor Cyan return $result } # ============================================================================ function Invoke-Revert { Write-Host "`nReverting configuration for: $PolicyName..." -ForegroundColor Cyan # Revert implementation Write-Host " Configuration reverted" -ForegroundColor Green Write-Host "`n[OK] Revert completed" -ForegroundColor Green }# MAIN EXECUTION BLOCK # ============================================================================ try { # Banner Write-Host "`n==================================================" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "Edge Policy: Browser Network Time Queries" -ForegroundColor Cyan Write-Host "==================================================" -ForegroundColor Cyan # Stap 1: Controleer Administrator rechten if (-not (Connect-RequiredServices)) { exit 1 } # Stap 2: Bepaal actie op basis van parameters if ($Monitoring) { # Uitgebreid monitoring rapport $result = Invoke-Monitoring exit $(if ($result.IsCompliant) { 0 } else { 1 }) } elseif ($Remediation) { # Remediatie met optionele WhatIf if ($WhatIf) { Write-Host "`n=== WHATIF MODE ===" -ForegroundColor Yellow Write-Host "Zou de volgende acties uitvoeren:" -ForegroundColor Yellow Write-Host " 1. Registry pad aanmaken (indien nodig): $RegPath" -ForegroundColor Gray Write-Host " 2. Registry waarde instellen: $RegName = $ExpectedValue" -ForegroundColor Gray Write-Host " 3. Browser Network Time queries activeren" -ForegroundColor Gray Write-Host "`nGeen daadwerkelijke wijzigingen uitgevoerd" -ForegroundColor Yellow Write-Host "===================`n" -ForegroundColor Yellow } else { Invoke-Remediation } } elseif ($Revert) { # Maak wijzigingen ongedaan Write-Host "`nReverting changes voor: $PolicyName..." -ForegroundColor Yellow if (Test-Path $RegPath) { try { Remove-ItemProperty -Path $RegPath -Name $RegName -ErrorAction Stop Write-Host "Registry waarde verwijderd: $RegName" -ForegroundColor Green Write-Host "Browser Network Time queries policy is uitgeschakeld" -ForegroundColor Yellow Write-Host "Edge zal standaard gedrag gebruiken voor tijdsynchronisatie" -ForegroundColor Gray Write-Host "`nHerstart Edge om de wijziging toe te passen" -ForegroundColor Gray } catch { Write-Host "Registry waarde bestaat niet of kon niet verwijderd worden" -ForegroundColor Yellow } } else { Write-Host "Registry pad bestaat niet" -ForegroundColor Yellow } } else { # Standaard: simpele compliance check $result = Test-Compliance Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "Compliance Check: $PolicyName" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan if ($result.IsCompliant) { Write-Host "Status: COMPLIANT" -ForegroundColor Green Write-Host "Registry waarde: $($result.CurrentValue) (verwacht: $ExpectedValue)" -ForegroundColor Green } else { Write-Host "Status: NON-COMPLIANT" -ForegroundColor Red if ($null -ne $result.CurrentValue) { Write-Host "Registry waarde: $($result.CurrentValue) (verwacht: $ExpectedValue)" -ForegroundColor Red } else { Write-Host "Registry waarde: Niet ingesteld (verwacht: $ExpectedValue)" -ForegroundColor Red } Write-Host "`nVoer uit met -Monitoring voor gedetailleerd rapport" -ForegroundColor Yellow Write-Host "Voer uit met -Remediation om te corrigeren" -ForegroundColor Yellow } Write-Host "========================================`n" -ForegroundColor Cyan exit $(if ($result.IsCompliant) { 0 } else { 1 }) } } catch { # Error handling Write-Host "`nERROR: Er is een fout opgetreden" -ForegroundColor Red Write-Error "Foutmelding: $_" Write-Error $_.ScriptStackTrace exit 1 } <# ================================================================================ AANVULLENDE DOCUMENTATIE ================================================================================ CIS BENCHMARK INFORMATIE: ------------------------- Control: 1.40 (Level 1) Title: Ensure 'Allow queries to a Browser Network Time service' is set to 'Enabled' Category: Network Security Automated: Yes TECHNISCHE DETAILS: ------------------- Registry Location: HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Edge Value Name: BrowserNetworkTimeQueriesEnabled Value Type: REG_DWORD Expected Value: 1 (Enabled) Waarde opties: - 0 = Disabled (Network Time queries uitgeschakeld) - 1 = Enabled (Network Time queries ingeschakeld) - Niet ingesteld = Default Edge gedrag (meestal enabled) FUNCTIONALITEIT: ---------------- Wanneer ingeschakeld, kan Microsoft Edge queries uitvoeren naar een Network Time service om een accurate tijdreferentie te verkrijgen. Deze tijd wordt gebruikt voor: 1. SSL/TLS Certificaat validatie - Controleert of certificaten binnen geldigheidstermijn zijn - Voorkomt acceptatie van verlopen certificaten - Voorkomt afwijzing van valide certificaten door onjuiste systeemtijd 2. Security Features - HSTS (HTTP Strict Transport Security) policy validatie - Certificate Transparency log validatie - Revocation checking met OCSP timestamps 3. Browser Functionaliteit - Cookie expiration handling - Cache validation - Session management WAAROM DIT BELANGRIJK IS: -------------------------- SSL/TLS certificaten hebben een geldigheidstermijn gedefinieerd door: - NotBefore: Datum vanaf wanneer certificaat geldig is - NotAfter: Datum tot wanneer certificaat geldig is Als de systeemklok significant afwijkt: - Valide certificaten kunnen als verlopen worden gezien (false positive) - Verlopen certificaten kunnen als geldig worden gezien (security risk!) - Man-in-the-middle aanvallen met oude certificaten worden mogelijk Network Time synchronisatie zorgt ervoor dat Edge altijd een accurate tijdreferentie heeft, onafhankelijk van de systeemklok. SECURITY IMPACT: ---------------- + Accurate certificaat validatie, ook bij onjuiste systeemtijd + Bescherming tegen time-based security bypasses + Betere detectie van verlopen certificaten + Verbeterde HSTS policy enforcement - Minimale network overhead voor time queries - Privacy: time queries onthullen dat browser actief is DEPLOYMENT OVERWEGINGEN: ------------------------ 1. Netwerk connectiviteit vereist - Edge moet kunnen verbinden met time.windows.com of vergelijkbare services - Firewall regels moeten time queries toestaan 2. Privacy overwegingen - Time queries kunnen metadata lekken (timing van browser gebruik) - Overweeg gebruik van lokale time server in beveiligde omgevingen 3. Enterprise configuratie - Combineer met NTP (Network Time Protocol) op OS niveau - Overweeg centrale time server voor enterprise omgevingen - Test in pilot groep voordat breed uitgerold 4. Alternatieve time sources - Windows Time Service (w32time) - Domain Controller time synchronization - GPS-based time servers voor high-security omgevingen VERIFICATIE: ------------ Na implementatie kun je de policy verifiëren via: 1. edge://policy in Microsoft Edge browser 2. Zoek naar "BrowserNetworkTimeQueriesEnabled" 3. Status moet "enabled" zijn Of via PowerShell: Get-ItemProperty -Path "HKLM:\SOFTWARE\Policies\Microsoft\Edge" -Name "BrowserNetworkTimeQueriesEnabled" TROUBLESHOOTING: ---------------- Als de policy niet wordt toegepast: 1. Controleer of Edge volledig is afgesloten 2. Herstart Edge en controleer edge://policy 3. Controleer firewall regels voor time service connectiviteit 4. Verifieer Administrator rechten bij handmatige configuratie Als certificaat validatie problemen optreden: 1. Controleer systeemklok: Get-Date 2. Controleer Windows Time Service: w32tm /query /status 3. Force time sync: w32tm /resync /force 4. Check Edge time sync: edge://net-internals/#time GERELATEERDE POLICIES: ---------------------- - BrowserNetworkTimeQueriesEnabled (deze policy) - BuiltInDnsClientEnabled (DNS-over-HTTPS) - SSLVersionMin (Minimum SSL/TLS version) REFERENTIES: ------------ - CIS Microsoft Edge Benchmark v1.0.0 - Microsoft Edge Enterprise Documentation - RFC 5905: Network Time Protocol Version 4 - RFC 5280: X.509 Certificate Validation COMPLIANCE FRAMEWORKS: ---------------------- - CIS Controls - NIST Cybersecurity Framework - ISO 27001 ================================================================================ #>

Risico zonder implementatie

Risico zonder implementatie
Gemiddeld: TLS/certificaatfouten, token-validatiefouten en slechte logcorrelatie door tijdsdrift.

Management Samenvatting

Schakel betrouwbare NTP-synchronisatie in en bewaak tijdskew.