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 :
Log Service pour WAF est activé. Pour obtenir des instructions de configuration, consultez Prise en main de la fonctionnalité Log Service pour WAF
Interroger et analyser les journaux
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).
Dans le volet de navigation de gauche, choisissez Security Operations > Log Service.
-
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.

-
Dans l'onglet Log Search, construisez et exécutez une requête.
-
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).
| (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.Définissez la plage de temps à l'aide du sélecteur de temps (étiqueté 2 sur l'illustration).
Cliquez sur Security Report (étiqueté 3 sur l'illustration).

-
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.

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.

Analyse rapide
Cliquez sur l'icône
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 |
| Afficher les détails des tags | Cliquez sur l'icône |
| 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 |
| Configurer les paramètres d'affichage | Cliquez sur l'icône |
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
Champs de journal pris en charge par WAF — référence pour tous les champs de journal interrogeables
Configurer une règle d'alerte — configurer des notifications lorsque les seuils d'attaque sont dépassés
Télécharger les journaux — exporter les journaux pour une analyse hors ligne