OT-netwerksegmentatie Voor Kritieke Overheidsprocessen

💼 Management Samenvatting

Segmentatie in OT-netwerken is de veiligheidsklep die voorkomt dat een aanval in een kantooromgeving zich razendsnel verspreidt naar waterzuiveringsinstallaties, bruggen, energiedistributie of verkeerssystemen.

Aanbeveling
IMPLEMENT
Risico zonder
High
Risk Score
9/10
Implementatie
360u (tech: 220u)
Van toepassing op:
Industriële controlesystemen
Microsoft Defender for IoT
Azure Arc-enabled OT gateways
Hybride OT/IT-omgevingen

Nederlandse overheden vertrouwen in toenemende mate op industriële automatisering om publieke diensten draaiende te houden. Deze OT-omgevingen zijn vaak historisch gegroeid, bevatten apparatuur met lange levensduur en zijn slechts gedeeltelijk te patchen. Tegelijkertijd eisen BIO, NIS2 en toezichthouders aantoonbare maatregelen om laterale beweging te voorkomen en om ICS-componenten te isoleren van generieke IT-infrastructuur. Zonder streng gedefinieerde segmenten en onderling gecontroleerde conduits kan één gecompromitteerde laptop leiden tot het stilleggen van pompgemalen, tunnels of sluizen. Segmentatie is dus geen netwerkproject, maar een veiligheidsmaatregel die rechtstreeks de continuïteit van primaire overheidsprocessen beschermt.

PowerShell Modules Vereist
Primary API: Microsoft Defender for IoT API, Azure Firewall Manager, Azure Policy
Connection: Connect-AzAccount voor Azure-resources, gebruik Defender for IoT REST API met service principals voor sensorbeheer
Required Modules: Az.Accounts, Az.Resources, Az.PolicyInsights

Implementatie

Dit artikel beschrijft hoe u vanuit de Nederlandse Baseline voor Veilige Cloud een OT-segmentatiestrategie opzet. We behandelen governance en verantwoordelijkheden, de architectuur van zones en conduits, technische implementatie met Microsoft Defender for IoT, Azure Firewall Manager en industriële firewalls, en de monitoring- en compliance-eisen zodat auditors, toezichthouders en bestuurders het bewijs krijgen dat segmentatie daadwerkelijk werkt. Het meegeleverde PowerShell-script ondersteunt organisaties bij het modelleren, toetsen en documenteren van segmentatie-eisen zonder productieomgevingen te verstoren.

Governance, scope en risicodefinities

Een effectieve OT-segmentatie begint bij bestuurlijke verankering. College van B&W, gedeputeerde staten of ministeriële CIO’s moeten expliciet vastleggen welke diensten kritiek zijn, welke installaties onder de scope van segmentatie vallen en wie eindverantwoordelijk is voor de resulterende maatregelen. Het OT-domein kent doorgaans meerdere stakeholders: asset owners, procesengineers, OT-beheerders en SOC’s met vooral IT-focus. Door een centrale governance-structuur in te richten – bijvoorbeeld een OT Security Board – ontstaat een platform waar risico’s, wijzigingsvoorstellen en investeringsbeslissingen worden afgestemd. Deze board koppelt segmentatiedoelen aan wettelijke verplichtingen zoals de Waterwet, ProRail-sicherheitsrichtlijnen of provinciale vergunningseisen, en borgt budget voor lifecycle management van industriële firewalls, sensorsoftware en netwerkdetectie.

Scopebepaling vereist een grondige inventarisatie. Gemeenten en rijksonderdelen brengen alle assets in kaart inclusief zones (processen, productielijnen, veldapparatuur) en de digitale verbindingen tussen deze zones. Daarbij wordt niet alleen gekeken naar vaste bekabeling, maar ook naar draadloze verbindingen, onderhoudsmodems, tijdelijke bouwlocaties en connectiviteit met leveranciers. Voor elke asset wordt vastgelegd welke protocollen gebruikt worden (Modbus, DNP3, OPC UA), welke firmwareversies aanwezig zijn en welke afhankelijkheden bestaan met IT-componenten zoals historians, data platforms of dashboards. Deze inventarisatie vormt de basis voor risk scoring: assets die direct de openbare veiligheid beïnvloeden krijgen een hogere prioriteit voor segmentatie en aanvullende detectie.

