全部產品
Search
文件中心

Web Application Firewall:日誌查詢

更新時間:Jul 01, 2024

為網站網域名稱開啟WAF日誌採集後,您可以使用日誌查詢功能對採集到的日誌資料進行即時查詢與分析,並基於查詢與分析結果產生統計圖表、建立警示等。

前提條件

已開通WAFLog Service。具體操作,請參見快速使用WAFLog Service

查詢和分析日誌

  1. 登入Web Application Firewall控制台,在頂部功能表列,選擇WAF執行個體的資源群組和地區(中國內地非中國內地)。

  2. 在左側導覽列,選擇安全營運 > Log Service

  3. 從網域名稱下拉式清單中選擇要開啟日誌採集的網站網域名稱,開啟右側的狀態開關,開啟該網站網域名稱的日誌採集功能。開啟日誌採集
    網域名稱下拉式清單(圖示①)僅包含已接入WAF防護的網站網域名稱。如果您還未將網站網域名稱接入WAF防護,請先完成網站接入。具體操作,請參見使用教程
  4. 日誌查詢頁簽,通過查詢與分析語句,對WAF日誌資料進行查詢與分析。日誌查詢
    1. 在語句輸入框(圖示①),輸入查詢語句。
      查詢語句採用阿里雲Log Service專用文法,關於該文法的詳細介紹,請參見查詢文法。查詢語句中使用WAF日誌包含的欄位作為查詢欄位,關於支援使用的查詢欄位,請參見WAF日誌欄位
      如果您不瞭解日誌查詢文法,推薦您使用進階搜尋。您只需在語句輸入框上方展開進階搜尋,設定搜尋條件並單擊搜尋,語句輸入框即可自動產生與搜尋條件匹配的日誌查詢語句。下表描述了進階搜尋支援設定的搜尋條件。
      搜尋條件說明
      IP發起請求的用戶端的IP地址。
      Trace IDWAF為用戶端請求產生的唯一標識。WAF向用戶端返回攔截頁面或者滑塊驗證響應時會提供該ID,用於問題分析與故障排查。
      Rule ID請求命中的WAF防護規則ID。您可以在安全報表或者系統管理 > 防護規則群組頁面,擷取規則ID資訊。
      伺服器響應狀態代碼來源站點伺服器響應WAF回源請求的HTTP狀態代碼。
      WAF返回用戶端響應碼WAF響應用戶端請求的HTTP狀態代碼。
      攔截規則請求命中的WAF防護規則的類型。關於WAF防護模組的介紹及不同模組防護規則的配置方法,請參見概述
    2. 如果您需要對查詢結果進行計算和統計分析,可以在語句輸入框(圖示①)已輸入的查詢語句後,輸入分析語句。如果您只需要查詢滿足條件的日誌資料,可跳過該步驟。
      分析語句和查詢語句間使用豎線(|)分隔。分析語句採用標準的SQL92文法,關於分析語句的更多介紹,請參見分析概述
    3. 通過時間選取器(圖示②),修改日誌查詢時間範圍。
    4. 單擊查詢/分析(圖示③)。
      查詢與分析結果(即命中查詢條件的WAF日誌資料)將會顯示在頁面下方,包含日誌分布長條圖、原始日誌統計圖表。您可以基於查詢結果進行快速分析、產生統計圖表、設定警示等。具體操作,請參見操作查詢和分析結果建立警示
    更多關於日誌查詢與分析的案例,請參見查詢與分析案例

操作查詢和分析結果

WAFLog Service為您提供日誌分布長條圖、原始日誌和統計圖表形式的展示查詢分析結果,並支援設定警示、快速查詢等操作。
  • 日誌分布長條圖
    日誌分布長條圖主要展示查詢到的日誌在時間上的分布。 分布長條圖
    • 滑鼠指向綠色資料區塊時,可以查看該資料區塊代表的時間範圍和日誌叫用次數。
    • 單擊綠色資料區塊,可以查看更細時間粒紋的日誌分布,同時在原始日誌頁簽中同步展示指定時間範圍內的查詢結果。
  • 原始日誌
    您可以在原始日誌頁簽中,查看日誌查詢結果。 原始日誌
    • 快速分析
      單擊別名表徵圖,選擇顯示Key或Key的別名,該別名可在建立索引時配置。例如host_name的別名為host,如果你選擇顯示別名,則在快速分析列表中顯示host
      說明 當某欄位沒有別名時,您選擇顯示別名,在快速分析列表中仍顯示欄位名(Key)。

      更多資訊,請參見欄位設定

    • 查看日誌詳情
      • 單擊表格,查看錶格形式的日誌。
      • 單擊原始,查看原始形式的日誌。
        • 單擊複製表徵圖,複製日誌。
        • 單擊tag詳情表徵圖,查看tag詳情。
      • 單擊換行,關閉或開啟換行顯示日誌。
      • 單擊時間,開啟按時間順序顯示日誌。
      • 單擊下載日誌表徵圖,可以將日誌下載到本機電腦,支援直接下載、通過Cloud Shell下載、通過命令列工具下載等方式。更多資訊,請參見下載日誌
      • 單擊設定表徵圖,配置Tag設定列設定JSON設定事件配置
  • 統計圖表
    您可以在統計圖表頁簽,查看可視化的查詢分析結果。您必須在語句輸入框中輸入SQL92分析語句,才可以在統計圖表頁簽查看對應的統計圖表。
    • 切換圖表類型:選擇不同的圖表類型來查看分析結果。關於不同圖表類型的介紹,請參見圖表設定
    • 預覽圖表:切換圖表類型後,查看圖表預覽效果。

      單擊添加到儀錶盤,可以將當前圖表添加到儀錶盤。單擊下載日誌,可以將日誌下載到本機電腦,支援直接下載通過Cloud Shell下載通過命令列工具下載等方式。具體操作,請參見下載日誌

    • 修改統計圖表配置
      操作說明
      通用配置對統計圖表進行全域配置。例如選擇顏色方案後,整個統計圖表的顏色都基於該顏色方案進行展示。
      欄位配置對單個查詢分析的結果或單個查詢分析結果中的單列資料進行個人化的可視化設定。例如選擇某個查詢分析後,再選擇顏色方案,則該查詢分析結果相關的圖形顏色基於該顏色方案進行展示。
      設定互動事件對單個查詢分析的結果或單個查詢分析結果中的單列資料進行互動設定,加深資料分析的維度。
  • 日誌聚類

    日誌聚類頁簽,單擊開啟日誌聚類,可實現在採集日誌時將相似性高的日誌彙總。更多資訊,請參見日誌聚類

