Site-to-Site VPN Configuratie: Beveiligde Hybride Netwerkconnectiviteit Via Internet

💼 Management Samenvatting

Site-to-Site VPN vormt een essentiële beveiligingsmaatregel voor Nederlandse overheidsorganisaties die een beveiligde, gecodeerde verbinding moeten creëren tussen on-premises netwerken en Azure Virtual Networks via het publieke internet. In tegenstelling tot ExpressRoute dat gebruik maakt van dedicated private verbindingen, gebruikt Site-to-Site VPN IPsec-tunnels over het internet om een veilige, versleutelde verbinding te realiseren tussen on-premises VPN-apparaten en Azure VPN Gateways. Deze aanpak is bijzonder geschikt voor organisaties die flexibele, kosteneffectieve hybride cloudconnectiviteit nodig hebben, die snel geïmplementeerd moet kunnen worden, of die als backup-verbinding moeten dienen naast ExpressRoute-circuits. Site-to-Site VPN biedt sterke encryptie, authenticatie en integriteitscontroles, wat essentieel is voor het waarborgen van beveiliging en compliance wanneer verkeer over het publieke internet wordt gerouteerd.

Aanbeveling
IMPLEMENTEER SITE-TO-SITE VPN VOOR BEVEILIGDE HYBRIDE CONNECTIVITEIT
Risico zonder
High
Risk Score
8/10
Implementatie
60u (tech: 40u)
Van toepassing op:
Azure
Azure Virtual Networks
VPN Gateway
Hybride Cloud Architecturen
On-premises Connectiviteit

Zonder een correct geconfigureerde Site-to-Site VPN-verbinding lopen Nederlandse overheidsorganisaties aanzienlijke beveiligingsrisico's wanneer ze on-premises netwerken verbinden met Azure cloud services. Onbeveiligde verbindingen over het publieke internet zijn inherent kwetsbaar voor man-in-the-middle aanvallen, packet sniffing, replay-aanvallen, en onderschepping of manipulatie van gevoelige gegevens tijdens transport. Voor overheidsorganisaties die persoonsgegevens verwerken, vertrouwelijke informatie delen, of kritieke bedrijfsprocessen uitvoeren, is dit volledig onacceptabel en kan het leiden tot ernstige datalekken, compliance-schendingen, operationele verstoringen, en aanzienlijke financiële en reputatieschade. Daarnaast vereisen compliance-frameworks zoals de BIO, NIS2 en ISO 27001 expliciet dat organisaties passende cryptografische maatregelen implementeren om gegevens te beschermen tijdens transport over publieke netwerken, wat zonder IPsec-encryptie niet kan worden waargemaakt. Site-to-Site VPN lost deze risico's fundamenteel op door sterke encryptie te implementeren met moderne cryptografische algoritmes zoals AES-256 voor data-encryptie, SHA-256 voor integriteitsverificatie, en IKEv2 of IKEv1 met Perfect Forward Secrecy voor sleuteluitwisseling. Deze encryptie zorgt ervoor dat zelfs als verkeer wordt onderschept, het niet kan worden gelezen of gemanipuleerd zonder de cryptografische sleutels. Bovendien biedt Site-to-Site VPN authenticatie om te verifiëren dat beide zijden van de verbinding daadwerkelijk zijn wie ze claimen te zijn, wat voorkomt dat aanvallers zich voordoen als on-premises netwerken of Azure-resources. Voor Nederlandse overheidsorganisaties die hybride cloud-architecturen implementeren is Site-to-Site VPN vaak een fundamentele bouwsteen die niet alleen beveiliging waarborgt, maar ook compliance met moderne beveiligingsstandaarden mogelijk maakt.

PowerShell Modules Vereist
Primary API: Azure API
Connection: Connect-AzAccount
Required Modules: Az.Network, Az.Resources, Az.Accounts

Implementatie

Dit artikel beschrijft een gestructureerde, praktische aanpak voor het ontwerpen, implementeren en beheren van Site-to-Site VPN-verbindingen binnen de Nederlandse Baseline voor Veilige Cloud. De implementatie omvat zes kritieke hoofdcomponenten. Ten eerste architectuur en ontwerp: het bepalen van de juiste VPN Gateway-sku en -type op basis van prestatievereisten en beschikbaarheidseisen, het kiezen tussen route-based en policy-based VPN-configuraties, het ontwerpen van een redundantie- en failoverstrategie met actief-actief of actief-passief VPN Gateway-configuraties, en het plannen van IP-adresruimten en routing om conflicten te voorkomen tussen on-premises en Azure-netwerken. Ten tweede VPN Gateway-implementatie: het aanmaken en configureren van Azure VPN Gateways binnen Virtual Networks, het selecteren van de juiste Gateway-sku met voldoende bandbreedte en beschikbaarheid, het configureren van Gateway-subnetten met de juiste grootte, en het valideren van Gateway-status en connectiviteit. Ten derde on-premises VPN-apparaatconfiguratie: het configureren van on-premises VPN-apparaten met juiste IPsec-parameters, het instellen van IKE- en IPsec-security associations met sterke cryptografische algoritmes, het configureren van routing en firewallregels, en het testen van connectiviteit vanuit on-premises netwerken. Ten vierde connection configuratie: het aanmaken van Local Network Gateway-resources die on-premises netwerken vertegenwoordigen, het configureren van VPN-connections tussen Azure VPN Gateways en on-premises VPN-apparaten met juiste gedeelde sleutels, het instellen van routing met Border Gateway Protocol (BGP) of statische routes, en het valideren van end-to-end connectiviteit. Ten vijfde beveiliging en encryptie: het implementeren van sterke IPsec-encryptie met AES-256 of hoger, het configureren van Perfect Forward Secrecy met IKEv2, het implementeren van monitoring en logging voor VPN-verkeer, en het documenteren van cryptografische configuraties voor compliance-audits. Ten zesde monitoring en onderhoud: het configureren van Azure Monitor en Network Watcher voor proactieve monitoring van VPN Gateway-status en prestaties, het implementeren van alerting voor connection-uitval en prestatieproblemen, het uitvoeren van regelmatige connectivity-tests, en het beheren van lifecycle en updates. Het bijbehorende PowerShell-script automatiseert het monitoren van VPN Gateway-status, het valideren van connection-configuraties, het controleren van routing en beschikbaarheid, en het genereren van compliance-rapportages voor auditdoeleinden.

Architectuur en ontwerp van Site-to-Site VPN-verbindingen

Het ontwerpen van een effectieve Site-to-Site VPN-architectuur begint met het begrijpen van de verschillende VPN Gateway-sku's en -types die beschikbaar zijn binnen Azure, en het selecteren van de juiste configuratie op basis van prestatievereisten, beschikbaarheidseisen en budget. Azure VPN Gateways bieden verschillende sku's variërend van Basic tot Ultra Performance, waarbij elke sku verschillende bandbreedtes, connection limits, en feature-sets biedt. Basic-sku's zijn geschikt voor test- en development-omgevingen met beperkte prestatievereisten, maar bieden geen redundantie of ondersteuning voor actief-actief configuraties. Standard-sku's bieden betere prestaties en ondersteuning voor actief-passief redundantie, terwijl High Performance-sku's geschikt zijn voor productieomgevingen met hoge bandbreedtevereisten. Ultra Performance-sku's bieden de hoogste prestaties en zijn geschikt voor enterprise-workloads met extreme bandbreedtevereisten. Voor Nederlandse overheidsorganisaties met kritieke workloads is het sterk aanbevolen om minimaal een Standard-sku te gebruiken met actief-passief redundantie, en te overwegen om High Performance of Ultra Performance-sku's te gebruiken wanneer hoge beschikbaarheid en prestaties essentieel zijn. Daarnaast moeten organisaties kiezen tussen route-based VPN's die flexibeler zijn en ondersteuning bieden voor BGP en meerdere tunnel-configuraties, of policy-based VPN's die eenvoudiger zijn maar beperkter in functionaliteit. Route-based VPN's worden sterk aanbevolen voor de meeste scenario's omdat zij meer flexibiliteit bieden, betere schaalbaarheid hebben, en ondersteuning bieden voor geavanceerde routing-configuraties.