Risicodefinities dienen specifiek te zijn voor OT. Waar IT-omgevingen vaak focussen op datalekken, richten OT-risico’s zich op fysieke veiligheid, beschikbaarheid en procesintegriteit. Organisaties hanteren daarom scenario’s zoals onbedoelde setpointwijzigingen, sabotage van veiligheidsfuncties, misbruik van remote access tijdens onderhoud of verstoring van synchronisatie tussen redundante systemen. Voor elk scenario wordt bepaald welke segmentatie-eis nodig is: volledige isolatie, unidirectionele gegevensstroom, protocolinspectie of deep packet inspection met ICS-specifieke regels. Dezelfde scenario’s worden gebruikt voor tabletop-oefeningen, waardoor bestuurders begrijpen waarom bepaalde investeringen noodzakelijk zijn.

Governance draait ook om afspraken met ketenpartners. Waterbedrijven, havenbedrijven en regionale uitvoeringsdiensten werken vaak in consortia. Segmentatieplannen moeten dus afgestemd worden met leveranciers die remote onderhoud verrichten, met shared service centra die monitoring uitvoeren en met nationale organisaties zoals NCSC of Rijkswaterstaat. Leg contractueel vast dat leveranciers alleen via gecontroleerde jump servers of time-bound VPN’s toegang krijgen, dat logging wordt gedeeld en dat wijzigingen in het netwerk vooraf worden aangemeld. Door deze afspraken te documenteren in het OT-segmentatiebeleid ontstaat een auditspoor waarmee organisaties kunnen aantonen dat third-party risico’s zijn gemitigeerd.

Architectuurprincipes, zones en conduits

Na de governancefase volgt de architectuur. De Nederlandse Baseline voor Veilige Cloud adviseert om IEC 62443 als uitgangspunt te gebruiken: definieer duidelijke zones (bijvoorbeeld veldniveau, controlevel, supervisieniveau en enterprise) en beschrijf voor elke zone de beveiligingsklasse, toegestane protocollen en authenticatiemechanismen. Binnen gemeenten kan dit betekenen dat rioolgemalen, verkeersregelinstallaties en bruggen elk in een aparte proceszone worden geplaatst met minimaal eigen VLAN’s en firewalls. De zonegrenzen worden zichtbaar gemaakt in netwerkdiagrammen waarin ook fysieke locaties, redundante verbindingen en failover-paden zijn opgenomen. Deze diagrammen dienen als leidraad voor zowel ontwerp als troubleshooting.

Conduits vormen de gecontroleerde doorgangen tussen zones. Ze kunnen bestaan uit industriële firewalls, datadiodes, SD-WAN-verbindingen of Azure ExpressRoute-circuits. Voor iedere conduit wordt vastgelegd welke richtingen zijn toegestaan, welke inspectieregels gelden en welke authenticatiemiddelen vereist zijn. Een typisch voorbeeld is een conduit tussen een OT-zone en een data lake in de cloud: data stroomt één kant op via een beveiligde gateway waar Defender for IoT sensor-data samenvoegt en anonimiseert voordat het naar Azure Data Explorer gaat. Configuratie van deze conduits wordt centraal beheerd via Azure Firewall Manager of industriële beheerplatformen zodat wijzigingen consistent en aantoonbaar zijn.

