Webapplicaties beveiligen met Azure Web Application Firewall (WAF)

Webapplicaties beveiligen met Azure Web Application Firewall (WAF)

14-01-2025

Dit technische en educatieve artikel is bedoeld om beveiligingsanalisten, IT-beheerders en systeemingenieurs te begeleiden bij het implementeren en configureren van Azure Web Application Firewall (WAF) om webtoepassingen te beschermen tegen veelvoorkomende aanvallen. In een digitaal landschap waar webapplicaties de toegangspoort vormen tot veel bedrijven, zijn ze frequente doelwitten geworden van een verscheidenheid aan cyberaanvallen, zoals SQL-injectie, cross-site scripting (XSS) en andere OWASP Top 10-kwetsbaarheden. Azure WAF biedt een essentiële beschermingslaag om deze risico's te beperken en de beschikbaarheid, integriteit en vertrouwelijkheid van gegevens te garanderen [1].

Introductie

Webapplicaties zijn cruciale componenten van de IT-infrastructuur van vrijwel alle organisaties. Hun blootstelling aan internet maakt ze echter kwetsbaar voor aanvallen die gegevens in gevaar kunnen brengen, diensten kunnen onderbreken en de reputatie van het bedrijf kunnen schaden. Een Web Application Firewall (WAF) fungeert als een reverse proxy en inspecteert HTTP/HTTPS-verkeer dat de webapplicatie binnenkomt en verlaat, en identificeert en blokkeert kwaadaardige verzoeken voordat deze de applicatieserver bereiken. Azure WAF, beschikbaar als functie van Azure Application Gateway of Azure Front Door, biedt gecentraliseerde en schaalbare bescherming voor uw webapplicaties die worden gehost in Azure of zelfs in hybride omgevingen [2].

Deze praktische gids behandelt de fundamentele concepten van Azure WAF, de werkingsmodi (detectie en preventie), de configuratie van WAF-beleid met beheerde regelsets (OWASP Core Rule Set - CRS) en aangepaste regels. Er worden stapsgewijze instructies gegeven voor het implementeren van WAF met Azure Application Gateway, het testen van de effectiviteit ervan tegen veelvoorkomende aanvallen en het valideren van de resultaten, evenals het bespreken van best practices en tips voor probleemoplossing. Het doel is om de lezer in staat te stellen Azure WAF autonoom, professioneel en betrouwbaar te configureren en te beheren, waardoor zijn webapplicaties worden beschermd tegen de meest voorkomende bedreigingen.

Waarom is Azure WAF cruciaal voor de bescherming van webapplicaties?

  • Uitgebreide bescherming: Verdedigt tegen veelvoorkomende webaanvallen, waaronder SQL-injectie, cross-site scripting (XSS), bestandsopname, botaanvallen en andere OWASP Top 10-kwetsbaarheden [3].
  • Beheerde regels: maakt gebruik van beheerde regelsets (zoals OWASP CRS) die automatisch worden bijgewerkt door Microsoft, waardoor bescherming tegen de nieuwste bedreigingen wordt gegarandeerd zonder handmatige tussenkomst.
  • Aangepaste regels: Maakt het mogelijk aangepaste regels te maken om te voldoen aan applicatiespecifieke beveiligingsvereisten, specifieke verkeerspatronen te blokkeren of te beschermen tegen kwetsbaarheden die niet onder beheerde regels vallen.
  • Flexibele bedieningsmodi: Werkt in de modus 'Detectie' (bewaakt en registreert alleen aanvallen) of 'Preventie' (blokkeert actief aanvallen), waardoor geleidelijke controle over de implementatie mogelijk is.
  • Native Integratie met Azure: Naadloze integratie met Azure Application Gateway (voor interne applicaties) en Azure Front Door (voor wereldwijde applicaties), en biedt een complete oplossing voor het leveren van applicaties met ingebouwde beveiliging.
  • Schaalbaarheid en hoge beschikbaarheid: profiteer van de schaalbaarheid en hoge beschikbaarheid van Azure-applicatieleveringsservices, zodat de bescherming altijd actief en performant is.
  • Compliance: Helpt organisaties te voldoen aan wettelijke vereisten en beveiligingsnormen die bescherming van webapplicaties vereisen.