Redundantie en failover vormen een cruciaal aspect van Site-to-Site VPN-architectuur, waarbij organisaties strategieën moeten implementeren om hoge beschikbaarheid te waarborgen en service-onderbrekingen te minimaliseren. Nederlandse overheidsorganisaties moeten minimaal actief-passief redundantie implementeren, waarbij een primaire VPN Gateway actief is en een secundaire VPN Gateway in stand-by staat en automatisch overneemt wanneer de primaire gateway uitvalt. Voor kritieke workloads is het sterk aanbevolen om actief-actief redundantie te implementeren, waarbij beide VPN Gateways tegelijkertijd actief zijn en verkeer kunnen verwerken, wat niet alleen beschikbaarheid verbetert maar ook prestaties kan verhogen door load balancing tussen beide gateways. Actief-actief configuraties vereisen specifieke VPN Gateway-sku's en ondersteuning van on-premises VPN-apparaten, maar bieden significante voordelen voor beschikbaarheid en prestaties. Daarnaast moeten organisaties overwegen om meerdere Site-to-Site VPN-connections te configureren naar verschillende on-premises locaties, wat niet alleen redundantie biedt maar ook geografische spreiding mogelijk maakt voor disaster recovery en business continuity. Voor organisaties die ook ExpressRoute gebruiken, moeten Site-to-Site VPN-verbindingen worden geconfigureerd als backup-optie, waarbij automatische failover plaatsvindt naar VPN wanneer ExpressRoute-circuits uitvallen. Deze multi-layer redundantie benadering zorgt ervoor dat organisaties hoge beschikbaarheid kunnen waarborgen zelfs bij meerdere failure-scenario's.

IP-adresruimte planning en routing vormen een essentieel onderdeel van Site-to-Site VPN-architectuur, waarbij organisaties zorgvuldig moeten plannen om conflicten te voorkomen tussen on-premises netwerken en Azure Virtual Networks. Nederlandse overheidsorganisaties moeten een uitgebreide inventarisatie uitvoeren van alle IP-adresruimten die worden gebruikt in on-premises netwerken, Azure Virtual Networks, en andere cloud-omgevingen, en een duidelijk adresruimte-beleid definiëren dat toekomstige conflicten voorkomt. Het is cruciaal om te realiseren dat overlappende IP-adresruimten volledig onverenigbaar zijn met Site-to-Site VPN-verbindingen, omdat routers niet kunnen bepalen naar welke bestemming verkeer moet worden gerouteerd wanneer dezelfde IP-adresruimte bestaat op beide zijden van de verbinding. Organisaties moeten ervoor zorgen dat Azure Virtual Networks unieke IP-adresruimten gebruiken die niet overlappen met on-premises netwerken, en dat routing correct is geconfigureerd zodat verkeer naar de juiste bestemming wordt gerouteerd. Daarnaast moeten organisaties overwegen om Border Gateway Protocol (BGP) te gebruiken voor dynamische routing, wat flexibeler is dan statische routes en automatische failover mogelijk maakt wanneer routes veranderen. BGP vereist configuratie op zowel Azure VPN Gateways als on-premises routers, maar biedt significante voordelen voor netwerkbeheer en beschikbaarheid. Het is belangrijk om te realiseren dat routing-configuraties directe impact hebben op beveiliging: organisaties moeten ervoor zorgen dat alleen geautoriseerde routes worden geadverteerd, dat route filtering correct werkt, en dat monitoring is geïmplementeerd om route wijzigingen te detecteren.

Gebruik PowerShell-script site-to-site-vpn.ps1 (functie Invoke-Monitoring) – Controleert VPN Gateway-status, connection-configuraties en connectiviteit.

VPN Gateway-implementatie en configuratie

De implementatie van Azure VPN Gateways begint met het aanmaken van een Virtual Network Gateway-resource binnen het Azure Virtual Network dat moet worden verbonden met on-premises netwerken. Deze implementatie kan worden uitgevoerd via Azure Portal voor ad-hoc implementaties, Azure PowerShell of Azure CLI voor geautomatiseerde en herhaalbare implementaties, of infrastructure-as-code tools zoals Azure Resource Manager templates, Bicep of Terraform voor volledig geautomatiseerde en versioned implementaties. Tijdens het aanmaakproces moeten organisaties verschillende kritieke parameters specificeren: de VPN Gateway-sku die de bandbreedte, connection limits en features bepaalt, het VPN-type dat kan zijn route-based of policy-based, het Gateway-subnet dat moet worden aangemaakt binnen het Virtual Network met een minimale grootte van /27 (hoewel /28 of /29 ook mogelijk zijn voor Basic-sku's), en de publieke IP-adresconfiguratie die kan worden gegenereerd door Azure of gebruik maken van bestaande publieke IP-adressen. Het is belangrijk om te realiseren dat het Gateway-subnet een specifieke naam moet hebben ('GatewaySubnet') en voldoende groot moet zijn om toekomstige upgrades en features te accommoderen: een /27 subnet wordt sterk aanbevolen voor de meeste scenario's, terwijl grotere subnetten zoals /26 nodig kunnen zijn voor Ultra Performance-sku's of wanneer meerdere gateway-types worden geconfigureerd binnen hetzelfde Virtual Network.

Na het aanmaken van de VPN Gateway-resource begint het provisioning-proces, waarbij Azure de gateway-deployment uitvoert binnen het Gateway-subnet. Dit proces kan tussen de 20 en 45 minuten duren afhankelijk van de gekozen sku, en gedurende deze tijd is de gateway niet beschikbaar voor configuratie of gebruik. Organisaties moeten dit provisioning-proces monitoren via Azure Portal of PowerShell om te verifiëren dat de gateway succesvol wordt geïmplementeerd en dat alle benodigde resources correct worden aangemaakt. Na voltooiing van het provisioning-proces moeten organisaties de gateway-status verifiëren om te bevestigen dat de gateway actief is en klaar voor configuratie van connections. De gateway-status kan worden gecontroleerd via Azure Portal, PowerShell, of het bijbehorende monitoring-script, waarbij organisaties moeten verifiëren dat de ProvisioningState 'Succeeded' is, dat de GatewayState 'Connected' of 'Provisioned' is, en dat er geen foutmeldingen of waarschuwingen zijn. Daarnaast moeten organisaties het publieke IP-adres van de gateway noteren, omdat dit adres nodig is voor de configuratie van on-premises VPN-apparaten. Het publieke IP-adres kan worden gevonden in de gateway-resource-eigenschappen en moet worden gebruikt als de Remote Gateway IP in on-premises VPN-apparaatconfiguraties.

Voor organisaties die hoge beschikbaarheid vereisen, moeten actief-actief VPN Gateway-configuraties worden geïmplementeerd, waarbij twee VPN Gateway-instanties worden geconfigureerd met elk een uniek publiek IP-adres en actief zijn tegelijkertijd. Actief-actief configuraties vereisen specifieke VPN Gateway-sku's die deze functionaliteit ondersteunen (Standard, High Performance, Ultra Performance, of VpnGw-sku's), en vereisen configuratie van twee publieke IP-adressen en twee BGP-peerings wanneer BGP wordt gebruikt. Daarnaast moeten on-premises VPN-apparaten worden geconfigureerd om verbindingen te maken naar beide gateway-instanties, waarbij load balancing en failover worden geconfigureerd op on-premises apparaten. Actief-actief configuraties bieden significante voordelen voor beschikbaarheid omdat uitval van één gateway-instantie niet leidt tot volledige service-onderbreking, en bieden ook potentiële prestatievoordelen door load balancing van verkeer over beide gateways. Het is belangrijk om te realiseren dat actief-actief configuraties complexer zijn om te implementeren en te beheren dan actief-passief configuraties, en dat on-premises VPN-apparaten deze configuratie moeten ondersteunen. Organisaties moeten zorgvuldige tests uitvoeren om te verifiëren dat failover correct werkt en dat prestaties voldoen aan verwachtingen.

