Delen via


Azure Web Application Firewall afstemmen voor 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 of fout-positieven veroorzaken.

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 aanvraag blokkeert die niet (een fout-positief) zou moeten zijn, kunt u een aantal dingen doen.

Besmal eerst de specifieke aanvraag en zoek deze. 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 fout-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 regelovereenkomst. 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 is /api/Feedbacks/ ingediend. 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 de aanvraag is geblokkeerd door de WAF omdat de policyMode aanvraag 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 deze logboeken zien, 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 het afhandelen van 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 technologiestack is en dat u fout-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:

  • Uitsluitingslijsten gebruiken. Zie Azure Web Application Firewall met Azure Front Door-uitsluitingslijsten voor meer informatie over uitsluitingslijsten.
  • WAF-acties wijzigen. Zie WAF-acties voor meer informatie over welke acties kunnen worden uitgevoerd wanneer een aanvraag overeenkomt met de voorwaarden van een regel.
  • Aangepaste regels gebruiken. Zie Aangepaste regels voor Azure Web Application Firewall met Azure Front Door voor meer informatie over aangepaste regels.
  • Regels uitschakelen.

Fooi

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 overeenkomstvariabele die u selecteert om uit te sluiten, niet meer wordt geïnspecteerd voor die opgegeven aanvraag. 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 naam van de overeenkomstvariabele aanvraagtekst uitsluiten die de naam bevat comment. U ziet de details van de overeenkomstvariabele in het firewalllogboek: "matchVariableName": "PostParamValue:comment". Het kenmerk is comment. U kunt deze kenmerknaam ook op een paar andere manieren vinden. Zie De namen van aanvraagkenmerken zoeken voor meer informatie.

Screenshot that shows exclusion rules.

Screenshot that shows rule exclusion for a specific rule.

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 doorgegeven als een aanvraagcooky.

In sommige gevallen waarin cookies worden uitgeschakeld, wordt dit token ook doorgegeven als argument voor het plaatsen van aanvragen. Om deze reden moet u ervoor zorgen dat __RequestVerificationToken microsoft Entra-token fout-positieven worden toegevoegd aan de uitsluitingslijst voor zowel RequestCookieNamesRequestBodyPostArgsNamesals .

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.

Screenshot that shows rule exclusion for a rule set.

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.

Screenshot that shows WAF actions.

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 Logboek aan in plaats van Blokkeren. 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.

Screenshot that shows a log showing multiple rule matches.

U kunt nu een andere SQLI-regelovereenkomst zien die milliseconden optreedt nadat regel-id 942110 is verwerkt. Dezelfde aanvraag komt overeen met regel-id 942310 en deze keer is het standaardactieblok 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 vastgesteld wat een WAF-regelovereenkomst veroorzaakt, kunt u aangepaste regels gebruiken om aan te passen hoe de WAF reageert op de gebeurtenis. Aangepaste regels worden verwerkt vóór beheerde regels. Ze kunnen meer dan één voorwaarde bevatten en hun acties kunnen toestaan, weigeren, logboeken of omleiden zijn.

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 de meest gedetailleerde, zodat u uw WAF-regels kunt verfijnen en fout-positieven kunt behandelen. In dit geval neemt u niet alleen actie op basis van de waarde van de comment aanvraagbody, die kan bestaan op meerdere sites of apps onder hetzelfde WAF-beleid.

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.

Screenshot that shows a log.

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 fout-positief te omzeilen, is door de regel uit te schakelen die overeenkomt met de invoer waarvan de WAF dacht dat het kwaadaardig was. 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.

Screenshot that shows WAF rules.

Fooi

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.

Screenshot that shows the body of a Fiddler request.

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:

Screenshot that shows an exclusion rule.

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 aanvraagtekst uit te sluiten die de naam bevat comment.

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.

Screenshot that shows the header of a Fiddler request.

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 voor ontwikkelaars controleren>klikken. Selecteer het tabblad Netwerk . Laad een webpagina en selecteer de aanvraag die u wilt inspecteren.

Screenshot that shows a Network inspector request.

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.

Afwijkingsscoreregel

Als u regel-id 949110 ziet tijdens het afstemmen van uw WAF, geeft de aanwezigheid ervan aan dat de aanvraag is geblokkeerd door het anomaliescoreproces .

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.

Volgende stappen