Vereisten

Om Azure WAF te implementeren, hebt u de volgende items nodig:

  1. Actief Azure-abonnement: een Azure-abonnement om resources te maken en te beheren.
  2. Beheerderstoegang: een account met de benodigde machtigingen om bronnen zoals Application Gateways, Front Doors en WAF-beleid te maken en te beheren (bijvoorbeeld 'Collaborator' of 'Network Administrator').
  3. Bestaande webapplicatie: een webapplicatie (gehost in Azure of elders) die u wilt beschermen. Voor deze handleiding gaan we uit van een eenvoudige webtoepassing die toegankelijk is via Application Gateway.
  4. Virtueel netwerk (VNet) en subnetten: een virtueel netwerk en subnetten geconfigureerd voor de Application Gateway en de webtoepassing.

Stap voor stap: Azure WAF implementeren met Application Gateway

Laten we Azure WAF configureren om eenwebtoepassing met behulp van Azure Application Gateway.

1. Een Azure-toepassingsgateway maken met WAF

  1. Open uw browser en navigeer naar de Azure-portal: https://portal.azure.com.
  2. Log in met een account dat over de benodigde rechten beschikt.
  3. Typ 'Application Gateway' in het bovenste zoekveld en selecteer deze uit de resultaten.
  4. Klik op + Maken.

  5. Basisprincipes:

    • Abonnement: Selecteer uw abonnement.
    • Brongroep: maak een nieuwe brongroep (bijvoorbeeld rg-waf-appgw) of selecteer een bestaande.
    • Applicatiegatewaynaam: geef een naam (bijvoorbeeld: appgw-waf-01).
    • Regio: Selecteer de regio.
    • Niveau: Selecteer Standaard v2 (WAF is alleen beschikbaar in niveau v2).
    • WAF inschakelen: Selecteer Ja.
    • WAF-beleidsnaam: geef het WAF-beleid een naam (bijvoorbeeld wafpolicy-appgw-01).
    • WAF-modus: begin met 'Detectie' om regels te controleren en aan te passen voordat u naar 'Preventie' gaat.
  6. Klik op Volgende: Frontends.

  7. Voorkanten:

    • Frontend IP-adrestype: Selecteer 'Openbaar'.
    • Openbaar IP-adres: Klik op +Nieuw toevoegen en geef het publieke IP-adres een naam (bijvoorbeeld: pip-appgw-waf).
  8. Klik op Volgende: Backends.

  9. Backends:

    • Klik op '+Backend-pool toevoegen'.
    • Backend-poolnaam: geef het een naam (bijvoorbeeld app-backend-pool).
    • Backend-pool zonder doelen toevoegen: Selecteer 'Nee'.
    • Bestemmingstype: Selecteer IP-adres of FQDN.
    • IP-adres/FQDN: voer het IP-adres of de FQDN van uw webtoepassing in (bijvoorbeeld: '10.0.0.4' voor een virtuele machine in het VNet of de FQDN van een App Service).
    • Klik op 'Toevoegen'.
  10. Klik op Volgende: Configuratie.

  11. Opstelling:

    • Routinginstellingen: klik op +Routeregel toevoegen.
    • Regelnaam: geef het een naam (bijvoorbeeld: regel-http).
    • Prioriteit: laat de standaardwaarde staan.
    • Luister:
      • Listenernaam: Geef een naam op (bijvoorbeeld: listener-http).
      • Frontend IP-adres: Selecteer het gemaakte openbare IP-adres.
      • Protocol: Selecteer HTTP (om te beginnen kunt u HTTPS later toevoegen).
      • Poort: 80.
    • Backend-doelen:
      • Doeltype: Selecteer 'Backendpool'.
      • Backend-pool: Selecteer app-backend-pool.
      • Backend-configuratie: klik op +Nieuw toevoegen.
        • Backend-instellingsnaam: geef het een naam (bijvoorbeeld http-setting).
        • Backend-protocol: HTTP.
        • Backend-poort: 80 (of uw webapplicatie-poort).
        • Gebruik aangepaste probe: Selecteer Nee (voor dit eenvoudige voorbeeld).
        • Klik op 'Toevoegen'.
    • Klik op Toevoegen in de routeringsregel.
  12. Klik op Volgende: Tags.

  13. Klik op Volgende: Controleren + maken.
  14. Controleer de instellingen en klik op 'Aanmaken'.

    • Uitleg: Met dit proces wordt een Application Gateway gemaakt met een bijbehorende WAF. De WAF begint het verkeer te inspecteren in de 'Detectie'-modus.