Segmentatiearchitectuur moet rekening houden met onderhoud en noodsituaties. Ontwerp daarom beheerzones met strikt gecontroleerde toegang, bijvoorbeeld een secure remote access platform waarop leveranciers via tijdelijke certificaten inloggen. Combineer dit met break-glass procedures voor calamiteiten, waarbij duidelijke stappen zijn vastgelegd om segmentatie tijdelijk open te zetten zonder dat logregistratie verloren gaat. Gebruik Microsoft Entra ID voor identiteitsbeheer van onderhoudsaccounts en zorg dat multifactor-authenticatie en privilege access workstations verplicht zijn voordat een conduit kan worden geopend.

Een moderne architectuur koppelt OT-segmentatie aan Zero Trust-principes. Dat betekent continue verificatie van identiteit, device-hygiëne en context voordat verkeer wordt toegestaan. Defender for IoT sensors leveren realtime inzicht in afwijkingen binnen een zone, terwijl Azure Policy en Azure Monitor toezien op configuratiedrift aan de IT-zijde van de conduits. Door OT-telemetrie te combineren met cloud intelligence kunnen organisaties automatisch maatregelen nemen, zoals het verlagen van bandbreedte, blokkeren van onbekende protocollen of isoleren van een veldapparaat. Dit verhoogt de veerkracht tegen supply-chain aanvallen en maakt het mogelijk om segmentatieregels te verfijnen op basis van actuele dreigingsinformatie.

Implementatie, automatisering en validatie

Gebruik PowerShell-script ot-network-segmentation.ps1 (functie Invoke-Remediation) – Genereert een startconfiguratie voor OT-zones en conduits, inclusief risicoprofielen en controles om segmentatieplannen reproduceerbaar vast te leggen..

De implementatie start met een sandbox of testomgeving waarin nieuwe segmentatieregels kunnen worden gevalideerd zonder productieprocessen te raken. Gemeenten en waterschappen gebruiken hiervoor vaak digitale twins van installaties of labopstellingen met vergelijkbare PLC’s. Het PowerShell-script in deze repository ondersteunt deze fase door configuratie-JSON’s aan te maken waarin zones, eigenaars en toegestane protocollen zijn vastgelegd. Hierdoor kunnen OT- en IT-teams gezamenlijk scenario’s doorlopen, bijvoorbeeld het tijdelijk openzetten van een conduit voor firmware-updates, en documenteren welke controles actief moeten zijn voordat de wijziging in productie gaat.

Automatisering van configuraties voorkomt menselijke fouten. Met Azure Policy en Infrastructure-as-Code (Bicep, Terraform) kunnen firewallregels, route-tabellen en Private Link-verbindingen consistent worden uitgerold naar Azure Stack HCI, SD-WAN-appliances en industriële firewalls. Combineer dit met versiebeheer in Git zodat iedere wijziging traceerbaar is en gekoppeld kan worden aan het segmentatieplan. Defender for IoT biedt API’s om sensorprofielen en alertregels via code te beheren, wat essentieel is wanneer tientallen installaties verspreid over het land dezelfde set controles moeten voeren.

Validatie gebeurt zowel technisch als procesmatig. Technisch worden regressietests uitgevoerd met traffic generators of gesimuleerde ICS-commando’s om te controleren of alleen toegestane protocollen passeren en of anomaliedetectie de juiste acties triggert. Procesmatig worden change- en noodprocedures geoefend met betrokken asset owners, zodat zij weten welke stappen moeten worden gezet wanneer segmentatie alarmeringen afgeeft. Documenteer elke test in een controleregister inclusief screenshots, logfragmenten en handtekeningen van reviewers; dit materiaal is onmisbaar bij audits door Rijksinspecties of externe accountants.

Tijdens de implementatie moeten ook operationele randvoorwaarden worden ingericht, zoals 24/7 monitoring, onderhoudsvensters en incidentrespons. Zorg dat SOC-analisten over playbooks beschikken waarin duidelijk staat beschreven hoe isolatie wordt afgedwongen, welke relaisstations kunnen worden stilgelegd en welke communicatie richting bestuurders nodig is bij impact op publieke dienstverlening. Deze playbooks verwijzen naar dezelfde zone-IDs en conduitnamen als het configuratiebestand uit het script, zodat er geen interpretatieverschillen ontstaan tussen teams.

