Delen via


Azure Web Application Firewall (WAF) afstemmen op Azure Front Door

De door Microsoft beheerde standaardregelset is gebaseerd op de OWASP Core Rule Set en bevat verzamelingsregels voor Microsoft Threat Intelligence.

Er wordt vaak verwacht dat WAF-regels (Web Application Firewall) moeten worden afgestemd op de specifieke behoeften van de toepassing of organisatie die de WAF gebruikt. Organisaties bereiken meestal afstemming door een van de volgende acties uit te voeren:

  • Regeluitsluitingen definiëren.
  • Aangepaste regels maken.
  • Regels uitschakelen die mogelijk problemen veroorzaken of false positives genereren.

In dit artikel wordt beschreven wat u kunt doen als aanvragen die via uw WAF moeten worden doorgegeven, worden geblokkeerd.

Notitie

De door Microsoft beheerde regelset is niet beschikbaar voor de Azure Front Door Standard-SKU. Zie Functievergelijking tussen lagen voor meer informatie over de verschillende laag-SKU's.

Lees het overzicht van Azure Front Door WAF en het WAF-beleid voor Azure Front Door-documenten . Schakel ook WAF-bewaking en logboekregistratie in. In deze artikelen wordt uitgelegd hoe de WAF-functies, hoe de WAF-regelsets werken en hoe u toegang krijgen tot WAF-logboeken.

WAF-logboeken begrijpen

Het doel van WAF-logboeken is om elke aanvraag weer te geven die overeenkomt met of wordt geblokkeerd door de WAF. Het is een verzameling van alle geëvalueerde aanvragen die overeenkomen of worden geblokkeerd. Als u merkt dat de WAF een verzoek blokkeert dat het niet zou moeten blokkeren (een vals-positief), kunt u een aantal dingen doen.

Beperk en identificeer eerst de specifieke aanvraag. U kunt een aangepast antwoordbericht configureren om het trackingReference veld op te nemen om de gebeurtenis eenvoudig te identificeren en een logboekquery uit te voeren op die specifieke waarde. Bekijk de logboeken om de specifieke URI, tijdstempel of client-IP van de aanvraag te vinden. Wanneer u de gerelateerde logboekvermeldingen vindt, kunt u reageren op vals-positieven.

Stel dat u legitiem verkeer hebt dat de tekenreeks 1=1 bevat die u wilt doorgeven via uw WAF. De aanvraag ziet er als volgt uit:

POST http://afdwafdemosite.azurefd.net/api/Feedbacks HTTP/1.1
Host: afdwafdemosite.azurefd.net
Content-Type: application/x-www-form-urlencoded
Content-Length: 55

UserId=20&captchaId=7&captchaId=15&comment="1=1"&rating=3

Als u de aanvraag probeert, blokkeert WAF verkeer dat uw 1=1 tekenreeks bevat in een parameter of veld. Deze tekenreeks is vaak gekoppeld aan een SQL-injectieaanval. U kunt de logboeken bekijken en de tijdstempel van de aanvraag en de regels bekijken die zijn geblokkeerd of overeenkomen.

In het volgende voorbeeld ziet u een logboekvermelding die is gegenereerd op basis van een regelmatch. U kunt de volgende Log Analytics-query gebruiken om aanvragen te vinden die de afgelopen 24 uur zijn geblokkeerd.

AzureDiagnostics
| where Category == 'FrontDoorWebApplicationFirewallLog'
| where TimeGenerated > ago(1d)
| where action_s == 'Block'
AzureDiagnostics
| where Category == 'FrontdoorWebApplicationFirewallLog'
| where TimeGenerated > ago(1d)
| where action_s == 'Block'

In het requestUri veld ziet u dat de aanvraag specifiek aan /api/Feedbacks/ is gericht. Ga verder en zoek de regel-id 942110 in het ruleName veld. Als u de regel-id kent, kunt u naar de officiële opslagplaats van de OWASP ModSecurity Core Rule Set gaan en op die regel-id zoeken om de code te controleren en precies te begrijpen waar deze regel op overeenkomt.

Als u vervolgens het action veld controleert, ziet u dat deze regel is ingesteld om aanvragen te blokkeren bij overeenkomende aanvragen. U kunt bevestigen dat het verzoek is geblokkeerd door de WAF omdat de policyMode is ingesteld op prevention.