2. Beheerde en aangepaste WAF-regels configureren

Na de implementatie kunt u het WAF-beleid aanpassen.

  1. Navigeer in de Azure-portal naar uw toepassingsgateway (appgw-waf-01).
  2. Selecteer in het linkernavigatievenster onder Instellingen Webapplicatiefirewall.
  3. Klik op de naam van uw WAF-beleid (wafpolicy-appgw-01).

  4. Beleidsmodus: In de sectie 'Overzicht' kunt u de 'Modus' wijzigen van 'Detectie' in 'Preventie' als u er zeker van bent dat uw regels geen legitiem verkeer blokkeren.

  5. Beheerde regels:

    • Selecteer in het linkernavigatievenster van het WAF-beleid Beheerde regels.
    • Zorg ervoor dat de OWASP standaardregelset (bijvoorbeeld OWASP_CRS/3.2) Ingeschakeld is.
    • U kunt specifieke regels binnen de beheerde set uitschakelen als deze valse positieven veroorzaken, maar doe dit met de nodige voorzichtigheid en alleen na zorgvuldige overweging.
  6. Aangepaste regels:

    • Selecteer in het linkernavigatievenster van het WAF-beleid Aangepaste regels.
    • Klik op +Aangepaste regel toevoegen.
    • Regelnaam: geef het een naam (bijvoorbeeld: BloquearIPMalicioso).
    • Prioriteit: stel een prioriteit in (kleinere getallen hebben een hogere prioriteit).
    • Typregel: Overeenkomen.
    • Staat:
      • Variabeltype: RemoteAddress.
      • Operator: IPMatch.
      • Waarde: Voer het IP-adres of CIDR-bereik in dat u wilt blokkeren (bijvoorbeeld: 192.168.1.10/32).
    • Actie: Selecteer Blokkeren.

    • Uitleg: Met aangepaste regels kunt u blokkeringslogica definiëren op basis van specifieke criteria zoals IP-adressen, HTTP-headers, queryreeksen, enz.

  7. Klik op Toevoegen en vervolgens op Opslaan in het WAF-beleid.

3. De WAF monitoren en logbestanden bekijken

Monitoring is essentieel om de effectiviteit van WAF te begrijpen en het beleid aan te passen.

  1. Navigeer in de Azure-portal naar uw toepassingsgateway (appgw-waf-01).
  2. Selecteer in het linkernavigatievenster onder Monitoring Diagnostische logboeken.
  3. Klik op '+Diagnostische configuratie toevoegen'.
  4. Diagnostische configuratienaam: geef deze een naam (bijvoorbeeld: diag-waf).
  5. Logboekcategorieën: vink 'ApplicationGatewayAccessLog' en 'ApplicationGatewayFirewallLog' aan.
  6. Bestemmingsdetails: Selecteer 'Verzenden naar Log Analytics-werkruimte' en kies uw werkruimte.
  7. Klik op Opslaan.

  8. Navigeer na een paar minuten naar uw Log Analytics-werkruimte.

  9. Selecteer Logboeken in het linkernavigatievenster.
  10. Gebruik KQL-query's (Kusto Query Language) om WAF-logboeken te analyseren:
    • Om alle WAF-evenementen te zien: kusto AzureDiagnostiek | waarbij ResourceProvider == "MICROSOFT.NETWORK" | waarbij Categorie == "ApplicationGatewayFirewallLog" | project TimeGenerated, hostname_s, requestUri_s, Message, action_s, policy_s | bestel op TimeGenerated desc
    • Om geblokkeerde aanvallen te bekijken (als WAF in de 'Preventie'-modus staat): kusto AzureDiagnostiek | waarbij ResourceProvider == "MICROSOFT.NETWORK" | waarbij Categorie == "ApplicationGatewayFirewallLog" | waarbij action_s == "Geblokkeerd" | project TimeGenerated, hostnaam_s, requestUri_s, bericht, ruleId_s | bestel op TimeGenerated desc