On-premises VPN-apparaatconfiguratie en IPsec-parameters

De configuratie van on-premises VPN-apparaten vormt een cruciaal onderdeel van Site-to-Site VPN-implementaties, waarbij organisaties ervoor moeten zorgen dat on-premises VPN-apparaten correct zijn geconfigureerd met juiste IPsec-parameters die compatibel zijn met Azure VPN Gateways. Nederlandse overheidsorganisaties moeten beginnen met het identificeren van de on-premises VPN-apparaten die worden gebruikt, waarbij het belangrijk is om te verifiëren dat deze apparaten IPsec VPN-functionaliteit ondersteunen en compatibel zijn met Azure VPN Gateways. Microsoft biedt een lijst van geteste VPN-apparaten en configuratievoorbeelden op hun website, maar de meeste moderne VPN-apparaten die IPsec ondersteunen kunnen worden gebruikt. De specifieke configuratiestappen variëren per VPN-apparaatfabrikant en -model, maar alle configuraties moeten dezelfde fundamentele IPsec-parameters bevatten: het Remote Gateway IP-adres dat het publieke IP-adres is van de Azure VPN Gateway, het Local Network-subnet dat de IP-adresruimte vertegenwoordigt van het on-premises netwerk, het Remote Network-subnet dat de IP-adresruimte vertegenwoordigt van het Azure Virtual Network, en de gedeelde sleutel (pre-shared key) die moet overeenkomen met de sleutel die wordt gebruikt in de Azure VPN Connection-configuratie.

IPsec-security associations moeten worden geconfigureerd met sterke cryptografische algoritmes om beveiliging en compliance te waarborgen. Nederlandse overheidsorganisaties moeten ervoor zorgen dat IKE- en IPsec-encryptie worden geconfigureerd met moderne, sterke algoritmes: AES-256 wordt sterk aanbevolen voor data-encryptie, SHA-256 of hoger wordt aanbevolen voor integriteitsverificatie, en Perfect Forward Secrecy (PFS) moet worden ingeschakeld wanneer mogelijk. Voor IKE-negotiations wordt IKEv2 sterk aanbevolen omdat het betere beveiliging biedt dan IKEv1, ondersteuning biedt voor Perfect Forward Secrecy, en betere prestaties en reconnectie-gedrag heeft. Daarnaast moeten organisaties ervoor zorgen dat IPsec-security associations correct zijn geconfigureerd met juiste lifetimes: IKE-lifetimes moeten worden ingesteld op 28800 seconden (8 uur) en IPsec-lifetimes moeten worden ingesteld op 3600 seconden (1 uur), wat overeenkomt met de standaardinstellingen van Azure VPN Gateways. Het is belangrijk om te realiseren dat verschillende cryptografische configuraties directe impact hebben op beveiliging en compliance: zwakkere algoritmes zoals DES, 3DES of MD5 moeten worden vermeden omdat zij als onveilig worden beschouwd, en organisaties moeten regelmatig reviews uitvoeren om te waarborgen dat cryptografische configuraties up-to-date blijven en voldoen aan huidige beveiligingsstandaarden.

Routing-configuratie op on-premises VPN-apparaten is essentieel om ervoor te zorgen dat verkeer correct wordt gerouteerd tussen on-premises netwerken en Azure Virtual Networks. Nederlandse overheidsorganisaties moeten statische routes of BGP configureren op on-premises routers om ervoor te zorgen dat verkeer bestemd voor Azure Virtual Network-subnetten via de VPN-tunnel wordt gerouteerd, en dat verkeer van Azure Virtual Networks naar on-premises netwerken correct wordt gerouteerd. Voor statische routes moeten organisaties routes toevoegen voor elk Azure Virtual Network-subnet, waarbij de next hop wordt ingesteld op de VPN-tunnel-interface of het IP-adres van de Azure VPN Gateway. Voor BGP-configuraties moeten organisaties BGP-peering configureren tussen on-premises routers en Azure VPN Gateways, waarbij juiste Autonomous System Numbers (ASN) worden gebruikt en route filtering wordt geïmplementeerd om te bepalen welke routes worden geadverteerd en geaccepteerd. BGP biedt voordelen ten opzichte van statische routes omdat het automatische failover mogelijk maakt wanneer routes veranderen, en omdat het flexibeler is wanneer Virtual Network-subnetten worden toegevoegd of verwijderd. Daarnaast moeten organisaties firewallregels configureren op on-premises firewalls om IPsec-verkeer (UDP-poort 500 voor IKE, UDP-poort 4500 voor NAT traversal, en IP-protocol 50 voor ESP) toe te staan tussen on-premises VPN-apparaten en Azure VPN Gateways.

Connection configuratie en validatie

De configuratie van VPN-connections tussen Azure VPN Gateways en on-premises VPN-apparaten begint met het aanmaken van een Local Network Gateway-resource die het on-premises netwerk vertegenwoordigt. De Local Network Gateway-resource bevat kritieke informatie over het on-premises netwerk: het publieke IP-adres van het on-premises VPN-apparaat, de IP-adresruimten die worden gebruikt in het on-premises netwerk, en optioneel BGP-configuratie-informatie wanneer BGP wordt gebruikt voor dynamische routing. Nederlandse overheidsorganisaties moeten ervoor zorgen dat alle on-premises IP-adresruimten correct zijn gespecificeerd in de Local Network Gateway-configuratie, omdat alleen verkeer bestemd voor deze adresruimten via de VPN-connection wordt gerouteerd. Het is belangrijk om te realiseren dat Local Network Gateway-configuraties kunnen worden bijgewerkt na het aanmaken, maar dat wijzigingen kunnen leiden tot korte onderbrekingen in VPN-connectiviteit terwijl de VPN Gateway de nieuwe configuratie verwerkt.

Na het aanmaken van de Local Network Gateway-resource moet een VPN Connection-resource worden aangemaakt die de daadwerkelijke VPN-tunnel definieert tussen de Azure VPN Gateway en de on-premises VPN Gateway. Tijdens het aanmaakproces moeten organisaties verschillende parameters specificeren: de Azure VPN Gateway die wordt gebruikt voor de verbinding, de Local Network Gateway die het on-premises netwerk vertegenwoordigt, de connection-type die Site-to-Site (IPsec) moet zijn, de gedeelde sleutel (pre-shared key) die moet overeenkomen met de sleutel die is geconfigureerd op het on-premises VPN-apparaat, en optioneel BGP-configuratie wanneer BGP wordt gebruikt. De gedeelde sleutel is bijzonder kritiek omdat deze moet exact overeenkomen tussen Azure en het on-premises VPN-apparaat: zelfs kleine verschillen zoals hoofdletters versus kleine letters of extra spaties zullen de VPN-tunnel verhinderen om te worden geëstablishd. Organisaties moeten ervoor zorgen dat gedeelde sleutels sterk zijn (minimaal 32 karakters met een mix van letters, cijfers en speciale tekens) en veilig worden beheerd, waarbij het gebruik van password managers of Azure Key Vault wordt aanbevolen voor het beheren van gedeelde sleutels. Daarnaast moeten organisaties overwegen om gedeelde sleutels regelmatig te roteren als onderdeel van security best practices, hoewel dit zorgvuldige coördinatie vereist tussen Azure-beheerders en on-premises netwerkbeheerders om service-onderbrekingen te voorkomen.