Controleer nu de informatie in het details veld. In dit veld kunt u de matchVariableName en de matchVariableValue informatie zien. Deze regel is geactiveerd omdat iemand invoert 1=1 in het comment veld van de web-app.

{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Cdn/Profiles/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}
{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoor/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}

Er is ook waarde bij het controleren van de toegangslogboeken om uw kennis over een bepaalde WAF-gebeurtenis uit te breiden. Controleer vervolgens het logboek dat is gegenereerd als reactie op de voorgaande gebeurtenis.

U kunt zien dat deze logboeken verwant zijn, omdat de trackingReference waarde hetzelfde is. Onder verschillende velden die algemeen inzicht bieden, zoals userAgent en clientIP, let op de httpStatusCode en httpStatusDetails velden. Hier ziet u dat de client een HTTP 403-antwoord heeft ontvangen, waarmee wordt bevestigd dat deze aanvraag is geweigerd en geblokkeerd.

{
    "time": "2020-09-24T16:43:04.5430764Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorAccessLog",
    "operationName": "Microsoft.Cdn/Profiles/AccessLog/Write",
    "properties": {
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "httpMethod": "POST",
        "httpVersion": "1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "requestBytes": "2160",
        "responseBytes": "324",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
        "clientIp": "1.1.1.1",
        "socketIp": "1.1.1.1",
        "clientPort": "53566",
        "timeToFirstByte": "0.01",
        "timeTaken": "0.011",
        "securityProtocol": "",
        "routingRuleName": "DemoBERoutingRule",
        "rulesEngineMatchNames": [],
        "backendHostname": "13.88.65.130:3000",
        "isReceivedFromClient": true,
        "httpStatusCode": "403",
        "httpStatusDetails": "403",
        "pop": "WST",
        "cacheStatus": "CONFIG_NOCACHE"
    }
}
{
    "time": "2020-09-24T16:43:04.5430764Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorAccessLog",
    "operationName": "Microsoft.Network/FrontDoor/AccessLog/Write",
    "properties": {
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "httpMethod": "POST",
        "httpVersion": "1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "requestBytes": "2160",
        "responseBytes": "324",
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36",
        "clientIp": "1.1.1.1",
        "socketIp": "1.1.1.1",
        "clientPort": "53566",
        "timeToFirstByte": "0.01",
        "timeTaken": "0.011",
        "securityProtocol": "",
        "routingRuleName": "DemoBERoutingRule",
        "rulesEngineMatchNames": [],
        "backendHostname": "13.88.65.130:3000",
        "isReceivedFromClient": true,
        "httpStatusCode": "403",
        "httpStatusDetails": "403",
        "pop": "WST",
        "cacheStatus": "CONFIG_NOCACHE"
    }
}

Fout-positieven oplossen

Als u een weloverwogen beslissing wilt nemen over hoe om te gaan met een fout-positief, is het belangrijk om vertrouwd te raken met de technologieën die door uw toepassing worden gebruikt. Stel dat er geen SQL-server in uw technologische stack is en dat u vals-positieven krijgt met betrekking tot deze regels. Als u deze regels uitschakelt, verzwakt u uw beveiliging niet per se.

Met deze informatie en de kennis dat regel 942110 de regel is die overeenkomt met de 1=1 tekenreeks in het voorbeeld, kunt u een aantal dingen doen om te voorkomen dat deze legitieme aanvraag wordt geblokkeerd:

Tip

Wanneer u een benadering selecteert om legitieme aanvragen via de WAF toe te staan, probeert u deze zo smal mogelijk te maken. Het is bijvoorbeeld beter om een uitsluitingslijst te gebruiken dan een regel volledig uit te schakelen.

Uitsluitingslijsten gebruiken

Een voordeel van het gebruik van een uitsluitingslijst is dat alleen de variabele die u selecteert om uit te sluiten niet langer wordt geïnspecteerd voor dat specifieke verzoek. Dat wil gezegd, u kunt kiezen tussen specifieke aanvraagheaders, aanvraagcookies, queryreeksargumenten of aanvraagtekstpostargumenten die moeten worden uitgesloten als aan een bepaalde voorwaarde wordt voldaan, in plaats van dat de hele aanvraag niet wordt geïnspecteerd. De andere niet-opgegeven variabelen van de aanvraag worden normaal geïnspecteerd.

