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.
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
CIS M365: Control () - CIS Windows Benchmark - Configure Windows Time Service met vertrouwde NTP sources
BIO: 09.04.01, 13.01.02 - BIO Thema 9 Authenticatie - Betrouwbare tijdbron voor security functies
ISO 27001:2022: A.12.4.4 - Clock synchronisation - Tijdsynchronisatie voor accurate logging en audit trails
NIS2: Artikel - Incident response - Betrouwbare tijdstempels voor detectie en analyse
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# ============================================================================functionTest-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 bestaatif (-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 lezentry {
$regValue = Get-ItemProperty -Path $RegPath -Name $RegName -ErrorAction Stop
$result.CurrentValue = $regValue.$RegName# Vergelijk met verwachte waardeif ($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 = $nulltry {
$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 waardeif ($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 $RegNameif ($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 impactWrite-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 outputWrite-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 implementationWrite-Host " Configuration reverted" -ForegroundColor Green
Write-Host "`n[OK] Revert completed" -ForegroundColor Green
}# MAIN EXECUTION BLOCK# ============================================================================try {
# BannerWrite-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 rechtenif (-not (Connect-RequiredServices)) {
exit 1
}
# Stap 2: Bepaal actie op basis van parametersif ($Monitoring) {
# Uitgebreid monitoring rapport$result = Invoke-Monitoring
exit $(if ($result.IsCompliant) { 0 } else { 1 })
}
elseif ($Remediation) {
# Remediatie met optionele WhatIfif ($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 ongedaanWrite-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-ComplianceWrite-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 handlingWrite-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-Date2. 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.