Validatie van VPN-connectiviteit vormt een essentieel onderdeel van de implementatie, waarbij organisaties uitgebreide tests moeten uitvoeren om te verifiëren dat de VPN-tunnel correct functioneert en dat alle benodigde routes beschikbaar zijn. Nederlandse overheidsorganisaties moeten beginnen met het controleren van de connection-status via Azure Portal of PowerShell, waarbij ze moeten verifiëren dat de connection-status 'Connected' is en dat er geen fouten of waarschuwingen zijn. Daarnaast moeten organisaties connectivity-tests uitvoeren vanuit zowel on-premises netwerken naar Azure Virtual Networks als vanuit Azure Virtual Networks naar on-premises netwerken, waarbij ping-tests, traceroute-tests en applicatie-specifieke tests kunnen worden gebruikt om end-to-end connectiviteit te valideren. Het is belangrijk om te realiseren dat IPsec-tunnels bi-directioneel zijn, wat betekent dat wanneer de tunnel is geëstablishd, verkeer in beide richtingen moet kunnen passeren, en organisaties moeten beide richtingen testen om te verifiëren dat routing correct is geconfigureerd. Daarnaast moeten organisaties overwegen om monitoring en logging in te schakelen om VPN-verkeer te analyseren en te auditen, waarbij Azure Monitor en Network Watcher kunnen worden gebruikt om VPN Gateway-metrics te verzamelen, connection-statistieken te analyseren, en problemen proactief te detecteren.

Gebruik PowerShell-script site-to-site-vpn.ps1 (functie Invoke-Implementation) – Valideert VPN Gateway-configuraties en genereert implementatieaanbevelingen.

Beveiliging, encryptie en compliance

Beveiliging van Site-to-Site VPN-verbindingen begint met het implementeren van sterke IPsec-encryptie met moderne cryptografische algoritmes die voldoen aan huidige beveiligingsstandaarden en compliance-vereisten. Nederlandse overheidsorganisaties moeten ervoor zorgen dat VPN-verbindingen worden geconfigureerd met AES-256 of hoger voor data-encryptie, SHA-256 of hoger voor integriteitsverificatie, en Perfect Forward Secrecy (PFS) wanneer mogelijk. Deze cryptografische configuraties zijn essentieel voor het waarborgen dat gevoelige gegevens die via de VPN-tunnel worden getransporteerd niet kunnen worden onderschept, gelezen of gemanipuleerd door kwaadwillenden, zelfs wanneer zij toegang hebben tot verkeer dat over het publieke internet wordt gerouteerd. Daarnaast moeten organisaties ervoor zorgen dat IKEv2 wordt gebruikt in plaats van IKEv1 wanneer mogelijk, omdat IKEv2 betere beveiliging biedt, ondersteuning biedt voor Perfect Forward Secrecy, en betere prestaties en reconnectie-gedrag heeft. Het is belangrijk om te realiseren dat cryptografische configuraties directe impact hebben op beveiliging en compliance: organisaties moeten regelmatig reviews uitvoeren om te waarborgen dat configuraties up-to-date blijven en voldoen aan huidige beveiligingsstandaarden, en moeten zwakkere algoritmes zoals DES, 3DES of MD5 vermijden omdat deze als onveilig worden beschouwd.

Monitoring en logging van VPN-verkeer zijn cruciaal voor compliance-audits en voor het waarborgen van beveiliging van Site-to-Site VPN-verbindingen. Nederlandse overheidsorganisaties moeten Azure Monitor en Network Watcher configureren voor proactieve monitoring van VPN Gateway-status, connection-status, bandbreedtegebruik, latency en packet loss, waarbij alerting wordt geconfigureerd voor kritieke gebeurtenissen zoals connection-uitval, significante prestatievermindering, of ongebruikelijke verkeerspatronen. Daarnaast moeten organisaties overwegen om VPN Gateway-diagnostic logging in te schakelen, waarbij logs worden opgeslagen in een centrale Log Analytics-workspace met retentiebeleid volgens compliance-vereisten (typisch 7 jaar voor Nederlandse overheidsorganisaties volgens BIO). Deze logs bevatten waardevolle informatie over VPN-connections, routing-wijzigingen, en beveiligingsgebeurtenissen, en kunnen worden gebruikt voor compliance-audits, security incident response, en netwerkanalyse. Het is belangrijk om te realiseren dat monitoring en logging directe impact hebben op compliance en beveiliging: organisaties moeten ervoor zorgen dat monitoring correct is geconfigureerd, dat logs worden bewaard voor de vereiste periode, en dat regelmatige reviews worden uitgevoerd om afwijkingen of incidenten te detecteren. Daarnaast moeten organisaties overwegen om geavanceerde security monitoring tools te implementeren die kunnen detecteren wanneer VPN-verbindingen worden gecompromitteerd of wanneer ongebruikelijk verkeer via VPN-tunnels wordt gerouteerd.

Documentatie en auditbewijs vormen een essentieel onderdeel van compliance voor Site-to-Site VPN-verbindingen, waarbij organisaties uitgebreide documentatie moeten bijhouden van alle VPN-configuraties, cryptografische instellingen, routing-configuraties en wijzigingen. Deze documentatie moet worden gebruikt voor compliance-audits, waarbij auditors kunnen verifiëren dat VPN-verbindingen correct zijn geconfigureerd, dat sterke encryptie is geïmplementeerd, en dat compliance-vereisten worden ingevuld. Het bijbehorende PowerShell-script kan worden gebruikt om technische compliance-rapportages te genereren die kunnen worden gebruikt als onderdeel van auditdocumentatie. Daarnaast moeten organisaties processen implementeren voor het reviewen en goedkeuren van VPN-configuratiewijzigingen, waarbij wijzigingen worden gedocumenteerd, gereviewd door security-teams, en goedgekeurd door verantwoordelijke personen voordat zij worden geïmplementeerd. Het is belangrijk om te realiseren dat documentatie en auditbewijs directe impact hebben op compliance: organisaties moeten ervoor zorgen dat documentatie up-to-date blijft, dat auditbewijs beschikbaar is wanneer nodig, en dat regelmatige reviews worden uitgevoerd om te waarborgen dat compliance-vereisten worden ingevuld. Bovendien moeten organisaties overwegen om gedeelde sleutels veilig te beheren via Azure Key Vault of andere secure key management-systemen, waarbij access controls worden geïmplementeerd om te waarborgen dat alleen geautoriseerde personen toegang hebben tot kritieke VPN-configuratie-informatie.

Gebruik PowerShell-script site-to-site-vpn.ps1 (functie Invoke-Remediation) – Genereert aanbevelingen voor het verbeteren van VPN-beveiliging en compliance.

Monitoring, onderhoud en lifecycle management