Uitsluitingen zijn een globale instelling. De geconfigureerde uitsluiting is van toepassing op al het verkeer dat uw WAF passeert, niet alleen op een specifieke web-app of URI. Dit kan bijvoorbeeld een probleem zijn als 1=1 het om een geldige aanvraag in de hoofdtekst van een bepaalde web-app gaat, maar niet voor anderen onder hetzelfde WAF-beleid.

Als het zinvol is om verschillende uitsluitingslijsten voor verschillende toepassingen te gebruiken, kunt u verschillende WAF-beleidsregels voor elke toepassing gebruiken en deze toepassen op de front-end van elke toepassing.

Wanneer u uitsluitingslijsten voor beheerde regels configureert, kunt u ervoor kiezen om het volgende uit te sluiten:

  • Alle regels binnen een regelset.
  • Alle regels binnen een regelgroep.
  • Een afzonderlijke regel.

U kunt een uitsluitingslijst configureren met behulp van PowerShell, de Azure CLI, de REST API, Bicep, Azure Resource Manager-sjablonen of Azure Portal.

  • Uitsluitingen op regelniveau: Uitsluitingen toepassen op regelniveau betekent dat de opgegeven uitsluitingen niet alleen worden geanalyseerd op basis van die afzonderlijke regel. Deze wordt nog steeds geanalyseerd door alle andere regels in de regelset. Dit is het meest gedetailleerde niveau voor uitsluitingen. U kunt deze gebruiken om de beheerde regelset af te stemmen op basis van de informatie die u in de WAF-logboeken vindt wanneer u problemen met een gebeurtenis oplost.
  • Uitsluitingen op regelgroepsniveau: Uitsluitingen toepassen op regelgroepsniveau betekent dat de opgegeven uitsluitingen niet worden geanalyseerd op die specifieke set regeltypen. Als u bijvoorbeeld SQLI selecteert als een uitgesloten regelgroep, wordt aangegeven dat de gedefinieerde aanvraaguitsluitingen niet worden geïnspecteerd door een van de specifieke SQLI-regels. Deze wordt nog steeds gecontroleerd door regels in andere groepen, zoals PHP, RFI of XSS. Dit type uitsluiting kan handig zijn wanneer u zeker weet dat de toepassing niet vatbaar is voor specifieke soorten aanvallen. Een toepassing die geen SQL-databases heeft, kan bijvoorbeeld alle SQLI-regels uitsluiten zonder dat dit schadelijk is voor het beveiligingsniveau.
  • Uitsluitingen op regelsetniveau: Uitsluitingen toepassen op regelsetniveau betekent dat de opgegeven uitsluitingen niet worden geanalyseerd op basis van een van de beveiligingsregels die beschikbaar zijn in die regelset. Deze uitsluiting is uitgebreid, dus gebruik deze zorgvuldig.

In dit voorbeeld voert u een uitsluiting uit op het meest gedetailleerde niveau door een uitsluiting toe te passen op één regel. U wilt de overeenkomstvariabele Request body post args name uitsluiten die comment bevat. U kunt de details van de vergelijkingsvariabele in het firewalllogboek zien: "matchVariableName": "PostParamValue:comment". Het kenmerk is comment. U kunt deze kenmerknaam ook op een paar andere manieren vinden. Zie Aanvraagkenmerknaam vinden voor meer informatie.

Schermopname van uitsluitingsregels.

Schermopname van regeluitsluiting voor een specifieke regel.

Soms zijn er gevallen waarin specifieke parameters worden doorgegeven aan de WAF op een manier die mogelijk niet intuïtief is. Een token wordt bijvoorbeeld doorgegeven wanneer u zich verifieert met behulp van Microsoft Entra-id. Het token __RequestVerificationToken wordt meestal meegestuurd als een aanvraagcookie.

In sommige gevallen waarin cookies worden uitgeschakeld, wordt dit token ook doorgegeven als argument voor het plaatsen van aanvragen. Zorg er daarom voor dat __RequestVerificationToken wordt toegevoegd aan de uitsluitingslijst voor zowel RequestCookieNames als RequestBodyPostArgsNames om Microsoft Entra-token false positives aan te pakken.

