Kennisportal
Kennisportal is een kennisplatform met een focus op de brede doelgroep Business en IT.

Beveilig je webapplicaties met een Web Application Firewall

Wil je jouw applicatie/dienst in Azure makkelijk beveiligen? Dat kan met de implementatie van een Web Application Firewall. In deze blog post legt Jeroen Niesen uit hoe je de Web Application Firewall voor je webserver uitrolt en configureert en geeft hij andere handige tips.

Web Application Firewall

Web Application Firewall (WAF) maakt deel uit van de Application Gateway (AGW). Kenmerken van deze gateway zijn onder meer:

  • Firewall-protectie (WAF) Bescherming van web-applicaties tegen de veel voorkomende, web-gebaseerde aanvallen, zoals SQL-injection, cross-site scripting-aanvallen en session hijacking.
  • HTTP load balancing – Layer 7 load balancing (alleen HTTP(S)).
  • Secure Sockets Layer (SSL) offload – Decryptie van de HTTPS-verkeer middels de Application Gateway in plaats van op de webserver. Hierdoor blijft op de webserver meer capaciteit beschikbaar voor andere applicatie-gerelateerde taken. HTTPS-verbindingen worden opgezet naar de Application Gateway. Hierna kun je ervoor kiezen om het verkeer naar de webservers te versleutelen met een eenvoudigere encryptiemethode of niet-versleuteld te laten.
  • URL-gebaseerde content routing – Hiermee kan verkeer van specifieke webfolders naar een bepaalde server (of pool van servers) routeren.

Componenten van de applicatiegateway

Application Gateway bestaat uit de volgende componenten:

  • HTTP Listener – De applicatiegateway bevindt zich tussen de internetverbinding en jouw applicatie of webserver. Alle HTTP(S)-verbindingen en content lopen via een zogeheten HTTP listener (‘luisteraar’). Deze listener kan HTTP of HTTPS zijn.
  • Front-end IP Configuratie – De IP-configuratie die door je HTTP listener gebruikt wordt (interne IP, externe IP enz.).
  • Back-end Pool – De servers, het IP-adres en de DNS-hostnaam die je back-end servers (webservers) vertegenwoordigen.
  • HTTP-setting – De instellingen die worden gebruikt om de Application Gateway verbinding te laten maken met de back-end (poortnummer, certificaat enz.).
  • Rule (regel) – De magische lijm die een HTTP listener verbindt met een back-end pool
  • Web Application Firewall – De component die al het HTTP-verkeer dat via de applicatiegateway naar de back-end pool wordt verzonden, beveiligt.

InSpark blog Web Application Firewall jeroen 1

Design

Wanneer je met een Application Gateway werkt, moet je je bewust zijn van de volgende limieten:

  • Per regio en per Azure subscription kunnen maximaal 50 Application Gateways worden ingezet.
  • Binnen een Application Gateway kunnen slechts 20 HTTP listeners worden aangemaakt. Een forward van HTTP naar HTTPS kost je één HTTP listener. Deze luistert naar poort 80 en verwijst je door naar een andere listener op poort 443.
  • Web Application Firewall instellingen worden per Application Gateway ingesteld. Dit betekent dat het wijzigen van een instelling in de WAF invloed heeft op al het verkeer (van alle HTTP listeners) dat via de applicatiegateway loopt.

InSpark blog Web Application Firewall jeroen 2
Tip:

Wanneer ik een AGW-oplossing installeer, zorg ik er altijd voor dat ik één applicatiegateway per applicatie heb. Als ik een bepaalde regel moet uitschakelen (bijvoorbeeld bij de detectie/preventie van SQL-injectieaanvallen) wil ik deze regel voor slechts één toepassing uitschakelen, niet voor alle toepassingen die gebruik maken van die Application Gateway.

Networking

De AGW-oplossing vereist een eigen subnet, waarin je uitsluitend Application Gateways kunt plaatsen. Houd er rekening mee dat je waarschijnlijk meerdere applicatiegateways in wilt zetten. Zorg er daarom voor dat je subnet groot genoeg is om al deze AGW’s te draaien. Ik probeer altijd een /26 (64 IP-adressen) te gebruiken voor applicatiegateways. Zo heb ik voldoende ruimte om meerdere applicatiegateways te laten draaien én ik heb ruimte om op te schalen.

Implementatie van de Web Applicatie Firewall

