Surveillance et journalisation du pare-feu d’applications web Azure
Azure Web Application Firewall sur Azure Front Door fournit une journalisation et une télémétrie complètes pour vous aider à comprendre les performances de votre pare-feu d’application web (WAF) et les actions qu’il entreprend.
Le journal WAF Azure Front Door est intégré à Azure Monitor. Azure Monitor vous permet de suivre les informations de diagnostic, notamment les alertes et journaux WAF. Vous pouvez configurer l’analyse WAF dans la ressource Azure Front Door du portail Azure sous l’onglet Diagnostics, via des approches d’infrastructure en tant que code, ou en utilisant directement Azure Monitor.
Azure Front Door enregistre automatiquement des métriques pour vous aider à comprendre le comportement de votre WAF.
Pour accéder aux métriques de votre WAF :
- Connectez-vous au portail Azure et accédez à votre profil Azure Front Door.
- Dans le volet le plus à gauche, sous Analyse, sélectionnez l’onglet Métriques.
- Ajoutez la métrique Nombre de requêtes Web Application Firewall pour suivre le nombre de requêtes qui correspondent aux règles WAF.
Vous pouvez créer des filtres personnalisés en fonction des types d’action et des noms de règle. Les métriques incluent les requêtes avec toutes les actions, sauf le Log
.
Pour accéder à vos métriques WAF de défi JavaScript :
- Ajoutez le pare-feu d’applications web
JS Challenge Request Count
métrique pour suivre le nombre de requêtes qui correspondent aux règles WAF de défi JavaScript.
Les filtres suivants sont fournis dans le cadre de cette métrique :
- PolicyName : il s’agit du nom de la stratégie WAF
- Rule : il peut s’agir d’une règle personnalisée ou d’une règle de bot
- Action : il existe quatre valeurs possibles pour l’action du défi JS
- Issued : le défi JS est appelé la première fois
- Passed : le calcul du défi JS a réussi et une réponse a été reçue
- Valid : le cookie de validité du défi JS était présent
- Blocked : échec du calcul du défi JS
Le WAF Azure Front Door fournit des rapports détaillés sur chaque requête et chaque menace qu’il détecte. La journalisation est intégrée aux journaux et alertes de diagnostic Azure à l’aide des journaux Azure Monitor.
Les journaux ne sont pas activés par défaut. Vous devez activer explicitement les journaux d’activité. Vous pouvez configurer les journaux dans le Portail Azure à l’aide de l’onglet Paramètres de diagnostic.
Si la journalisation est activée et qu’une règle WAF est déclenchée, tous les modèles correspondants sont enregistrés en texte brut pour vous aider à analyser et à déboguer le comportement de la stratégie WAF. Vous pouvez utiliser des exclusions pour affiner les règles et exclure toutes les données que vous souhaitez exclure des journaux. Pour plus d’informations, consultez Listes d'exclusions du pare-feu d’applications web dans Azure Front Door.
Vous pouvez activer trois types de journaux Azure Front Door :
- Journaux WAF
- Accéder aux journaux
- Journaux de sonde d’intégrité
Les journaux d’activité sont activés par défaut et fournissent une visibilité sur les opérations effectuées sur vos ressources Azure, comme les modifications de configuration apportées à votre profil Azure Front Door.
Le journal FrontDoorWebApplicationFirewallLog
inclut les requêtes qui correspondent à une règle WAF.
Le journal FrontdoorWebApplicationFirewallLog
inclut toutes les requêtes qui correspondent à une règle WAF.
Le tableau suivant présente les valeurs consignées pour chaque requête.
Propriété | Description |
---|---|
Action | Action effectuée sur la requête. Les journaux incluent des demandes avec toutes les actions. Les actions sont les suivantes :
|
ClientIP | Adresse IP du client à l’origine de la demande. S’il existait un en-tête X-Forwarded-For dans la requête, l’adresse IP du client est plutôt reprise dans ce champ d’en-tête. |
ClientPort | Adresse IP du port du client qui a effectué la requête. |
Détails | Plus de détails sur la requête, notamment les menaces qui ont été détectées. matchVariableName : Nom du paramètre HTTP de la requête correspondant, par exemple, noms d’en-tête (100 caractères maximum).matchVariableValue : Valeurs qui ont déclenché la correspondance (jusqu’à 100 caractères maximum). |
Host | En-tête Host de la requête. |
Policy | Nom de la stratégie WAF correspondant à la requête. |
PolicyMode | Mode d’opération de la stratégie WAF. Les valeurs possibles sont Prevention et Detection . |
RequestUri | URI complet de la requête. |
RuleName | Nom de la règle WAF correspondant à la requête. |
SocketIP | Adresse IP source vue par WAF. Cette adresse IP est basée sur la session TCP et ne prend pas en compte les en-têtes de requête. |
TrackingReference | Chaîne de référence unique qui identifie une requête prise en charge par Azure Front Door. Cette valeur est envoyée au client dans l’en-tête de réponse X-Azure-Ref . Utilisez ce champ lorsque vous recherchez une requête spécifique dans le journal. |
L’exemple de requête suivant présente les requêtes que le WAF Azure Front Door a bloquées :
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.CDN" and Category == "FrontDoorWebApplicationFirewallLog"
| where action_s == "Block"
AzureDiagnostics
| where ResourceType == "FRONTDOORS" and Category == "FrontdoorWebApplicationFirewallLog"
| where action_s == "Block"
L’extrait de code suivant présente un exemple d’entrée de journal, notamment la raison pour laquelle la requête a été bloquée :
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Cdn/Profiles/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
{
"time": "2020-06-09T22:32:17.8376810Z",
"category": "FrontdoorWebApplicationFirewallLog",
"operationName": "Microsoft.Network/FrontDoorWebApplicationFirewallLog/Write",
"properties": {
"clientIP": "xxx.xxx.xxx.xxx",
"clientPort": "52097",
"socketIP": "xxx.xxx.xxx.xxx",
"requestUri": "https://wafdemofrontdoorwebapp.azurefd.net:443/?q=%27%20or%201=1",
"ruleName": "Microsoft_DefaultRuleSet-1.1-SQLI-942100",
"policy": "WafDemoCustomPolicy",
"action": "Block",
"host": "wafdemofrontdoorwebapp.azurefd.net",
"trackingReference": "08Q3gXgAAAAAe0s71BET/QYwmqtpHO7uAU0pDRURHRTA1MDgANjMxNTAwZDAtOTRiNS00YzIwLTljY2YtNjFhNzMyOWQyYTgy",
"policyMode": "prevention",
"details": {
"matches": [
{
"matchVariableName": "QueryParamValue:q",
"matchVariableValue": "' or 1=1"
}
]
}
}
}
Pour plus d’informations sur les autres journaux Azure Front Door, consultez Superviser les métriques et les journaux dans Azure Front Door.
En savoir plus sur Azure Front Door.