Uitsluitingen op een veldnaam (Selector) betekent dat de waarde niet meer wordt geëvalueerd door de WAF. De veldnaam zelf wordt nog steeds geëvalueerd en in zeldzame gevallen kan deze overeenkomen met een WAF-regel en een actie activeren.

Schermopname van regeluitsluiting voor een regelset.

WAF-acties wijzigen

Een andere manier om het gedrag van WAF-regels af te handelen, is door de actie te kiezen die wordt uitgevoerd wanneer een aanvraag overeenkomt met de voorwaarden van een regel. De beschikbare acties zijn Toestaan, Blokkeren, Registreren en Omleiden.

In dit voorbeeld is de standaardactie Blokkeren gewijzigd in de actie Logboek op regel 942110. Deze actie zorgt ervoor dat de WAF de aanvraag vastzet en dezelfde aanvraag blijft evalueren op basis van de resterende regels met lagere prioriteit.

Schermopname van WAF-acties.

Nadat u dezelfde aanvraag hebt uitgevoerd, kunt u teruggaan naar de logboeken en zien dat deze aanvraag overeenkomt met regel-id 942110. Het action_s veld geeft nu Log aan in plaats van Blok. De logboekquery is vervolgens uitgebreid om de trackingReference_s informatie op te nemen om te zien wat er nog meer met deze aanvraag is gebeurd.

Schermopname van een logboek met meerdere regelovereenkomsten.

U kunt nu een andere SQLI-regelovereenkomst zien die milliseconden nadat regel-ID 942110 is verwerkt optreedt. Dezelfde aanvraag kwam overeen met regel-id 942310 en deze keer werd de standaardactie Block geactiveerd.

Een ander voordeel van het gebruik van de actie Logboek tijdens het afstemmen of oplossen van problemen met WAF is dat u kunt bepalen of meerdere regels binnen een specifieke regelgroep overeenkomen en een bepaalde aanvraag blokkeren. Vervolgens kunt u uw uitsluitingen maken op het juiste niveau, dat wil gezegd, op regel- of regelgroepsniveau.

Aangepaste regels gebruiken

Nadat u hebt geïdentificeerd wat een WAF-regel match veroorzaakt, kunt u aangepaste regels gebruiken om te bepalen hoe de WAF op de gebeurtenis reageert. Aangepaste regels worden verwerkt vóór beheerde regels. Ze kunnen meer dan één voorwaarde bevatten en hun acties kunnen toestaan, weigeren, loggen of omleiden.

Waarschuwing

Wanneer een aanvraag overeenkomt met een aangepaste regel, stopt de WAF-engine met het verwerken van de aanvraag. Beheerde regels worden niet verwerkt voor deze aanvraag en geen van beide andere aangepaste regels met een lagere prioriteit.

In het volgende voorbeeld ziet u een aangepaste regel met twee voorwaarden. De eerste voorwaarde zoekt naar de comment waarde in de aanvraagbody. Met de tweede voorwaarde wordt gezocht naar de /api/Feedbacks/ waarde in de aanvraag-URI.

Met behulp van een aangepaste regel kunt u uw WAF-regels tot in detail verfijnen en valse positieven aanpakken. In dit geval neemt u niet alleen actie op basis van de waarde van de comment aanvraagbody, die kan voorkomen op meerdere sites of apps die onder hetzelfde WAF-beleid vallen.

Wanneer u een andere voorwaarde opneemt die ook overeenkomt met een bepaalde aanvraag-URI /api/Feedbacks/, zorgt u ervoor dat deze aangepaste regel echt van toepassing is op deze expliciete use case die u hebt gecontroleerd. Op deze manier wordt dezelfde aanval, indien uitgevoerd tegen verschillende omstandigheden, nog steeds geïnspecteerd en voorkomen door de WAF-engine.

Schermopname van een logboek.

Wanneer u het logboek verkent, ziet u dat het ruleName_s veld de naam bevat die aan de aangepaste regel redirectcommentis gegeven. In het action_s veld ziet u dat de omleidingsactie is uitgevoerd voor deze gebeurtenis. In het details_matches_s veld ziet u de details voor beide voorwaarden.

