💼 Management Samenvatting
Azure Application Gateway met Web Application Firewall (WAF) vormt een kritieke verdedigingslaag voor webapplicaties van Nederlandse overheden en vitale organisaties. Waar traditionele netwerkfirewalls vooral verkeer op poort- en IP-niveau filteren, analyseert WAF HTTP(S)-verkeer diepgaand op patronen die wijzen op SQL-injectie, Cross-Site Scripting (XSS), Remote Code Execution (RCE) en andere OWASP Top 10-risico's. Door WAF dicht bij de applicatie te positioneren, in combinatie met loadbalancing en TLS-terminatie, ontstaat een centraal aangrijpingspunt waar beveiligingsbeleid consistent kan worden afgedwongen en gemonitord over meerdere applicaties en omgevingen heen.
✓ Azure Web Application Firewall
✓ Internetgerichte webapplicaties
Zonder een goed geconfigureerde WAF op Application Gateway is elke internetgerichte applicatie rechtstreeks blootgesteld aan geautomatiseerde scans, botnets en gerichte aanvallen. In de praktijk blijkt dat veel overheidsorganisaties wel kwetsbaarheden oplossen in applicatiecode, maar geen structurele bescherming hebben tegen zero-day exploits of misconfiguraties in frameworks en middleware. Aanvallers hoeven dan slechts één fout in een webframework of plug-in te vinden om toegang te krijgen tot persoonsgegevens, basisregistraties of bestuurlijke documenten. Bovendien ontbreekt zonder WAF vaak een centraal zicht op aanvallen: logging is versnipperd over applicaties, ontwikkelteams en omgevingen. Daarmee is het vrijwel onmogelijk om bij incidenten snel te reconstrueren hoe lang een aanval al bezig was, welke payloads zijn gebruikt en welke endpoints het hardst zijn geraakt. Voor instellingen die moeten aantonen dat zij onder BIO, NIS2 en AVG "passende technische maatregelen" hebben getroffen, is dit een onacceptabele situatie: auditors verwachten een aantoonbare defense-in-depth-opzet waarin WAF een expliciete control vormt voor webverkeer.
Connection:
Connect-AzAccountRequired Modules: Az.Network, Az.Resources, Az.Accounts
Implementatie
Dit artikel beschrijft hoe organisaties binnen de Nederlandse Baseline voor Veilige Cloud Application Gateway met WAF_v2 inrichten als robuuste, centraal beheerde beveiligingslaag voor webapplicaties. De focus ligt op drie pijlers. Ten eerste ontwerp en basisconfiguratie: het kiezen van de juiste SKU, het inrichten van dedicated subnets, listeners en back-end pools, en het koppelen van één of meerdere WAF-beleidsobjecten aan specifieke sites en URL-paden. Ten tweede de concrete WAF-configuratie: activeren van OWASP Core Rule Set (CRS), kiezen tussen Detectie- en Preventiemodus, configureren van uitsluitingen en aangepaste regels, en zorgen voor volledige integratie met Log Analytics en eventueel Microsoft Sentinel. Ten derde operationalisatie en governance: hoe monitoring, incidentrespons, change management en periodieke tuning worden georganiseerd zodat WAF geen eenmalig project blijft, maar een volwassen capability wordt. Het bijbehorende PowerShell-script inventariseert Application Gateways in een abonnement, controleert of WAF is ingeschakeld, in welke modus deze draait, of een modern regelschema wordt gebruikt en of logging is geconfigureerd naar een centrale workspace. Daarmee krijgen securityteams direct inzicht in ontbrekende of verouderde configuraties en kunnen zij gericht verbeteracties initiëren.
Architectuur en randvoorwaarden voor Application Gateway WAF
Een effectieve inzet van Application Gateway met WAF begint bij een doordacht architectuurontwerp. In plaats van WAF achteraf "voor" bestaande applicaties te plaatsen, is het verstandiger om vanuit een referentiearchitectuur te werken waarin alle internetgerichte webapplicaties standaard via een centraal of gedeeld Application Gateway-platform verlopen. In zo'n ontwerp worden per omgeving (bijvoorbeeld ontwikkel, test, acceptatie, productie) één of meer gateways geplaatst in dedicated subnets binnen een hub- of spoke-architectuur. De gateways verzorgen niet alleen Layer 7-loadbalancing, maar fungeren ook als centrale terminatiepunten voor TLS, zodat certificaatbeheer en beveiligingsbeleid niet versnipperd raken. Belangrijk is dat het ontwerp rekening houdt met beschikbaarheidseisen: productie-gateways worden standaard zone-redundant en autoscaling wordt ingeschakeld, zodat volumetrische aanvallen of piekbelasting niet direct leiden tot uitval van diensten die voor burgers of ketenpartners essentieel zijn.
Randvoorwaardelijk is een helder beeld van de applicatielandschap en dataclassificatie. Voor elke webapplicatie moet bekend zijn of deze persoonsgegevens, vertrouwelijke beleidsinformatie of slechts publieke informatie verwerkt. Dit bepaalt de strengheid van het WAF-beleid, de wijze van logging en de eisen aan failover-scenario's. Applicaties met hoge dataclassificatie moeten bijvoorbeeld altijd achter een WAF in Preventiemodus draaien, met een moderne OWASP CRS-versie en aanvullende custom rules voor gevoelige functionaliteit zoals inlogschermen, uploadportalen en beheerinterfaces. Ook wordt vastgelegd welke DNS-namen en certificaten aan de gateway worden gekoppeld en hoe de relatie is met identity providers zoals Microsoft Entra ID (voorvoorbeeld voor pre-authenticated verkeer via App Service Authentication of reverse proxy-scenario's). Zonder deze inventarisatie bestaat het risico dat slechts een deel van de kritieke endpoints wordt beschermd en dat subdomeinen of beheerportalen buiten beeld blijven.
Op infrastructuurniveau vereist Application Gateway een zorgvuldig ingericht virtueel netwerk. Gateways worden geplaatst in een dedicated subnet dat alleen het gatewayverkeer bevat; back-end services zoals App Service Environments, virtuele machines of Kubernetes-clusters bevinden zich in gescheiden subnets die via netwerkbeveiligingsgroepen (NSG's) uitsluitend verkeer vanaf de gateway toestaan. Voor hybride scenario's, waarin back-end systemen on-premises of in andere clouds draaien, wordt gebruikgemaakt van VPN- of ExpressRoute-verbindingen die via firewall- of security-appliances lopen. Dit voorkomt dat WAF wordt omzeild via directe verbindingen. Tegelijkertijd worden network security-groepen zo geconfigureerd dat verkeer van internet alleen via publieke IP-adressen van de gateway kan binnenkomen. Hiermee wordt een Zero Trust-achtige opzet gerealiseerd: er bestaat geen directe inbound connectiviteit naar de applicatie zonder dat verkeer eerst door WAF is gegaan.
Een volwassen referentiearchitectuur definieert ook hoe multi-tenancy en scheiding van verantwoordelijkheden worden geborgd. Sommige organisaties kiezen voor één centrale gateway per regio, waarop meerdere WAF-beleidsobjecten zijn gekoppeld aan verschillende listeners en URL-paden. Andere organisaties geven de voorkeur aan per-dienst of per-domein gateways, zodat eigenaarschap en kostenverantwoording eenvoudig te traceren zijn. In beide gevallen moet Role-Based Access Control (RBAC) in Azure duidelijk vastleggen welke teams wijzigingen mogen doen aan de gateway zelf, wie WAF-beleid mag aanpassen en welke rollen alleen leesrechten krijgen voor monitoring en troubleshooting. Just-in-Time-toegang via Privileged Identity Management is essentieel om beheeracties te beperken in tijd en scope en om achteraf te kunnen aantonen wie welke wijziging heeft doorgevoerd.
Tot slot vraagt de Nederlandse Baseline voor Veilige Cloud expliciet aandacht voor integratie met monitoring, logging en SIEM. Bij het ontwerp van Application Gateway moet daarom direct worden vastgelegd naar welke Log Analytics-workspace de WAF- en access-logboeken worden weggeschreven, welke bewaartermijnen gelden en hoe deze gegevens worden gekoppeld aan een Security Operations Center (SOC) en incident-responsteams. Het is onvoldoende om alleen standaard logging aan te zetten; er moeten ook query's, alerts en dashboards worden gedefinieerd die inzicht geven in aanvalspatronen, false positives en trends in geblokkeerde of toegestane verzoeken. Deze architectuurkeuzes bepalen in hoge mate of WAF later daadwerkelijk als strategische control kan worden ingezet of slechts als technische optie "die ergens aan staat" zonder dat iemand echt begrijpt wat er gebeurt.
Ontwerp en configuratie van WAF-beleid op Application Gateway
Wanneer de basisarchitectuur staat, verschuift de aandacht naar het concrete WAF-beleid op Application Gateway. De kern hiervan is het kiezen van de juiste Web Application Firewall Configuration per listener of site. In moderne omgevingen wordt gebruikgemaakt van WAF_v2 met een afzonderlijk WAF Policy-object dat los van de gateway wordt beheerd en door meerdere listeners kan worden hergebruikt. Dit beleid definieert onder meer of de firewall in Detectie- of Preventiemodus draait, welke OWASP Core Rule Set (CRS) versie wordt gebruikt en welke aangepaste regels worden toegepast voor specifieke applicaties. Voor Nederlandse overheidsorganisaties geldt dat internetgerichte productieomgevingen standaard in Preventiemodus draaien met een up-to-date CRS-versie; Detectiemodus wordt alleen nog tijdelijk gebruikt voor tuning, bijvoorbeeld bij grote applicatiewijzigingen of migraties.
De keuze voor een CRS-versie is niet louter technisch, maar ook een compliancevraagstuk. Door een verouderde regelset te gebruiken, loopt de organisatie aantoonbaar achter op bekende aanvalspatronen en vergroot zij het risico dat auditors constateren dat "passende maatregelen" ontbreken. Het WAF-beleid moet daarom een proces bevatten voor het periodiek evalueren en upgraden van de CRS-versie, inclusief regressietesten in een niet-productieomgeving. Tijdens zo'n upgrade worden eerst alle regels in Detectiemodus gezet zodat logs inzicht geven in mogelijke false positives. Vervolgens worden uitzonderingen geconfigureerd voor legitieme patronen die door de nieuwe regels ten onrechte worden gezien als verdacht. Pas als de loganalyse aantoont dat het verkeer correct wordt geclassificeerd, wordt Preventiemodus weer geactiveerd op productie. Deze werkwijze voorkomt dat nieuwe regels onverwacht bedrijfsprocessen blokkeren en borgt tegelijkertijd dat de organisatie niet jarenlang op een verouderde regelset blijft hangen.
Een tweede belangrijk aspect van WAF-beleid is het zorgvuldig definiëren van uitsluitingen en custom rules. Uitsluitingen (exclusions) worden gebruikt om bepaalde headers, queryparameters of bodyvelden uit te sluiten van inspectie, bijvoorbeeld bij integraties met derde partijen die ongewone encodering of grote binaire payloads gebruiken. De Nederlandse Baseline voor Veilige Cloud schrijft hierbij het principe "zo specifiek mogelijk" voor: een uitzondering wordt altijd beperkt tot een concrete combinatie van hostnaam, pad, parameter en eventueel bron-IP of -ASN. Brede uitzonderingen zoals "negeer alle regels voor deze applicatie" zijn niet acceptabel omdat zij feitelijk de beveiligingslaag uitschakelen. Custom rules worden juist ingezet om generiek beleid verder aan te scherpen, bijvoorbeeld door brute-force bescherming op inlogroutes, geo-blokkades voor landen waaruit geen legitiem verkeer wordt verwacht, of extra validatie op upload- of beheerfuncties. Alle uitzonderingen en custom rules worden vastgelegd in een WAF-changelog met datum, reden, risico-inschatting en accordering door de security officer of CISO.
Naast verzoekinspectie moeten ook algemene instellingen zorgvuldig worden gekozen. Dit omvat limieten voor maximale requestgrootte, timeouts, toegestane HTTP-methoden en beleid rond redirects. Te lage limieten leiden tot onnodige verstoringen bij legitieme uploads of API-calls, terwijl te ruime limieten misbruik van resource-intensieve aanvallen mogelijk maken. De organisatie stelt daarom per applicatieprofiel (bijvoorbeeld burgerportaal, interne beheerapplicatie, API-gateway) standaardwaarden vast die zowel beveiligings- als gebruikseisen reflecteren. Deze waarden worden vertaald naar IaC-templates, zodat nieuwe gateways automatisch met het juiste basisbeleid worden uitgerold en afwijkingen expliciet moeten worden gemotiveerd in change-requests.
Gebruik PowerShell-script waf-configuration.ps1 (functie Invoke-Monitoring) – Voert een monitoringcontrole uit op Application Gateways om te bepalen of WAF is ingeschakeld, in welke modus deze draait en welke regels en logging zijn geconfigureerd..
Beheer, monitoring en tuning van Application Gateway WAF
Gebruik PowerShell-script waf-configuration.ps1 (functie Invoke-Assessment) – Genereert een gedetailleerd overzicht van WAF-configuratie per Application Gateway, inclusief status, modus, regels en koppeling met logvoorzieningen..
Zodra Application Gateway WAF in productie staat, verschuift de aandacht van ontwerp naar dagelijks beheer en continue verbetering. Monitoring begint met het borgen dat alle relevante gateways daadwerkelijk een WAF-configuratie hebben. Het bijbehorende PowerShell-script inventariseert periodiek alle Application Gateways in de abonnementen die onder het beheer van de organisatie vallen en classificeert ze naar WAF-status: volledig uitgeschakeld, alleen Detectiemodus of daadwerkelijk blokkerend. Ook wordt vastgelegd welke CRS-versie en firewallmodus wordt gebruikt en of de gateway is gekoppeld aan een centraal WAF-beleid of een lokale configuratie. De resultaten worden gebundeld in een rapport of dashboard dat voor CISO, architectuurboard en SOC inzichtelijk maakt waar risico's en verbeterkansen liggen. Dit voorkomt dat na reorganisaties, migraties of nieuwe projecten ongemerkt gateways worden uitgerold zonder WAF of met achterstallige configuraties.
Een tweede pijler van beheer is de inhoudelijke analyse van WAF-logs. Alle diagnostische gegevens van Application Gateway, waaronder access logs en WAF logs, worden verplicht weggeschreven naar een centrale Log Analytics-workspace. Hierop worden Kusto-query's en dashboards ingericht die inzicht geven in geblokkeerde en toegestane verzoeken, trends in aanvalstypen, herkomstlanden en betrokken IP-adressen. Het SOC definieert drempelwaarden voor alerts, bijvoorbeeld bij een plotselinge toename van SQL-injectiepogingen, massale requests naar specifieke inlog- of beheerroutes of het herhaaldelijk triggeren van blokkades vanaf dezelfde bron. Deze alerts leiden tot incidenttickets en runbooks waarin is vastgelegd welke acties de analist moet ondernemen: aanvullende blokkades configureren, applicatie-eigenaren informeren, forensische data veiligstellen of escaleren naar landelijke partijen zoals het Nationaal Cyber Security Centrum. Door WAF-logs consequent te analyseren, ontstaat een rijk beeld van de dreigingsomgeving en kunnen maatregelen tijdig worden aangescherpt.
Tuning vormt de derde pijler en voorkomt dat WAF-configuratie na verloop van tijd verstijft of juist langzaam wordt uitgehold. Nieuwe functionaliteit, wijzigingen in gebruikersgedrag en veranderende dreigingen zorgen ervoor dat beleid periodiek moet worden herzien. De Nederlandse Baseline voor Veilige Cloud adviseert minimaal kwartaalgewijs een tuningcyclus uit te voeren, waarin loganalyses worden gebruikt om false positives en onbenutte regels te identificeren. Voor elke regel of uitzondering wordt beoordeeld of deze nog nodig is, of dat de scope kan worden verkleind of uitgebreid. Tevens worden lessons learned uit incidenten vertaald naar nieuwe custom rules of strengere drempels. Door tuningproces te koppelen aan formele changeprocedures en security governance, wordt voorkomen dat individuele beheerders op eigen initiatief brede uitzonderingen toevoegen die de effectiviteit van WAF ondermijnen.
Naast technische monitoring en tuning zijn heldere verantwoordelijkheden en rapportages essentieel. Organisaties leggen vast wie optreedt als product owner voor Application Gateway WAF, welke teams de dagelijkse operatie verzorgen en hoe afstemming plaatsvindt met ontwikkelteams en business-eigenaren. Periodieke rapportages – bijvoorbeeld maandelijks of per kwartaal – bevatten kerncijfers zoals het aantal geblokkeerde aanvallen, verdeling naar type, tijd tot mitigatie van geconstateerde kwetsbaarheden en het percentage gateways dat volledig aan het standaardbeleid voldoet. Deze rapportages worden besproken in security- en risicocomités en vormen input voor strategische keuzes, zoals uitbreiding van capaciteit, investering in aanvullende tooling of verscherping van acceptatiecriteria voor nieuwe applicaties. Zo groeit Application Gateway WAF uit tot een volwaardige beveiligingsdienst in plaats van een losstaande technische component.
Compliance & Frameworks
- CIS M365: Control 6.6, 9.1 (L1/L2) - Implementeer Web Application Firewall voor internetgerichte webapplicaties en borg netwerk- en perimeterscheiding in lijn met de CIS Azure Foundations Benchmark.
- BIO: 12.01, 12.04, 14.02 - Systeemontwikkeling, logging en applicatiebeveiliging voor internetgerichte diensten binnen de Baseline Informatiebeveiliging Overheid.
- ISO 27001:2022: A.8.24, A.8.33, A.8.34 - Webfiltering, monitoring van beveiligingsgebeurtenissen en technische kwetsbaarheden in het kader van een Information Security Management System.
- NIS2: Artikel - Technische en organisatorische maatregelen voor risicobeheersing, inclusief bescherming van netwerk- en informatiesystemen tegen aanvalspatronen via webapplicaties.
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).
Risico zonder implementatie
Management Samenvatting
Azure Application Gateway met Web Application Firewall (WAF) vormt een verplichte verdedigingslaag voor internetgerichte webapplicaties binnen de Nederlandse Baseline voor Veilige Cloud. Door een gestandaardiseerde architectuur, modern WAF-beleid op basis van OWASP CRS en strakke integratie met Log Analytics en SOC-processen te implementeren, worden aanvallen vroegtijdig geblokkeerd en wordt een rijk beeld van dreigingen opgebouwd. Het bijbehorende PowerShell-script inventariseert automatisch welke Application Gateways WAF hebben ingeschakeld, in welke modus zij draaien en of logging en moderne regels actief zijn, zodat hiaten snel zichtbaar worden. De benodigde inspanning is beperkt (circa 32 uur initiële implementatie), terwijl de risicoreductie en auditbaarheid aanzienlijk zijn voor alle webgebaseerde diensten in Azure.
- Implementatietijd: 32 uur
- FTE required: 0.2 FTE