Monitoring, aantoonbaarheid en continue verbetering

Gebruik PowerShell-script ot-network-segmentation.ps1 (functie Invoke-Monitoring) – Controleert configuratie-JSON’s op ontbrekende eigenaars, verouderde reviewdata en ongeautoriseerde conduits en genereert een rapport voor CISO en OT-lead..

Monitoring richt zich op zowel technische als bestuurlijke signalen. Technisch worden Defender for IoT sensors, industriële IDS’en en Azure Monitor gebruikt om afwijkingen te detecteren: onverwachte protocolwissels, verkeer buiten onderhoudsvensters of het plots wegvallen van redundante verbindingen. Bestuurlijk gaat het om metrics als het aantal openstaande segmentatie-afwijkingen, tijd tot mitigatie en de frequentie waarmee leveranciers toegang vragen tot beheerconduits. Door deze informatie te consolideren in een OT-segmentatiedashboard ontstaat een actueel beeld voor bestuurders en toezichthouders.

Aantoonbaarheid vereist dat elke wijziging, toetsing en afwijking wordt vastgelegd. Het PowerShell-script helpt daarbij door bij monitoring runs een JSON-rapport uit te schrijven met bevindingen, aanbevelingen en classificaties (kritiek, hoog, middel). Deze rapporten worden gekoppeld aan ticketing-systemen zoals TOPdesk of ServiceNow, zodat opvolging en goedkeuring zichtbaar blijven. Combineer dit met periodieke onafhankelijke reviews, bijvoorbeeld door de auditdienst of een gespecialiseerd OT-securitybedrijf, om te bevestigen dat segmentatie nog steeds aansluit op actuele dreigingsinformatie.

Continue verbetering wordt georganiseerd via een PDCA-cyclus. Elke zes tot twaalf maanden evalueert de OT Security Board de effectiviteit van segmentatie aan de hand van incidentstatistieken, lessons learned uit oefeningen en wijzigingen in wetgeving. Nieuwe technologieën zoals 5G-private netwerken, edge AI of autonome voertuigen introduceren nieuwe verbindingen die opnieuw in zones en conduits moeten worden geplaatst. Door best practices te delen tussen gemeenten, waterschappen en rijksonderdelen – bijvoorbeeld via het SCADA/ICS ISAC – versnelt de innovatie en worden fouten niet herhaald.