Regels uitschakelen

Een andere manier om een false positive te omzeilen, is door de regel uit te schakelen die overeenkwam met de invoer die de WAF als kwaadaardig beschouwde. Omdat u de WAF-logboeken hebt geparseerd en de regel hebt beperkt tot 942110, kunt u deze uitschakelen in Azure Portal. Zie Azure Web Application Firewall-regels aanpassen met behulp van Azure Portal voor meer informatie.

Het uitschakelen van een regel is een voordeel wanneer u zeker weet dat alle aanvragen die voldoen aan die specifieke voorwaarde legitieme aanvragen zijn, of wanneer u zeker weet dat de regel niet van toepassing is op uw omgeving (zoals het uitschakelen van een SQL-injectieregel omdat u niet-SQL-back-ends hebt).

Het uitschakelen van een regel is een globale instelling die van toepassing is op alle front-endhosts die zijn gekoppeld aan het WAF-beleid. Wanneer u ervoor kiest om een regel uit te schakelen, kunt u beveiligingsproblemen blootstellen zonder beveiliging of detectie voor andere front-endhosts die zijn gekoppeld aan het WAF-beleid.

Als u Azure PowerShell wilt gebruiken om een beheerde regel uit te schakelen, raadpleegt u de PSAzureManagedRuleOverride objectdocumentatie. Als u de Azure CLI wilt gebruiken, raadpleegt u de az network front-door waf-policy managed-rules override documentatie.

Tip

Documenteer alle wijzigingen die u aanbrengt in uw WAF-beleid. Neem voorbeeldaanvragen op om de fout-positieve detectie te illustreren. Leg uit waarom u een aangepaste regel hebt toegevoegd, een regel of regelset hebt uitgeschakeld of een uitzondering hebt toegevoegd. Als u uw toepassing in de toekomst opnieuw ontwerpt, moet u mogelijk controleren of uw wijzigingen nog geldig zijn. U kunt ook worden gecontroleerd of moet rechtvaardigen waarom u het WAF-beleid opnieuw hebt geconfigureerd vanuit de standaardinstellingen.

Aanvraagvelden zoeken

Met behulp van een browserproxy zoals Fiddler kunt u afzonderlijke aanvragen inspecteren en bepalen welke specifieke velden van een webpagina worden aangeroepen. Deze techniek is handig wanneer u bepaalde velden wilt uitsluiten van inspectie met behulp van uitsluitingslijsten in de WAF.

Namen van aanvraagkenmerken zoeken

In dit voorbeeld wordt het veld waarin de 1=1 tekenreeks is ingevoerd, aangeroepen comment. Deze gegevens zijn doorgegeven in de hoofdtekst van een POST-aanvraag.

Schermopname van de hoofdtekst van een Fiddler-aanvraag.

U kunt dit veld uitsluiten. Zie Uitsluitingslijsten van Web Application Firewall voor meer informatie over uitsluitingslijsten. U kunt de evaluatie in dit geval uitsluiten door de volgende uitsluiting te configureren:

Schermopname van een uitsluitingsregel.

U kunt ook de firewalllogboeken bekijken om de informatie op te halen die u moet toevoegen aan de uitsluitingslijst. Zie Metrische gegevens en logboeken bewaken in Azure Front Door om logboekregistratie in te schakelen.

Controleer het firewalllogboek in het PT1H.json bestand voor het uur dat de aanvraag die u wilt inspecteren is opgetreden. De PT1H.json bestanden zijn beschikbaar in de opslagaccountcontainers waar de FrontDoorWebApplicationFirewallLog en de FrontDoorAccessLog diagnostische logboeken worden opgeslagen.

Controleer het firewalllogboek in het PT1H.json bestand voor het uur dat de aanvraag die u wilt inspecteren is opgetreden. De PT1H.json bestanden zijn beschikbaar in de opslagaccountcontainers waar de FrontdoorWebApplicationFirewallLog en de FrontdoorAccessLog diagnostische logboeken worden opgeslagen.

In dit voorbeeld ziet u de regel die de aanvraag heeft geblokkeerd (met dezelfde transactiereferentie) en die tegelijkertijd heeft plaatsgevonden.

