Tous les produits
Search
Centre de documentation

Web Application Firewall:Interroger les journaux

Dernière mise à jour :Aug 10, 2026

Utilisez Log Service pour WAF afin de rechercher, filtrer et analyser en temps réel les journaux du trafic WAF. Les résultats des requêtes mettent en évidence les requêtes bloquées, les origines des attaques et les règles de protection déclenchées. Vous pouvez ainsi enquêter sur les incidents, ajuster les règles et agir sur les conclusions sans quitter la console.

Prérequis

Avant de commencer, assurez-vous que :

Interroger et analyser les journaux

  1. Connectez-vous à la console WAF. Dans la barre de navigation supérieure, sélectionnez le groupe de ressources et la région où votre instance WAF est déployée (Chinese Mainland ou Outside Chinese Mainland).

  2. Dans le volet de navigation de gauche, choisissez Security Operations > Log Service.

  3. Sélectionnez un nom de domaine dans la liste déroulante, puis activez Status pour activer la collecte des journaux pour ce nom de domaine. La liste déroulante (étiquetée 1 sur l'illustration) affiche uniquement les noms de domaine protégés par WAF. Si le nom de domaine requis est absent, ajoutez-le d'abord à WAF. Consultez le Tutoriel.

    enable log collection

  4. Dans l'onglet Log Search, construisez et exécutez une requête.

    1. Saisissez une instruction de recherche dans la zone de recherche (étiquetée 1 sur l'illustration). Les instructions de recherche utilisent la syntaxe de recherche de Log Service. Pour plus de détails sur la syntaxe, consultez Syntaxe de recherche. Pour la liste complète des champs de journal WAF que vous pouvez utiliser comme conditions de requête, consultez Champs de journal pris en charge par WAF. Si vous préférez une approche guidée, développez Advanced Search au-dessus de la zone de recherche, remplissez les conditions, puis cliquez sur Search. La console génère l'instruction de requête pour vous. Les conditions suivantes sont disponibles :

      |
      Condition de recherche
      |
      Description
      | | --- | --- | |
      **IP**
      |
      Adresse IP du client qui a envoyé la requête
      | |
      **Request ID**
      |
      ID unique attribué par WAF à chaque requête. WAF inclut cet ID sur les pages d'erreur et les pages CAPTCHA à curseur, ce qui vous permet de retracer des requêtes spécifiques lors du dépannage.
      | |
      **Rule ID**
      |
      ID de la règle de protection WAF qui correspond à la requête. Trouvez les ID de règle sur la page **Security Report** ou sous **System Management** > **Protection Rule Group**.
      | |
      **Server Response Code**
      |
      Code d'état HTTP renvoyé par le serveur d'origine à WAF
      | |
      **Status Code Returned by WAF**
      |
      Code d'état HTTP renvoyé par WAF au client
      | |
      **Protection Features**
      |
      Type de règle de protection WAF qui correspond à la requête. Pour connaître les types de règles et leur configuration, consultez [Vue d'ensemble](t1914471.dita#concept_tzp_g2m_42b).
      |



























    2. (Facultatif) Pour calculer ou agréger les résultats, ajoutez une instruction d'analyse après une barre verticale (|). Les instructions d'analyse utilisent la syntaxe SQL-92 standard. Pour plus de détails, consultez Vue d'ensemble de l'interrogation et de l'analyse des journaux. Ignorez cette étape si vous souhaitez uniquement afficher les entrées de journal correspondantes.

    3. Définissez la plage de temps à l'aide du sélecteur de temps (étiqueté 2 sur l'illustration).

    4. Cliquez sur Security Report (étiqueté 3 sur l'illustration).

    Query logs

Les résultats s'affichent dans l'histogramme des journaux et dans les onglets Raw Logs et Graph ci-dessous. Pour des exemples de requêtes pratiques, consultez Exemples d'interrogation et d'analyse.

Gérer les résultats des requêtes

Histogramme des journaux

L'histogramme des journaux montre la répartition des journaux interrogés dans le temps.

Log histogram

  • Placez le curseur sur un rectangle vert pour voir la plage de temps qu'il représente et le nombre de journaux dans cette plage.

  • Cliquez sur un rectangle vert pour affiner la répartition temporelle et afficher les entrées correspondantes dans l'onglet System Management.

Journaux bruts

L'onglet Protection Rule Group affiche les entrées de journal individuelles.

Raw logs

Analyse rapide

Cliquez sur l'icône alias pour basculer entre les noms de champ et les alias de champ. Les alias sont définis lors de la configuration des index. Par exemple, si vous définissez l'alias de host_name sur host, la liste Quick Analysis affiche host lorsque les alias sont activés.

Si un champ n'a pas d'alias, son nom est toujours affiché, quel que soit le paramètre d'affichage des alias.

Pour plus d'informations, consultez Analyse rapide.

Afficher et télécharger les journaux

Action Comment faire
Basculer entre les vues table et brute Cliquez sur Search & Analyze ou Raw Logs
Copier une entrée de journal Cliquez sur l'icône copy
Afficher les détails des tags Cliquez sur l'icône details
Activer/désactiver l'affichage multiligne Cliquez sur Raw Logs
Trier par heure Cliquez sur Table
Télécharger les journaux Cliquez sur l'icône downloads. Options : Download Log in Current Page, Download All Logs with Cloud Shell, Download All Logs Using Command Line Tool. Consultez Télécharger les journaux.
Configurer les paramètres d'affichage Cliquez sur l'icône setting. Options : Raw Data, Column Settings, JSON Configurations, Event Settings

Graphique

L'onglet New Line visualise les résultats d'analyse. Il nécessite une instruction d'analyse (SQL-92) dans votre requête.

Action Comment faire
Modifier le type de graphique Sélectionnez un type de graphique dans le sélecteur de graphique. Pour connaître les types disponibles, consultez Configurations des graphiques.
Prévisualiser le graphique Prévisualisez le graphique après avoir modifié le type de graphique
Ajouter à un tableau de bord Cliquez sur Time
Télécharger les journaux Cliquez sur Tag Configurations. Options : Download Log in Current Page, Download All Logs with Cloud Shell, Download All Logs Using Command Line Tool. Consultez Télécharger les journaux.

Pour affiner un graphique, utilisez les paramètres suivants :

Paramètre Description
Configurations générales Paramètres globaux du graphique, tels que le schéma de couleurs appliqué à tous les résultats d'instruction de requête
Configuration des champs Paramètres d'affichage par instruction de requête ou par colonne, tels qu'un schéma de couleurs personnalisé pour un seul résultat de requête
Configurer une occurrence d'interaction Comportement d'approfondissement pour un résultat de requête ou une colonne de données, permettant une analyse fine

LogReduce

Dans l'onglet Graph, cliquez sur Add to New Dashboard pour regrouper les entrées de journal similaires et mettre en évidence les modèles. Pour plus de détails, consultez LogReduce.

Agir sur les résultats des requêtes

Après avoir trouvé les informations nécessaires dans les journaux, vous pouvez effectuer les actions suivantes sans quitter la console :

Action Comment faire
Créer une alerte Choisissez Download Log > LogReduce. Log Service évalue la règle selon une planification et envoie une notification chaque fois que la condition de déclenchement est remplie. Pour plus de détails sur la configuration, consultez Configurer une règle d'alerte.
Ajouter un graphique à un tableau de bord Dans l'onglet Enable LogReduce, cliquez sur Save as Alert.
Télécharger les journaux pour une analyse hors ligne Cliquez sur l'icône de téléchargement dans l'onglet New Alert ou sur Download Log dans l'onglet Graph. Consultez Télécharger les journaux.

Champs de journal clés

Les champs suivants sont fréquemment utilisés dans les requêtes de journal WAF. Pour la référence complète des champs, consultez Champs de journal pris en charge par WAF.

Champ Description Valeurs possibles
final_plugin Fonction de protection ayant agi sur la requête waf (moteur de règles de protection), acl (liste de blocage d'adresses IP et politiques de protection personnalisées), cc (protection contre les attaques HTTP flood et politiques de protection personnalisées)
final_action Action entreprise sur la requête block, et autres selon la configuration de la règle
real_client_ip Adresse IP d'origine du client. Si un proxy est utilisé ou si l'en-tête IP est invalide, la valeur est -. Dans ce cas, utilisez remote_addr comme solution de secours. Adresse IP ou -
remote_addr Adresse IP qui s'est connectée à WAF Adresse IP
matched_host Nom de domaine correspondant à la requête Chaîne de nom de domaine
host Nom de domaine demandé Chaîne de nom de domaine
request_path Chemin de la requête Chaîne de chemin
request_method Méthode de requête HTTP GET, POST, PUT, DELETE, etc.
status Code d'état HTTP renvoyé par WAF au client Code d'état HTTP
upstream_status Code d'état HTTP renvoyé par le serveur d'origine à WAF Code d'état HTTP
querystring Chaîne de requête de la requête Chaîne encodée en URL
http_user_agent Agent utilisateur du client Chaîne d'agent utilisateur

Exemples d'interrogation et d'analyse

Les exemples suivants couvrent des scénarios courants d'investigation de sécurité. Chaque exemple utilise une instruction de recherche (avant |) et une instruction d'analyse (après |).

Requêtes bloquées par fonction de protection, par intervalles de 15 minutes

Affiche le nombre de requêtes bloquées par chaque fonction de protection par intervalles de 15 minutes.

* |
SELECT
  time_series(__time__, '15m', '%H:%i', '0') as time,
  COUNT_if(final_plugin = 'waf') as "wafmodule",
  COUNT_if(final_plugin = 'acl') as "aclmodule",
  COUNT_if(final_plugin = 'cc') as "httpfloodmodule"
GROUP by
  time
ORDER by
  time

Répartition des fonctions de protection par domaine

Affiche le nombre de fois où chaque fonction de protection a été déclenchée, groupé par nom de domaine.

* |
SELECT
  count(*) as times,
  host,
  final_plugin
GROUP by
  host,
  final_plugin
ORDER by
  times desc

Requêtes par seconde (QPS), par intervalles de 15 minutes

* |
SELECT
  time_series(__time__, '15m', '%H:%i', '0') as time,
  count(*) / 900 as QPS
GROUP by
  time
ORDER by
  time

Domaines les plus ciblés par les attaques HTTP flood

and acl_action :block |
SELECT
  count(*) as times,
  host
GROUP by
  host
ORDER by
  times desc

Détails des requêtes par seconde (10 dernières)

Renvoie l'heure, le domaine, le chemin, la méthode, le code d'état WAF, le code d'état du serveur d'origine et la chaîne de requête pour les requêtes les plus récentes.

* |
SELECT
  date_format(date_trunc('second', __time__), '%H:%i:%s') as time,
  host,
  request_path,
  request_method,
  status,
  upstream_status,
  querystring
LIMIT
  10

10 dernières attaques bloquées sur un domaine spécifique

Remplacez your_domain_name par le nom de domaine réel.

matched_host: your_domain_name
and final_action: block |
SELECT
  time,
  real_client_ip,
  http_user_agent
ORDER by
  time desc
LIMIT
  10

Nombre de jours écoulés depuis la dernière attaque bloquée sur un domaine spécifique

Le résultat est arrondi à une décimale.

matched_host: your_domain_name
and final_action: block |
SELECT
  time,
  round((to_unixtime(now())-__time__) / 86400, 1) as "days_passed",
  real_client_ip,
  http_user_agent
ORDER by
  time desc
LIMIT
  10

Tendance des attaques par jour

Utilise date_trunc pour regrouper les horodatages des attaques par jour. Pour plus de détails sur cette fonction, consultez Fonctions de date et d'heure.

matched_host: your_domain_name
and final_action: block |
SELECT
  date_trunc('day', __time__) as dt,
  count(1) as PV
GROUP by
  dt
ORDER by
  dt

Répartition des attaques par pays

Utilise ip_to_country pour mapper les adresses IP des clients aux pays. Lorsque real_client_ip est - (proxy utilisé ou en-tête IP invalide), la requête utilise remote_addr comme solution de secours.

matched_host: your_domain_name
and final_action: block |
SELECT
  ip_to_country(
    if(real_client_ip = '-', remote_addr, real_client_ip)
  ) as country,
  count(1) as "Number of attacks"
GROUP by
  country

Répartition des attaques par province

Utilise ip_to_province pour mapper les adresses IP des clients aux provinces. Pour plus de détails sur cette fonction, consultez Fonctions IP.

matched_host: your_domain_name
and final_action: block |
SELECT
  ip_to_province(
    if(real_client_ip = '-', remote_addr, real_client_ip)
  ) as province,
  count(1) as "Number of attacks"
GROUP by
  province

Étapes suivantes