Compliancerapportages richting ILT, Agentschap Telecom of Europese toezichthouders vragen om concreet bewijs: netwerkdiagrammen, changelogboeken, testresultaten en beleidsteksten. Zorg dat deze documenten in een records management systeem met bewaartermijnen van minimaal zeven jaar worden opgeslagen. Dit is tevens noodzakelijk voor de Wet open overheid. Door segmentatiegegevens te integreren met verwerkingsregisters en risicoregisters ontstaat een volledig beeld van hoe OT-beveiliging is ingericht en welke maatregelen worden getroffen bij afwijkingen. Zo toont de organisatie aan dat zij structureel voldoet aan de Nederlandse Baseline voor Veilige Cloud.

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 Validatie- en configuratiescript voor OT-netwerksegmentatie. .DESCRIPTION Ondersteunt organisaties bij het vastleggen van OT-zones, conduits en controles volgens de Nederlandse Baseline voor Veilige Cloud. Met Remediation wordt een startconfiguratie aangemaakt, Monitoring controleert de kwaliteit van een bestaande configuratie en Revert verwijdert desgewenst het configuratiebestand. .NOTES Bestandsnaam : ot-network-segmentation.ps1 Auteur : Nederlandse Baseline voor Veilige Cloud Versie : 1.0 #> #Requires -Version 5.1 [CmdletBinding()] param( [Parameter(Mandatory = $false)] [switch]$Monitoring, [Parameter(Mandatory = $false)] [switch]$Remediation, [Parameter(Mandatory = $false)] [switch]$Revert, [Parameter(Mandatory = $false)] [string]$ConfigPath, [Parameter(Mandatory = $false)] [switch]$DebugMode, [Parameter(Mandatory = $false)] [switch]$WhatIf ) $ErrorActionPreference = 'Stop' Set-StrictMode -Version Latest Write-Host "`n============================================" -ForegroundColor Cyan Write-Host "OT-netwerksegmentatie validator" -ForegroundColor Cyan Write-Host "Nederlandse Baseline voor Veilige Cloud" -ForegroundColor Cyan Write-Host "============================================`n" -ForegroundColor Cyan function Get-ConfigPath { param( [string]$Override ) if ($Override) { return (Resolve-Path -Path $Override).Path } $scriptDir = Split-Path -Parent $PSCommandPath return (Join-Path -Path $scriptDir -ChildPath "ot-network-segmentation.config.json") } function Initialize-DefaultConfig { $today = (Get-Date).ToString("yyyy-MM-dd") $config = [ordered]@{ version = "1.0" generatedOn = $today owner = "OT Security Board" reviewCycleDays = 365 contacts = @( "CISO kantoor", "OT-beheerder kritieke processen", "Procesverantwoordelijke Waterketen" ) metrics = [ordered]@{ maxOpenFindings = 10 maxUnownedConduits = 0 maxZonesWithoutReview = 0 } zones = @( [ordered]@{ id = "Z-100" name = "RWZI Proceszone" classification = "Hoog" owner = "Waterschap OT-team" allowedProtocols = @("Modbus/TCP", "OPC UA") monitoringStatus = "Actief" lastReviewDate = "" dependencies = @("Historian-01", "Azure Data Explorer") }, [ordered]@{ id = "Z-200" name = "Supervisie- en Historianzone" classification = "Medium" owner = "Shared Service Center" allowedProtocols = @("HTTPS", "MQTT") monitoringStatus = "Actief" lastReviewDate = "" dependencies = @("TOPdesk", "Sentinel Workspace") } ) conduits = @( [ordered]@{ id = "C-10" sourceZone = "Z-100" targetZone = "Z-200" direction = "Unidirectioneel" allowedProtocols = @("OPC UA") controlType = "Industriele firewall" owner = "Netwerkteam OT" changeWindow = "Woensdag 22:00-23:00" monitoring = "Inline IDS + Defender for IoT sensor" lastReviewDate = "" }, [ordered]@{ id = "C-20" sourceZone = "Z-200" targetZone = "Enterprise" direction = "Bidirectioneel" allowedProtocols = @("HTTPS", "AMQP") controlType = "Azure Firewall Manager + VPN" owner = "SOC netwerk" changeWindow = "Vrijdag 21:00-22:00" monitoring = "Azure Monitor + Sentinel alerting" lastReviewDate = "" } ) } return $config } function Save-Config { param( [Parameter(Mandatory = $true)] [hashtable]$Config, [Parameter(Mandatory = $true)] [string]$Path ) $json = $Config | ConvertTo-Json -Depth 6 $ConfigDir = Split-Path -Parent $Path if (-not (Test-Path -Path $ConfigDir)) { New-Item -ItemType Directory -Path $ConfigDir -Force | Out-Null } if ($WhatIf) { Write-Host "[WhatIf] Configuratie zou naar $Path worden geschreven." -ForegroundColor Yellow Write-Host $json return } $json | Out-File -FilePath $Path -Encoding UTF8 -Force Write-Host "[OK] Configuratie opgeslagen: $Path" -ForegroundColor Green } function Invoke-Remediation { try { $path = Get-ConfigPath -Override $ConfigPath if (Test-Path -Path $path) { Write-Host "[INFO] Bestaande configuratie gevonden op $path" -ForegroundColor Cyan if (-not $WhatIf) { $backup = "$path.bak_{0}" -f (Get-Date -Format "yyyyMMddHHmmss") Copy-Item -Path $path -Destination $backup -Force Write-Host "[INFO] Back-up opgeslagen als $backup" -ForegroundColor Cyan } } $config = Initialize-DefaultConfig Save-Config -Config $config -Path $path Write-Host "`nVolgende stappen:" -ForegroundColor Cyan Write-Host " 1. Werk zones, eigenaars en protocollen bij volgens lokale realiteit." -ForegroundColor Gray Write-Host " 2. Leg reviewdatums vast direct na acceptatietests." -ForegroundColor Gray Write-Host " 3. Importeer configuratie in het OT-segmentatiedashboard." -ForegroundColor Gray } catch { Write-Host "[FAIL] Remediation mislukt: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } function Invoke-Monitoring { try { $path = Get-ConfigPath -Override $ConfigPath if (-not (Test-Path -Path $path)) { Write-Host "[WARN] Geen configuratiebestand gevonden op $path" -ForegroundColor Yellow Write-Host " Voer eerst -Remediation uit om een basisbestand te maken." -ForegroundColor Yellow exit 1 } $raw = Get-Content -Path $path -Raw $config = $raw | ConvertFrom-Json $findings = New-Object System.Collections.Generic.List[object] $now = Get-Date $reviewMaxDays = if ($config.reviewCycleDays) { [int]$config.reviewCycleDays } else { 365 } $zoneCount = 0 foreach ($zone in $config.zones) { $zoneCount++ if ([string]::IsNullOrWhiteSpace($zone.owner)) { $findings.Add([ordered]@{ type = "Zone" id = $zone.id severity = "High" message = "Geen eigenaar gedefinieerd" }) } if ([string]::IsNullOrWhiteSpace($zone.monitoringStatus) -or $zone.monitoringStatus -eq "Uit") { $findings.Add([ordered]@{ type = "Zone" id = $zone.id severity = "High" message = "Monitoring-status ontbreekt of is uitgeschakeld" }) } if (-not [string]::IsNullOrWhiteSpace($zone.lastReviewDate)) { $last = Get-Date $zone.lastReviewDate $age = ($now - $last).Days if ($age -gt $reviewMaxDays) { $findings.Add([ordered]@{ type = "Zone" id = $zone.id severity = "Medium" message = "Review ouder dan $reviewMaxDays dagen ($age dagen geleden)" }) } } else { $findings.Add([ordered]@{ type = "Zone" id = $zone.id severity = "Medium" message = "Geen reviewdatum geregistreerd" }) } } $conduitCount = 0 foreach ($conduit in $config.conduits) { $conduitCount++ if ([string]::IsNullOrWhiteSpace($conduit.owner)) { $findings.Add([ordered]@{ type = "Conduit" id = $conduit.id severity = "High" message = "Geen eigenaar gedefinieerd" }) } $sourceExists = $config.zones.id -contains $conduit.sourceZone $targetExists = $config.zones.id -contains $conduit.targetZone if (-not $sourceExists -or -not $targetExists) { $findings.Add([ordered]@{ type = "Conduit" id = $conduit.id severity = "High" message = "Verwijst naar niet-bestaande zone (bron of doel)" }) } if (-not [string]::IsNullOrWhiteSpace($conduit.lastReviewDate)) { $last = Get-Date $conduit.lastReviewDate $age = ($now - $last).Days if ($age -gt $reviewMaxDays) { $findings.Add([ordered]@{ type = "Conduit" id = $conduit.id severity = "Medium" message = "Conduit-review ouder dan $reviewMaxDays dagen ($age dagen geleden)" }) } } } Write-Host "Samenvatting configuratie ($path):" -ForegroundColor Cyan Write-Host " Zones : $zoneCount" -ForegroundColor White Write-Host " Conduits : $conduitCount" -ForegroundColor White Write-Host " Bevindingen: $($findings.Count)`n" -ForegroundColor White foreach ($finding in $findings) { $color = switch ($finding.severity) { "High" { "Red" } "Medium" { "Yellow" } default { "Gray" } } Write-Host ("[{0}] {1} {2} - {3}" -f $finding.severity, $finding.type, $finding.id, $finding.message) -ForegroundColor $color } $report = [ordered]@{ timestamp = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ssZ") configPath = $path zoneCount = $zoneCount conduitCount = $conduitCount findings = $findings } $reportDir = Join-Path -Path (Split-Path -Parent $path) -ChildPath "reports" if (-not (Test-Path -Path $reportDir)) { if (-not $WhatIf) { New-Item -Path $reportDir -ItemType Directory -Force | Out-Null } } $reportPath = Join-Path -Path $reportDir -ChildPath ("ot-network-segmentation-report-{0}.json" -f (Get-Date -Format "yyyyMMddHHmmss")) if ($WhatIf) { Write-Host "[WhatIf] Rapport zou worden opgeslagen in $reportPath" -ForegroundColor Yellow } else { $report | ConvertTo-Json -Depth 6 | Out-File -FilePath $reportPath -Encoding UTF8 Write-Host "[OK] Rapport opgeslagen: $reportPath" -ForegroundColor Green } if ($findings.Count -eq 0) { Write-Host "`n[OK] Geen openstaande bevindingen. Segmentatie is aantoonbaar up-to-date." -ForegroundColor Green exit 0 } elseif ($findings.Count -le $config.metrics.maxOpenFindings) { Write-Host "`n[WARN] Bevindingen gevonden maar binnen afgesproken drempel. Volg opvolgacties op." -ForegroundColor Yellow exit 1 } else { Write-Host "`n[FAIL] Te veel bevindingen. Escaleer naar OT Security Board." -ForegroundColor Red exit 2 } } catch { Write-Host "[FAIL] Monitoring mislukt: $($_.Exception.Message)" -ForegroundColor Red if ($DebugMode) { Write-Host $_.ScriptStackTrace -ForegroundColor DarkGray } exit 2 } } function Invoke-Revert { try { $path = Get-ConfigPath -Override $ConfigPath if (-not (Test-Path -Path $path)) { Write-Host "[INFO] Geen configuratiebestand om te verwijderen." -ForegroundColor Cyan return } if ($WhatIf) { Write-Host "[WhatIf] Configuratie zou worden verwijderd: $path" -ForegroundColor Yellow return } Remove-Item -Path $path -Force Write-Host "[OK] Configuratie verwijderd: $path" -ForegroundColor Green } catch { Write-Host "[FAIL] Verwijderen mislukt: $($_.Exception.Message)" -ForegroundColor Red exit 2 } } try { if ($Remediation) { Invoke-Remediation } elseif ($Monitoring) { Invoke-Monitoring } elseif ($Revert) { Invoke-Revert } else { Write-Host "Gebruik een van de volgende parameters:" -ForegroundColor Yellow Write-Host " -Remediation Maak of werk een configuratiebestand bij" -ForegroundColor Gray Write-Host " -Monitoring Voer kwaliteitscontrole uit en genereer rapport" -ForegroundColor Gray Write-Host " -Revert Verwijder het configuratiebestand" -ForegroundColor Gray Write-Host "Optioneel: -ConfigPath <pad>, -DebugMode, -WhatIf" -ForegroundColor Gray } } finally { Write-Host "`n============================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder fijnmazige segmentatie blijft OT direct blootgesteld aan IT-dreigingen en ontbreekt aantoonbaar bewijs richting toezichthouders; incidenten kunnen daardoor sneller escaleren tot maatschappelijke verstoringen.

Management Samenvatting

Leg met IEC 62443-zones en gecontroleerde conduits een stevige basis voor OT-segmentatie, beheer configuraties via code, monitor afwijkingen met Defender for IoT en gebruik het script om documentatie en controles aantoonbaar vast te leggen.