{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.CDN/PROFILES/AFDWAFDEMOSITE",
    "category": "FrontDoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Cdn/Profiles/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}
{
    "time": "2020-09-24T16:43:04.5422943Z",
    "resourceId": "/SUBSCRIPTIONS/<Subscription ID>/RESOURCEGROUPS/<Resource Group Name>/PROVIDERS/MICROSOFT.NETWORK/FRONTDOORS/AFDWAFDEMOSITE",
    "category": "FrontdoorWebApplicationFirewallLog",
    "operationName": "Microsoft.Network/FrontDoor/WebApplicationFirewallLog/Write",
    "properties": {
        "clientIP": "1.1.1.1",
        "clientPort": "53566",
        "socketIP": "1.1.1.1",
        "requestUri": "http://afdwafdemosite.azurefd.net:80/api/Feedbacks/",
        "ruleName": "DefaultRuleSet-1.0-SQLI-942110",
        "policy": "AFDWAFDemoPolicy",
        "action": "Block",
        "host": "afdwafdemosite.azurefd.net",
        "trackingReference": "0mMxsXwAAAABEalekYeI4S55qpi5R7R0/V1NURURHRTA4MTIAZGI4NGQzZDgtNWQ5Ny00ZWRkLTg2ZGYtZDJjNThlMzI2N2I4",
        "policyMode": "prevention",
        "details": {
            "matches": [
                {
                    "matchVariableName": "PostParamValue:comment",
                    "matchVariableValue": "\"1=1\""
                }
            ],
            "msg": "SQL Injection Attack: Common Injection Testing Detected",
            "data": "Matched Data: \"1=1\" found within PostParamValue:comment: \"1=1\""
        }
    }
}

Met uw kennis van hoe de door Azure beheerde regelsets werken, weet u dat de regel met de action: Block eigenschap wordt geblokkeerd op basis van de gegevens die in de aanvraagbody overeenkomen. (Zie voor meer informatie Azure Web Application Firewall in Azure Front Door.) U kunt zien in de details dat het overeenkomt met een patroon (1=1) en het veld heet comment. Volg dezelfde vorige stappen om de naam van de postargs van het verzoeklichaam uit te sluiten die comment bevat.

Namen van aanvraagheaders zoeken

Fiddler is een handig hulpmiddel om namen van aanvraagheaders te vinden. In de volgende schermopname ziet u de headers voor deze GET-aanvraag, waaronder Content-Type en User-Agent. U kunt ook aanvraagheaders gebruiken om uitsluitingen en aangepaste regels in de WAF te maken.

Schermopname van de header van een Fiddler-aanvraag.

Een andere manier om aanvraag- en antwoordheaders weer te geven, is door te kijken in de ontwikkelhulpprogramma's van uw browser, zoals Microsoft Edge of Chrome. U kunt F12 selecteren of met de rechtermuisknop op Hulpprogramma's>klikken. Selecteer het tabblad Netwerk . Laad een webpagina en selecteer de aanvraag die u wilt inspecteren.

Schermopname van een netwerkcontroleaanvraag.

Als de aanvraag cookies bevat, selecteert u het tabblad Cookies om deze in Fiddler weer te geven. Cookie-informatie kan ook worden gebruikt om uitsluitingen of aangepaste regels in de WAF te maken.

Afwijkingsscore-regel

Als u regel-ID 949110 ziet tijdens het tunen van uw WAF, geeft de aanwezigheid ervan aan dat de aanvraag is geblokkeerd door het anomaliescoringsproces.

Controleer de andere WAF-logboekvermeldingen voor dezelfde aanvraag door te zoeken naar de logboekvermeldingen met dezelfde traceringsreferentie. Bekijk elk van de regels die zijn geactiveerd. Stem elke regel af door de richtlijnen in dit artikel te volgen.

Waarschuwing

Wanneer u een nieuwe beheerde regelset toewijst aan een WAF-beleid, worden alle vorige aanpassingen van de bestaande beheerde regelsets, zoals regelstatus, regelacties en uitsluitingen op regelniveau, opnieuw ingesteld op de standaardwaarden van de nieuwe beheerde regelset. Aangepaste regels en beleidsinstellingen blijven echter ongewijzigd tijdens de toewijzing van de nieuwe regelset.

Volgende stappen