Proactieve monitoring van Site-to-Site VPN-verbindingen is essentieel voor het waarborgen van beschikbaarheid, prestaties en beveiliging. Nederlandse overheidsorganisaties moeten Azure Monitor en Network Watcher configureren voor continue monitoring van VPN Gateway-status, connection-status, bandbreedtegebruik, latency, packet loss en routing-informatie, waarbij metrische gegevens worden verzameld die inzicht bieden in de gezondheid en prestaties van VPN-verbindingen. Alerting moet worden geconfigureerd voor kritieke gebeurtenissen zoals connection-uitval, gateway-uitval, significante prestatievermindering, of ongebruikelijke verkeerspatronen die kunnen wijzen op beveiligingsincidenten. Daarnaast moeten organisaties dashboards implementeren die real-time inzicht bieden in VPN-status en prestaties, zodat beheerders snel kunnen reageren op problemen en trends kunnen identificeren voor capaciteitsplanning. Het is belangrijk om te realiseren dat monitoring een continu proces is en regelmatige review en optimalisatie vereist: organisaties moeten ervoor zorgen dat monitoring correct is geconfigureerd, dat alerting correct werkt, en dat regelmatige reviews worden uitgevoerd om monitoringconfiguraties te optimaliseren en nieuwe bedreigingen te adresseren. Daarnaast moeten organisaties overwegen om geavanceerde monitoring tools te implementeren die kunnen detecteren wanneer VPN-verbindingen worden gecompromitteerd, wanneer ongebruikelijk verkeer via VPN-tunnels wordt gerouteerd, of wanneer routing-configuraties onverwacht veranderen.

Regelmatige connectivity-tests en health checks zijn cruciaal voor het waarborgen van beschikbaarheid en betrouwbaarheid van Site-to-Site VPN-verbindingen. Nederlandse overheidsorganisaties moeten dagelijks of wekelijks connectivity-tests uitvoeren waarbij connectiviteit wordt getest tussen on-premises netwerken en Azure Virtual Networks, waarbij ping-tests, traceroute-tests en applicatie-specifieke tests kunnen worden gebruikt om end-to-end connectiviteit te valideren. Daarnaast moeten organisaties maandelijks of per kwartaal uitgebreide health checks uitvoeren waarbij VPN Gateway-status wordt gecontroleerd, routing wordt gevalideerd, prestaties worden gemeten, en failover wordt getest wanneer actief-actief of actief-passief configuraties zijn geïmplementeerd. Deze tests moeten worden geautomatiseerd waar mogelijk om consistentie te waarborgen en menselijke fouten te minimaliseren, en moeten worden gedocumenteerd en gerapporteerd aan management en compliance-teams. Het is belangrijk om te realiseren dat connectivity-tests en health checks directe impact hebben op beschikbaarheid: organisaties moeten ervoor zorgen dat tests regelmatig worden uitgevoerd, dat resultaten worden gedocumenteerd, en dat problemen worden geadresseerd voordat zij leiden tot daadwerkelijke service-onderbrekingen. Daarnaast moeten organisaties overwegen om geautomatiseerde monitoring tools te implementeren die continu connectivity testen en automatisch waarschuwingen genereren wanneer problemen worden gedetecteerd.

Lifecycle management en updates vormen een essentieel onderdeel van Site-to-Site VPN-beheer, waarbij organisaties processen moeten implementeren voor het beheren van VPN-configuratiewijzigingen, het updaten van cryptografische configuraties wanneer nieuwe beveiligingsstandaarden beschikbaar komen, en het plannen van capaciteitsuitbreidingen wanneer workloads groeien. Nederlandse overheidsorganisaties moeten een change management proces implementeren waarbij alle VPN-configuratiewijzigingen worden gedocumenteerd, gereviewd door security- en netwerkteams, en goedgekeurd door verantwoordelijke personen voordat zij worden geïmplementeerd. Daarnaast moeten organisaties regelmatig reviews uitvoeren van VPN-configuraties om te waarborgen dat zij up-to-date blijven en voldoen aan veranderende bedrijfsbehoeften en beveiligingsvereisten. Wanneer nieuwe Azure-regio's worden gebruikt, wanneer Virtual Network-subnetten worden toegevoegd of verwijderd, of wanneer on-premises netwerkarchitecturen veranderen, moeten VPN-configuraties worden bijgewerkt om nieuwe routes te adverteren en oude routes te verwijderen. Het is belangrijk om te realiseren dat lifecycle management directe impact heeft op beveiliging en compliance: organisaties moeten ervoor zorgen dat wijzigingen correct worden geïmplementeerd, dat documentatie up-to-date blijft, en dat regelmatige reviews worden uitgevoerd om te waarborgen dat VPN-configuraties voldoen aan huidige vereisten. Bovendien moeten organisaties overwegen om gedeelde sleutels regelmatig te roteren als onderdeel van security best practices, hoewel dit zorgvuldige coördinatie vereist tussen Azure-beheerders en on-premises netwerkbeheerders om service-onderbrekingen te voorkomen.

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
<# ================================================================================ AZURE POWERSHELL SCRIPT - Nederlandse Baseline voor Veilige Cloud ================================================================================ .SYNOPSIS Site-to-Site VPN Configuratie: Beveiligde Hybride Netwerkconnectiviteit via Internet .DESCRIPTION Ondersteunt het beheren van Site-to-Site VPN-verbindingen door: - Monitoring van VPN Gateway-status en connectiviteit - Validatie van connection-configuraties en routing - Genereren van compliance-rapportages - Aanbevelingen voor VPN-verbeteringen .NOTES Filename: site-to-site-vpn.ps1 Author: Nederlandse Baseline voor Veilige Cloud Version: 1.0 Related JSON: content/azure/network/site-to-site-vpn.json CIS Control: 6.7, 9.4 #> #Requires -Version 5.1 #Requires -Modules Az.Network, Az.Resources, Az.Accounts [CmdletBinding()] param( [Parameter()][switch]$Monitoring, [Parameter()][switch]$Remediation, [Parameter()][switch]$Validation, [Parameter()][switch]$DebugMode ) $ErrorActionPreference = 'Stop' $PolicyName = "Site-to-Site VPN Configuratie" function Connect-RequiredServices { [CmdletBinding()] param( [switch]$DebugMode ) if ($DebugMode) { Write-Verbose "DebugMode is ingeschakeld: er wordt geen verbinding met Azure gemaakt." return } if (-not (Get-AzContext -ErrorAction SilentlyContinue)) { Write-Host "Verbinden met Azure..." -ForegroundColor Yellow Connect-AzAccount -ErrorAction Stop | Out-Null } } function Test-VpnGatewayStatus { <# .SYNOPSIS Controleert de status van VPN Gateways en Site-to-Site VPN-verbindingen #> [CmdletBinding()] param( [switch]$DebugMode ) if ($DebugMode) { return [PSCustomObject]@{ Mode = "Debug" VpnGatewaysFound = 2 VpnGatewaysProvisioned = 2 VpnGatewaysActive = 2 ConnectionsFound = 4 ConnectionsConnected = 4 RedundancyConfigured = $true IsCompliant = $false } } try { $vpnGateways = Get-AzVirtualNetworkGateway -ErrorAction SilentlyContinue | Where-Object { $_.GatewayType -eq 'Vpn' } $vpnGatewaysProvisioned = 0 $vpnGatewaysActive = 0 $connectionsFound = 0 $connectionsConnected = 0 $redundancyConfigured = $false foreach ($gateway in $vpnGateways) { if ($gateway.ProvisioningState -eq 'Succeeded') { $vpnGatewaysProvisioned++ } if ($gateway.GatewayDefaultSite -ne $null -or $gateway.EnableBgp -eq $true) { $vpnGatewaysActive++ } } # Check connections $connections = Get-AzVirtualNetworkGatewayConnection -ErrorAction SilentlyContinue | Where-Object { $_.ConnectionType -eq 'IPsec' } $connectionsFound = $connections.Count foreach ($connection in $connections) { if ($connection.ConnectionStatus -eq 'Connected') { $connectionsConnected++ } } # Check for redundancy (multiple gateways or active-active configuration) if ($vpnGateways.Count -gt 1) { $redundancyConfigured = $true } else { foreach ($gateway in $vpnGateways) { $bgpSettings = $gateway.BgpSettings if ($bgpSettings -and $bgpSettings.BgpPeeringAddresses.Count -gt 1) { $redundancyConfigured = $true break } } } $isCompliant = ($vpnGateways.Count -gt 0 -and $vpnGatewaysProvisioned -gt 0 -and $connectionsFound -gt 0 -and $connectionsConnected -gt 0) return [PSCustomObject]@{ Mode = "Live" VpnGatewaysFound = $vpnGateways.Count VpnGatewaysProvisioned = $vpnGatewaysProvisioned VpnGatewaysActive = $vpnGatewaysActive ConnectionsFound = $connectionsFound ConnectionsConnected = $connectionsConnected RedundancyConfigured = $redundancyConfigured IsCompliant = $isCompliant } } catch { Write-Error "Fout bij het controleren van VPN Gateway-status: $_" return [PSCustomObject]@{ Mode = "Error" VpnGatewaysFound = 0 VpnGatewaysProvisioned = 0 VpnGatewaysActive = 0 ConnectionsFound = 0 ConnectionsConnected = 0 RedundancyConfigured = $false IsCompliant = $false } } } function Invoke-Monitoring { <# .SYNOPSIS Monitort VPN Gateway-status en Site-to-Site VPN-connectiviteit .DESCRIPTION Controleert of VPN Gateways correct zijn geconfigureerd en operationeel zijn. #> [CmdletBinding()] param( [switch]$DebugMode ) Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Monitoring" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { Connect-RequiredServices -DebugMode:$DebugMode if ($DebugMode) { Write-Host "[DEBUG MODE] Site-to-Site VPN monitoring validatie" -ForegroundColor Yellow Write-Host "`nAanbevelingen voor VPN monitoring:" -ForegroundColor Yellow Write-Host " 1. Controleer of VPN Gateways zijn geprovisioneerd en actief" -ForegroundColor White Write-Host " 2. Verifieer VPN-connection status en connectiviteit" -ForegroundColor White Write-Host " 3. Controleer of redundantie is geconfigureerd (actief-actief of meerdere gateways)" -ForegroundColor White Write-Host " 4. Valideer IPsec-configuraties en cryptografische instellingen" -ForegroundColor White Write-Host " 5. Controleer regelmatig VPN-status en prestaties" -ForegroundColor White Write-Host "`nVoor gedetailleerde instructies, zie het bijbehorende artikel." -ForegroundColor Yellow return } $status = Test-VpnGatewayStatus -DebugMode:$DebugMode $vpnGateways = Get-AzVirtualNetworkGateway -ErrorAction SilentlyContinue | Where-Object { $_.GatewayType -eq 'Vpn' } $connections = Get-AzVirtualNetworkGatewayConnection -ErrorAction SilentlyContinue | Where-Object { $_.ConnectionType -eq 'IPsec' } Write-Host "VPN Gateway Status Overzicht:" -ForegroundColor Yellow Write-Host " Modus: $($status.Mode)" -ForegroundColor White Write-Host " VPN Gateways gevonden: $($status.VpnGatewaysFound)" -ForegroundColor White Write-Host " VPN Gateways geprovisioneerd: $($status.VpnGatewaysProvisioned)" -ForegroundColor White Write-Host " VPN Gateways actief: $($status.VpnGatewaysActive)" -ForegroundColor White Write-Host " VPN Connections gevonden: $($status.ConnectionsFound)" -ForegroundColor White Write-Host " VPN Connections verbonden: $($status.ConnectionsConnected)" -ForegroundColor $(if ($status.ConnectionsConnected -gt 0) { 'Green' } else { 'Red' }) Write-Host " Redundantie geconfigureerd: $($status.RedundancyConfigured)" -ForegroundColor $(if ($status.RedundancyConfigured) { 'Green' } else { 'Yellow' }) if ($vpnGateways.Count -gt 0) { Write-Host "`nVPN Gateway Details:" -ForegroundColor Yellow foreach ($gateway in $vpnGateways) { Write-Host "`n Gateway: $($gateway.Name)" -ForegroundColor Cyan Write-Host " Resource Group: $($gateway.ResourceGroupName)" -ForegroundColor White Write-Host " Location: $($gateway.Location)" -ForegroundColor White Write-Host " SKU: $($gateway.Sku.Name)" -ForegroundColor White Write-Host " Gateway Type: $($gateway.GatewayType)" -ForegroundColor White Write-Host " VPN Type: $($gateway.VpnType)" -ForegroundColor White Write-Host " Provisioning Status: $($gateway.ProvisioningState)" -ForegroundColor $(if ($gateway.ProvisioningState -eq 'Succeeded') { 'Green' } else { 'Yellow' }) if ($gateway.IpConfigurations) { $publicIP = $gateway.IpConfigurations[0].PublicIpAddress if ($publicIP) { $pip = Get-AzPublicIpAddress -ResourceGroupName $gateway.ResourceGroupName -Name ($publicIP.Id -split '/')[-1] -ErrorAction SilentlyContinue if ($pip) { Write-Host " Publiek IP-adres: $($pip.IpAddress)" -ForegroundColor White } } } # Check BGP configuration if ($gateway.BgpSettings) { Write-Host " BGP ingeschakeld: $($gateway.EnableBgp)" -ForegroundColor $(if ($gateway.EnableBgp) { 'Green' } else { 'Yellow' }) if ($gateway.BgpSettings.BgpPeeringAddresses) { Write-Host " BGP Peer Addresses: $($gateway.BgpSettings.BgpPeeringAddresses.Count)" -ForegroundColor White } } # Check gateway connections $gatewayConnections = $connections | Where-Object { $_.VirtualNetworkGateway1.Id -eq $gateway.Id -or $_.VirtualNetworkGateway2.Id -eq $gateway.Id } if ($gatewayConnections) { Write-Host " VPN Connections:" -ForegroundColor White foreach ($conn in $gatewayConnections) { Write-Host " - $($conn.Name): $($conn.ConnectionStatus)" -ForegroundColor $(if ($conn.ConnectionStatus -eq 'Connected') { 'Green' } else { 'Yellow' }) } } else { Write-Host " ⚠️ Geen VPN-connections gevonden" -ForegroundColor Yellow } } } if ($status.VpnGatewaysFound -eq 0) { Write-Host "`n⚠️ Geen VPN Gateways gevonden" -ForegroundColor Yellow Write-Host " Aanbeveling: Implementeer VPN Gateways voor beveiligde hybride connectiviteit" -ForegroundColor Yellow } if ($status.VpnGatewaysFound -gt 0 -and $status.ConnectionsFound -eq 0) { Write-Host "`n⚠️ Geen VPN-connections geconfigureerd" -ForegroundColor Yellow Write-Host " Aanbeveling: Configureer Site-to-Site VPN-connections tussen Azure VPN Gateways en on-premises VPN-apparaten" -ForegroundColor Yellow } if ($status.ConnectionsFound -gt 0 -and $status.ConnectionsConnected -lt $status.ConnectionsFound) { Write-Host "`n⚠️ Niet alle VPN-connections zijn verbonden" -ForegroundColor Yellow Write-Host " Aanbeveling: Controleer on-premises VPN-apparaatconfiguraties en IPsec-parameters" -ForegroundColor Yellow } if (-not $status.RedundancyConfigured -and $status.VpnGatewaysFound -gt 0) { Write-Host "`n⚠️ Geen redundantie geconfigureerd" -ForegroundColor Yellow Write-Host " Aanbeveling: Implementeer actief-actief VPN Gateway-configuraties of meerdere gateways voor hoge beschikbaarheid" -ForegroundColor Yellow } Write-Host "`nAanbevelingen:" -ForegroundColor Yellow Write-Host " 1. Zorg dat alle VPN Gateways zijn geprovisioneerd en actief" -ForegroundColor White Write-Host " 2. Configureer Site-to-Site VPN-connections met juiste IPsec-parameters" -ForegroundColor White Write-Host " 3. Implementeer redundantie met actief-actief configuraties of meerdere gateways" -ForegroundColor White Write-Host " 4. Gebruik sterke cryptografische algoritmes (AES-256, SHA-256)" -ForegroundColor White Write-Host " 5. Implementeer monitoring en alerting voor VPN-status en prestaties" -ForegroundColor White Write-Host " 6. Voer regelmatig connectivity-tests uit om end-to-end connectiviteit te valideren" -ForegroundColor White Write-Host "`nVoor gedetailleerde instructies, zie het bijbehorende artikel." -ForegroundColor Yellow Write-Host "`n========================================" -ForegroundColor Cyan } catch { Write-Host "`nERROR: $_" -ForegroundColor Red exit 1 } } function Invoke-Remediation { <# .SYNOPSIS Genereert aanbevelingen voor het verbeteren van Site-to-Site VPN-configuraties .DESCRIPTION Analyseert bestaande VPN-configuraties en genereert concrete aanbevelingen voor verbetering. #> [CmdletBinding()] param( [switch]$DebugMode ) Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Remediatie" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { Connect-RequiredServices -DebugMode:$DebugMode $status = Test-VpnGatewayStatus -DebugMode:$DebugMode $vpnGateways = Get-AzVirtualNetworkGateway -ErrorAction SilentlyContinue | Where-Object { $_.GatewayType -eq 'Vpn' } $connections = Get-AzVirtualNetworkGatewayConnection -ErrorAction SilentlyContinue | Where-Object { $_.ConnectionType -eq 'IPsec' } Write-Host "Remediatie Aanbevelingen:" -ForegroundColor Yellow if ($status.VpnGatewaysFound -eq 0) { Write-Host "`n1. IMPLEMENTEER VPN GATEWAYS VOOR BEVEILIGDE HYBRIDE CONNECTIVITEIT" -ForegroundColor Cyan Write-Host " - Creëer Azure VPN Gateways in Virtual Networks die hybride connectiviteit nodig hebben" -ForegroundColor White Write-Host " - Selecteer de juiste VPN Gateway-sku op basis van prestatie- en beschikbaarheidseisen" -ForegroundColor White Write-Host " - Configureer Gateway-subnetten met minimale grootte /27" -ForegroundColor White Write-Host " - Kies route-based VPN voor flexibiliteit en schaalbaarheid" -ForegroundColor White Write-Host " - Wacht op provisioning (20-45 minuten) voordat connections worden geconfigureerd" -ForegroundColor White } if ($status.VpnGatewaysFound -gt 0 -and $status.ConnectionsFound -eq 0) { Write-Host "`n2. CONFIGUREER SITE-TO-SITE VPN-CONNECTIONS" -ForegroundColor Cyan Write-Host " - Creëer Local Network Gateway-resources voor on-premises netwerken" -ForegroundColor White Write-Host " - Configureer VPN-connections tussen Azure VPN Gateways en on-premises VPN-apparaten" -ForegroundColor White Write-Host " - Gebruik sterke gedeelde sleutels (minimaal 32 karakters) en beheer deze veilig" -ForegroundColor White Write-Host " - Configureer juiste IPsec-parameters op zowel Azure als on-premises apparaten" -ForegroundColor White Write-Host " - Verifieer dat IP-adresruimten niet overlappen tussen Azure en on-premises netwerken" -ForegroundColor White } if ($status.ConnectionsFound -gt 0 -and $status.ConnectionsConnected -lt $status.ConnectionsFound) { Write-Host "`n3. OPLOS VERBINDINGSPROBLEMEN" -ForegroundColor Cyan Write-Host " Connections die niet verbonden zijn:" -ForegroundColor White foreach ($conn in $connections) { if ($conn.ConnectionStatus -ne 'Connected') { Write-Host " - $($conn.Name) (Status: $($conn.ConnectionStatus))" -ForegroundColor White } } Write-Host " - Controleer dat gedeelde sleutels exact overeenkomen tussen Azure en on-premises apparaten" -ForegroundColor White Write-Host " - Verifieer dat on-premises VPN-apparaten correct zijn geconfigureerd met juiste IPsec-parameters" -ForegroundColor White Write-Host " - Controleer firewallregels op on-premises firewalls (UDP 500, UDP 4500, IP protocol 50)" -ForegroundColor White Write-Host " - Valideer routing-configuraties op zowel Azure als on-premises routers" -ForegroundColor White } if (-not $status.RedundancyConfigured -and $status.VpnGatewaysFound -gt 0) { Write-Host "`n4. IMPLEMENTEER REDUNDANTIE VOOR HOGERE BESCHIKBAARHEID" -ForegroundColor Cyan Write-Host " - Configureer actief-actief VPN Gateways met twee publieke IP-adressen" -ForegroundColor White Write-Host " - Implementeer meerdere VPN-connections naar verschillende on-premises locaties" -ForegroundColor White Write-Host " - Overweeg Site-to-Site VPN als backup voor ExpressRoute-circuits" -ForegroundColor White Write-Host " - Configureer automatische failover op on-premises VPN-apparaten" -ForegroundColor White } if ($status.VpnGatewaysFound -gt 0) { Write-Host "`n5. OPTIMALISEER BEVEILIGING EN ENCRYPTIE" -ForegroundColor Cyan Write-Host " - Gebruik sterke cryptografische algoritmes (AES-256 voor encryptie, SHA-256 voor integriteit)" -ForegroundColor White Write-Host " - Configureer Perfect Forward Secrecy met IKEv2 wanneer mogelijk" -ForegroundColor White Write-Host " - Implementeer route filtering om alleen geautoriseerde routes te adverteren" -ForegroundColor White Write-Host " - Configureer monitoring en logging voor VPN-verkeer voor compliance-audits" -ForegroundColor White Write-Host " - Documenteer alle VPN-configuraties en cryptografische instellingen" -ForegroundColor White } Write-Host "`n6. IMPLEMENTEER MONITORING EN ONDERHOUD" -ForegroundColor Cyan Write-Host " - Configureer Azure Monitor en Network Watcher voor proactieve monitoring" -ForegroundColor White Write-Host " - Implementeer alerting voor connection-uitval en prestatieproblemen" -ForegroundColor White Write-Host " - Voer regelmatig connectivity-tests uit om end-to-end connectiviteit te valideren" -ForegroundColor White Write-Host " - Review en update VPN-configuraties regelmatig om te voldoen aan veranderende vereisten" -ForegroundColor White Write-Host " - Overweeg gedeelde sleutel-rotatie als onderdeel van security best practices" -ForegroundColor White Write-Host "`nVoor gedetailleerde implementatie-instructies, zie het bijbehorende artikel." -ForegroundColor Yellow Write-Host "`n========================================" -ForegroundColor Cyan } catch { Write-Host "`nERROR: $_" -ForegroundColor Red exit 1 } } function Invoke-Validation { <# .SYNOPSIS Valideert Site-to-Site VPN-configuraties .DESCRIPTION Voert validatietests uit op VPN-configuraties en connectiviteit. #> [CmdletBinding()] param( [switch]$DebugMode ) Write-Host "`n========================================" -ForegroundColor Cyan Write-Host "$PolicyName - Validatie" -ForegroundColor Cyan Write-Host "========================================`n" -ForegroundColor Cyan try { Connect-RequiredServices -DebugMode:$DebugMode $status = Test-VpnGatewayStatus -DebugMode:$DebugMode Write-Host "Validatie Status:" -ForegroundColor Yellow Write-Host " Modus: $($status.Mode)" -ForegroundColor White Write-Host " VPN Gateways gevonden: $($status.VpnGatewaysFound)" -ForegroundColor White Write-Host " VPN Gateways geprovisioneerd: $($status.VpnGatewaysProvisioned)" -ForegroundColor White Write-Host " VPN Connections gevonden: $($status.ConnectionsFound)" -ForegroundColor White Write-Host " VPN Connections verbonden: $($status.ConnectionsConnected)" -ForegroundColor $(if ($status.ConnectionsConnected -gt 0) { 'Green' } else { 'Yellow' }) Write-Host " Redundantie geconfigureerd: $($status.RedundancyConfigured)" -ForegroundColor $(if ($status.RedundancyConfigured) { 'Green' } else { 'Yellow' }) if ($status.VpnGatewaysFound -eq 0) { Write-Host "`n⚠️ Geen VPN Gateways gevonden" -ForegroundColor Yellow Write-Host " Site-to-Site VPN is essentieel voor beveiligde hybride connectiviteit" -ForegroundColor Yellow Write-Host "`nVALIDATIE: GEFAALD - VPN Gateways moeten worden geïmplementeerd" -ForegroundColor Red exit 1 } if ($status.VpnGatewaysProvisioned -eq 0) { Write-Host "`n⚠️ Geen VPN Gateways zijn volledig geprovisioneerd" -ForegroundColor Yellow Write-Host " Wacht op provisioning (20-45 minuten) voordat connections worden geconfigureerd" -ForegroundColor Yellow Write-Host "`nVALIDATIE: ONVOLTOOID" -ForegroundColor Red exit 1 } if ($status.ConnectionsFound -eq 0) { Write-Host "`n⚠️ Geen VPN-connections geconfigureerd" -ForegroundColor Yellow Write-Host " Configureer Site-to-Site VPN-connections tussen Azure en on-premises netwerken" -ForegroundColor Yellow Write-Host "`nVALIDATIE: ONVOLTOOID" -ForegroundColor Red exit 1 } if ($status.ConnectionsConnected -eq 0) { Write-Host "`n⚠️ Geen VPN-connections zijn verbonden" -ForegroundColor Yellow Write-Host " Controleer on-premises VPN-apparaatconfiguraties en IPsec-parameters" -ForegroundColor Yellow Write-Host "`nVALIDATIE: ONVOLTOOID" -ForegroundColor Red exit 1 } if (-not $status.RedundancyConfigured) { Write-Host "`n⚠️ Geen redundantie geconfigureerd" -ForegroundColor Yellow Write-Host " Overweeg actief-actief configuraties of meerdere gateways voor hoge beschikbaarheid" -ForegroundColor Yellow } Write-Host "`nValidatie Aanbevelingen:" -ForegroundColor Yellow Write-Host " 1. Verifieer dat alle VPN-connections correct zijn geconfigureerd en verbonden" -ForegroundColor White Write-Host " 2. Test end-to-end connectiviteit tussen on-premises netwerken en Azure Virtual Networks" -ForegroundColor White Write-Host " 3. Valideer IPsec-configuraties en cryptografische instellingen" -ForegroundColor White Write-Host " 4. Voer regelmatig connectivity-tests uit om connectiviteit te valideren" -ForegroundColor White Write-Host " 5. Monitor VPN-status en prestaties regelmatig" -ForegroundColor White if ($status.IsCompliant) { Write-Host "`nVALIDATIE: GESLAAGD" -ForegroundColor Green exit 0 } else { Write-Host "`nVALIDATIE: ONVOLTOOID - Volg de aanbevelingen om de configuratie te verbeteren" -ForegroundColor Yellow exit 1 } } catch { Write-Host "`nERROR: $_" -ForegroundColor Red exit 1 } } function Invoke-Implementation { <# .SYNOPSIS Alias voor Invoke-Remediation voor consistentie met andere scripts #> [CmdletBinding()] param( [switch]$DebugMode ) Invoke-Remediation -DebugMode:$DebugMode } # Main execution try { if ($Monitoring) { Invoke-Monitoring -DebugMode:$DebugMode } elseif ($Remediation) { Invoke-Remediation -DebugMode:$DebugMode } elseif ($Validation) { Invoke-Validation -DebugMode:$DebugMode } else { Write-Host "`nGebruik: -Monitoring | -Remediation | -Validation" -ForegroundColor Yellow Write-Host "`nVoeg -DebugMode toe voor lokale validatie zonder Azure-verbinding" -ForegroundColor Yellow Write-Host "`nVoorbeelden:" -ForegroundColor Cyan Write-Host " .\site-to-site-vpn.ps1 -Monitoring" -ForegroundColor White Write-Host " .\site-to-site-vpn.ps1 -Remediation" -ForegroundColor White Write-Host " .\site-to-site-vpn.ps1 -Validation" -ForegroundColor White Write-Host " .\site-to-site-vpn.ps1 -Validation -DebugMode" -ForegroundColor White } } catch { Write-Host "`nFATALE FOUT: $_" -ForegroundColor Red exit 2 } finally { Write-Host "`n========================================`n" -ForegroundColor Cyan }