Validatie en testen

Het testen van de WAF is van cruciaal belang om ervoor te zorgen dat deze de verwachte aanvallen blokkeert en geen legitiem verkeer blokkeert (false positives).

1. Veelvoorkomende aanvallen testen (SQL-injectie, XSS)

  1. Scenario: Probeer toegang te krijgen tot uw webtoepassing via de Application Gateway (met behulp van het openbare IP-adres of de FQDN) en simuleer een SQL-injectieaanval op de URL of een formulierparameter.

    • Voorbeeld-URL met poging tot SQL-injectie (niet zonder toestemming in productie uitvoeren): http://<seu_ip_publico_appgw>/index.php?id=1' OF '1'='1
    • Voorbeeld-URL met XSS-poging: http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
  2. Verwachte actie (detectiemodus): als de WAF zich in de detectiemodus bevindt, moet de aanvraag worden toegestaan, maar de WAF-logboeken in Log Analytics moeten de aanval registreren en de regel die deze heeft gedetecteerd.

  3. Verwachte actie (preventiemodus): als de WAF in de preventiemodus staat, moet het verzoek worden geblokkeerd en moet de browser een WAF-foutpagina weergeven (meestal een HTTP 403 Forbidden-fout).

  4. Verificatie: controleer de WAF-logboeken in Log Analytics om te bevestigen dat aanvallen zijn gedetecteerd (in de detectiemodus) of geblokkeerd (in de preventiemodus).

2. Aangepaste regels testen (IP-blokkering)

  1. Scenario: Probeer toegang te krijgen tot uw webapplicatie vanaf het IP-adres dat u heeft geconfigureerd in de aangepaste regel voor IP-blokkering.
  2. Verwachte actie: de toegang moet worden geblokkeerd en de browser moet een WAF-foutpagina weergeven.
  3. Verificatie: Controleer de WAF-logboeken in Log Analytics om te bevestigen dat het IP-adres is geblokkeerd door de aangepaste regel.

Beveiligingstips en best practices

  • Start in detectiemodus: Implementeer de WAF in eerste instantie altijd in de detectiemodus. Houd de logboeken zorgvuldig in de gaten om valse positieven te identificeren en pas de regels aan voordat u overschakelt naar de modus 'Preventie'.
  • WAF-afstemming: fijnafstemming is cruciaal. Schakel specifieke regels uit die valse positieven genereren (waardoor legitiem verkeer wordt geblokkeerd) of voeg uitsluitingsregels toe voor specifieke parameters. Vermijd het uitschakelen van volledige regelsets.
  • Aangepaste regels: gebruik aangepaste regels om aan de specifieke beveiligingsvereisten van uw toepassing te voldoeno of om nieuw ontdekte kwetsbaarheden te beperken voordat beheerde regels worden bijgewerkt.
  • CRS-updates: houd uw beheerde regelset (OWASP CRS) up-to-date om bescherming tegen de nieuwste bedreigingen te garanderen. Azure WAF wordt doorgaans automatisch bijgewerkt, maar controleer de versie.
  • Integratie met Azure Front Door: voor wereldwijde webtoepassingen of toepassingen waarvoor prestatie-optimalisatie en geavanceerde routering nodig zijn, kunt u overwegen WAF op Azure Front Door te implementeren. Dit biedt bescherming aan de rand van het wereldwijde netwerk van Microsoft.
  • Bewaking en waarschuwingen: configureer waarschuwingen in Azure Monitor voor WAF-beveiligingsgebeurtenissen, zoals geblokkeerde aanvallen of afwijkingen. Integreer WAF-logboeken met uw SIEM (bijvoorbeeld Microsoft Sentinel) voor een gecentraliseerd overzicht.
  • Regelmatige beveiligingstests: Voer regelmatig penetratietests en kwetsbaarheidsscans uit op uw webapplicaties om nieuwe kwetsbaarheden te identificeren en de effectiviteit van de WAF te valideren.
  • Privilege van de minste bevoegdheden: Zorg ervoor dat alleen geautoriseerde gebruikers toestemming hebben om WAF-beleid te configureren en te beheren.