Bij deze implementatie ga ik ervan uit dat er al een webserver draait. De Applicatie Gateway wordt geimplementeerd in dezelfde Azure subscription en netwerk (VNET) als waar de webserver staat. Ik heb ook een subnet beschikbaar gesteld in mijn VNET voor applicatiegateways. Dit is enkel een leeg /26 subnet.

De applicatiegateway aanmaken

  1. Klik op de knop ‘Bron toevoegen’ (Add Resource), zoek naar ‘Application Gateway’ en selecteer deze in de zoekresultaten. In het tabblad dat dan verschijnt, klik je op Aanmaken (‘Create’).InSpark blog Web Application Firewall jeroen 3-5
  2. Vul in het formulier de volgende waarden in:
  • Name: <benoem je AGW>
  • Tier: WAF
  • Amount instances: 2
  • Subscription: <jouw Azure Subscription>
  • Resource Group: <Naam voor jouw resource group >
  • Location: <Locatie waar je de AGW wilt laten draaien>

3. Klik op OK.

InSpark blog Web Application Firewall jeroen 4-5

4. Vul op het volgende formulier deze waarden in:

  • Virtual Network: <Het virtuele netwerk waarin het AGW subnet beschikbaar is>
  • Subnet: <Jouw subnet voor AGWs>
  • Front-end Configuration: Maak een nieuw openbaar IP-address aan
  • Listener: HTTP
  • Port: 80
  • Firewall Status: Enabled
  • Firewall Mode: Prevention

5. Klik op OK.

6. Klik nogmaals op OK.

De Application Gateway wordt nu uitgerold. Dit kan een paar minuten duren.

De applicatiegateway configureren

Nu de applicatiegateway is geïnstalleerd, is het tijd om deze te configureren. De applicatiegateway wordt uitgerold met een kant-en-klare configuratie. Om de Web Application Firewall te laten draaien, hoeven we alleen de back-end pool aan te passen. In deze tutorial maak ik dus gebruik van de standaardconfiguratie en verander daarbij enkel de back-end pool.

  1. In het Azure Portaal navigeer je naar de applicatiegateway die je zojuist hebt geïnstalleerd. Dit kan heel eenvoudig, door op de knop ‘All Services’ te klikken en te zoeken naar ‘Application Gateways’. In het venster dat nu wordt geopend, vind je je aangemaakte AGW.
  2. Klik op appGatewayBackendPool
  3. Zorg ervoor dat het endpoint naar je webserver verwijst. Dit kan een in Azure draaiende VM zijn of een openbaar IP-adres.
  4. Klik op ‘Opslaan’

Je applicatiegateway is nu geconfigureerd. Nu zou deze moeten werken!

De applicatiegateway testen

Nu de applicatiegateway correct is geconfigureerd, is het tijd om te testen. Je kunt de AGW eenvoudig testen door naar het openbare IP-adres van je AGW te navigeren.

  1. In het Azure Portaal navigeer je naar de applicatiegateway die je zojuist hebt geïnstalleerd. (zoals hiervoor: klik op de knop ‘Alle Services’ en zoek de AGW)
  2. In het overzichtstabblad vind je het openbare IP-adres van de applicatiegateway. Navigeer met een webbrowser naar dit IP-adres en je zult zien dat je website werkt.

InSpark blog Web Application Firewall jeroen 6

Tip:

In deze tutorial heb ik je laten zien hoe je de Web Application Firewall op de meest eenvoudige manier kunt implementeren. Dit is een heel goede implementatie om de AGW/WAF te testen en om deze te leren kennen. Als je een applicatiegateway voor een productieomgeving wilt inzetten, raad ik je sterk aan om je eigen listeners, rules, etc. te creëren. Hierdoor kun je meer geavanceerde zaken zoals HTTPS-verbindingen instellen.

Conclusie

De Web Application Firewall in de applicatiegateway is een mooie resource om mee te werken, maar er zijn wel een aantal zaken die je in gedachten moet houden, wanneer je je eigen oplossing ontwerpt. Houd dan vooral rekening met het volgende:

  • Instellingen op de WAF gelden voor alle listeners in de applicatiegateway. Als je één applicatiegateway gebruikt om meerdere applicaties beveiligen, kun je de WAF-instellingen niet per applicatie regelen.
  • Je moet een Application Gateway-subnet in je VNET hebben, waarin je uitsluitend applicatiegateways laat draaien. De grootte van dit subnet is achteraf nog aan te passen. Je kunt dus beginnen met een kleiner subnet en dit later uitbreiden als je de limieten hebt bereikt.