Risico zonder implementatie

Risico zonder implementatie
High: Zonder een correct geconfigureerde Site-to-Site VPN-verbinding lopen Nederlandse overheidsorganisaties aanzienlijke beveiligingsrisico's wanneer ze on-premises netwerken verbinden met Azure cloud services. Onbeveiligde verbindingen over het publieke internet zijn inherent kwetsbaar voor man-in-the-middle aanvallen, packet sniffing, replay-aanvallen, en onderschepping of manipulatie van gevoelige gegevens tijdens transport. Voor overheidsorganisaties die persoonsgegevens verwerken, vertrouwelijke informatie delen, of kritieke bedrijfsprocessen uitvoeren, is dit volledig onacceptabel en kan het leiden tot ernstige datalekken, compliance-schendingen, operationele verstoringen, en aanzienlijke financiële en reputatieschade. Daarnaast vereisen compliance-frameworks zoals BIO, NIS2 en ISO 27001 expliciet dat organisaties passende cryptografische maatregelen implementeren om gegevens te beschermen tijdens transport over publieke netwerken.

Management Samenvatting

Site-to-Site VPN vormt een essentiële beveiligingsmaatregel voor Nederlandse overheidsorganisaties die een beveiligde, gecodeerde verbinding moeten creëren tussen on-premises netwerken en Azure Virtual Networks via het publieke internet. Deze aanpak biedt sterke encryptie met AES-256, authenticatie en integriteitscontroles, wat essentieel is voor het waarborgen van beveiliging en compliance. Het bijbehorende PowerShell-script automatiseert het monitoren van VPN Gateway-status, het valideren van connection-configuraties, en het genereren van compliance-rapportages. De implementatie vereist ongeveer 40 tot 60 uur technische en organisatorische inspanning, maar is essentieel voor het waarborgen van beveiligde hybride cloudconnectiviteit.