Algemene probleemoplossing

  • WAF blokkeert verwachte aanvallen niet:
    • Controleer of de WAF in de 'Preventie'-modus staat en niet in de 'Detectie'-modus.
    • Zorg ervoor dat de beheerde regelset (OWASP CRS) is ingeschakeld.
    • Bekijk WAF-logboeken in Log Analytics om te zien of de aanval is gedetecteerd en welke regel is geactiveerd. Mogelijk moet u de CRS-gevoeligheid aanpassen of een aangepaste regel toevoegen.
    • Zorg ervoor dat er geen uitsluitingsregels of witte lijsten zijn die kwaadaardig verkeer toestaan.
  • WAF blokkeert legitiem verkeer (False Positives):
    • Begin met het analyseren van uw WAF-logboeken in Log Analytics om te identificeren welke regel legitiem verkeer blokkeert.
    • Voor de geïdentificeerde regel kunt u:
      • Schakel specifieke regel uit (laatste redmiddel).
      • Voeg een uitsluitingsregel toe voor de specifieke parameter of header die het fout-positief resultaat veroorzaakt.
      • Pas de afwijkingsscoredrempel aan (bij gebruik van CRS in de afwijkingsscoremodus).
    • Overweeg tijdelijk terug te keren naar de 'Detectie'-modus om de regels aan te passen.
  • Applicatieprestaties zijn verminderd na het inschakelen van WAF:
    • WAF voegt een kleine hoeveelheid latentie toe vanwege verkeersinspectie. Zorg ervoor dat de Application Gateway of Front Door de juiste grootte heeft.
    • Controleer de prestatielogboeken van Application Gateway in Azure Monitor.
  • WAF is niet gekoppeld aan de juiste applicatie:
    • Controleer of het WAF-beleid is gekoppeld aan de juiste Application Gateway of Front Door.
    • Zorg ervoor dat verkeer naar uw webapplicatie daadwerkelijk via de Application Gateway/Front Door gaat terwijl WAF is ingeschakeld.

Conclusie

Azure Web Application Firewall (WAF) is een essentiële verdediging voor het beschermen van webapplicaties tegen een groot aantal cyberaanvallen. Door een laag van verkeersinspectie en filtering aan de netwerkrand te bieden, fungeert WAF als een schild en beschermt tegen bekende kwetsbaarheden en zero-day-bedreigingen. De flexibiliteit van het gebruik van beheerde en aangepaste regelsets, samen met de native integratie met Azure Application Delivery Services, maakt Azure WAF tot een robuuste en schaalbare oplossing voor elke organisatie. Met zorgvuldige implementatie, afstemming van beleid en voortdurende monitoring kunnen beveiligingsprofessionals ervoor zorgen dat hun webapplicaties veilig, beschikbaar en compliant blijven, waardoor de algehele beveiligingshouding van de organisatie tegen het voortdurend evoluerende dreigingslandschap wordt versterkt.


Referenties:

[1] Microsoft Leer. Wat is Azure Web Application Firewall?. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] Microsoft Leer. Web Application Firewall (WAF) op Azure Application Gateway. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] Stichting OWASP. OWASPTop 10. Beschikbaar op: https://owasp.org/www-project-top-ten/ [4] Microsoft Leer. Maak een firewallbeleidWeb Application Gateway (WAF) voor Azure Application Gateway. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] Microsoft Leer. WAF CRS-regels en regelgroepen. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] Microsoft Leer. WAF-bewaking en logboekregistratie. Beschikbaar op: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics