Partager via


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.

Mesures

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 :

  1. Connectez-vous au portail Azure et accédez à votre profil Azure Front Door.
  2. Dans le volet le plus à gauche, sous Analyse, sélectionnez l’onglet Métriques.
  3. 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.

Capture d’écran présentant les métriques d’un WAF Azure Front Door.

Métriques de défi JavaScript (préversion)

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

Capture d’écran montrant les métriques de défi JavaScript.

Journaux et diagnostics

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.

Capture d’écran montrant comment activer les journaux d’activité WAF.

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.

Journaux WAF

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 :
  • Allow et allow : la demande a été autorisée à poursuivre le traitement.
  • Block et block : la requête correspond à une règle WAF configurée pour bloquer la requête. Sinon, le seuil d’anomalie de scoring a été atteint et la demande a été bloquée.
  • Log et log : la requête correspond à une règle WAF configurée pour utiliser l’action Log.
  • AnomalyScoring et logandscore : La requête correspond à une règle WAF. La règle contribue au score d’anomalie. La demande peut être bloquée ou non en fonction d’autres règles qui s’exécutent sur la même requête.
  • JS Challenge et JSChallengeIssued : émis en raison d’une autorisation de défi manquante/non valide, réponse manquante.

    Le journal est créé lorsqu’un client demande l’accès à une application web pour la première fois et n’a pas été défié précédemment. Ce client reçoit la page du défi JS et procède au calcul du défi JS. Une fois le calcul réussi, le client reçoit le cookie de validité.
  • JS Challenge et JSChallengePass : validé en raison d’une réponse au défi valide.

    Ce journal est créé lorsqu’un client résout le défi JS et renvoie la requête avec la réponse correcte. Dans ce cas, Azure WAF valide le cookie et procède au traitement des règles restantes sans générer un autre défi JS.
  • JS Challenge et JSChallengeValid : journalisé/passé en raison d’un défi valide.

    Ce journal est créé lorsqu’un client a déjà résolu un défi. Dans ce cas, Azure WAF enregistre la requête et procède au traitement des règles restantes.
  • JS Challenge et JSChallengeBlock : bloqué

    Ce journal est créé lorsqu’un calcul de défi JS échoue.
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.

Étapes suivantes

En savoir plus sur Azure Front Door.