建立警示

您可以基於當前查詢與分析語句建立警示。建立警示後,Log Service將定期檢查查詢與分析結果,並在檢查結果滿足預設條件時,向您發送警示通知,實現即時的服務狀態監控。

在查詢分析頁面上,選擇另存新檔警示 > 新版警示,可為查詢分析結果設定警示。更多資訊,請參見設定警示

查詢與分析案例

  • 以15分鐘為步長,分析在整點時刻由不同WAF防護模組攔截的攻擊請求的數量,展示時間(time)、WAF規則防護引擎攔截請求數(wafmodule)、IP黑名單及自訂防護策略(ACL存取控制)攔截請求數(aclmodule)、CC安全防護及自訂防護策略(CC攻擊防護)攔截請求數(httpfloodmodule)。
    * |
    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
  • 分析觸發了WAF最終防護動作的防護模組類型(final_plugin)的分布情況,展示叫用次數(times)、被請求網域名稱(host)和最終防護模組(final_plugin)。
    * |
    SELECT
      count(*) as times,
      host,
      final_plugin
    GROUP by
      host,
      final_plugin
    ORDER by
      times desc
  • 以15分鐘為步長,分析整點時刻的QPS,展示時間(time)和QPS(QPS)。
    * |
    SELECT
      time_series(__time__, '15m', '%H:%i', '0') as time,
      count(*) / 900 as QPS
    GROUP by
      time
    ORDER by
      time
  • 分析受CC攻擊次數最多的網域名稱,展示CC攻擊攔截次數(times)和被訪問網域名稱(host)。
    *
    and acl_action :block |
    SELECT
      count(*) as times,
      host
    GROUP by
      host
    ORDER by
      times desc
  • 以秒為步長,分析網站請求日誌的詳情,展示時間(time)、被訪問網域名稱(host)、被訪問路徑(request_path)、要求方法(request_method)、WAF響應用戶端請求的HTTP狀態代碼(status)、來源站點響應WAF回源請求的HTTP狀態代碼(upstream_status)、查詢字串(querystring)。
    * |
    SELECT
      date_format(date_trunc('second', __time__), '%H:%i:%s') as time,
      host,
      request_path,
      request_method,
      status,
      upstream_status,
      querystring
    LIMIT
      10
  • 查詢網站(your_domain_name)遭受的最近10條攻擊請求記錄,展示請求發起時間(time)、真實用戶端IP(real_client_ip)和用戶端類型(http_user_agent)。
    matched_host: your_domain_name
    and final_action: block |
    SELECT
      time,
      real_client_ip,
      http_user_agent
    ORDER by
      time desc
    LIMIT
      10
  • 分析網站(your_domain_name)遭受的攻擊請求被WAF攔截後經過的天數(days_passed,保留1位小數)。
    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
  • 分析網站(your_domain_name)遭受的攻擊請求次數按天的變化趨勢。
    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
    date_trunc函數用於對目前時間進行按天對齊分組。關於該函數的更多資訊,請參見日期和時間函數
  • 分析網站(your_domain_name)遭受的攻擊請求的來源國家(country)分布。
    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 "攻擊次數"
    GROUP by
      country
    WAF日誌中real_client_ip欄位表示真實用戶端IP。如果由於使用者通過Proxy 伺服器訪問或要求標頭中IP欄位有誤等原因無法擷取真實用戶端IP(real_client_ip取值為-),也可以直接使用remote_addr欄位(表示直連用戶端IP)作為真實用戶端IP。
  • 分析網站(your_domain_name)遭受的攻擊請求的來源省份(province)分布。
    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 "攻擊次數"
    GROUP by
      province
    ip_to_province函數用於擷取真實用戶端IP對應的省份資訊。關於該函數的更多資訊,請參見IP函數