Web 應用防火牆 (WAF)

Web 應用程式防火牆(WAF)旨在保護 Web 應用程式免遭多種網路攻擊,如跨站指令碼攻擊(XSS)、SQL 注入等威脅。

引數說明

引數名資料型別是否必選描述
rule_setsarray需要啟用的規則集合名稱列表
actionstring觸發 WAF 防護時執行的動作,可選 logblock 或其別名 403 Forbiddenedge-captchahcaptcharedirectpage-templateclose-connectionredirect-validatejs-challengecustom-actionpat-attest
sensitivitystringWAF 防護敏感級別,選項有 high(高)、medium(中)、low(低)、none(無)
scorenumbersensitivity 設定為 none 時,可自定義敏感度分數
clearancenumber驗證碼觸發後的有效期,預設值為 60 秒
redirect_urlstring當行為設定為 redirect 時,所指定的重定向 URL
page_template_namestring全域性頁面模板名稱。page-template 動作,或 pat-attestfallback_actionpage-template 時必填
page_template_status_codenumberpage-template 動作返回的 HTTP 狀態碼。pat-attest 不支援該引數
module_namestringLua 模組名稱。actioncustom-action 時必填
fallback_actionstringpat-attest 校驗失敗時執行的挑戰,可選 edge-captchahcaptchajs-challengepage-template,預設為 edge-captcha
cross_requestsbool設定為 true 時開啟跨請求模式,預設值為 true,推薦設定為 false
rule_sets_thresholdarray為各規則集單獨設定敏感度分數,需與 rule_sets 中的規則集一一對應

您可以選擇使用內建規則集或自定義 WAF 規則集。以下為可用的內建 WAF 規則集列表:

  • scanner_detection
  • protocol_enforcement
  • protocol_attack
  • application_attack_lfi
  • application_attack_rfi
  • application_attack_rce
  • application_attack_php
  • application_attack_nodejs
  • application_attack_xss
  • application_attack_sqli
  • application_attack_session_fixation
  • application_attack_java

配置示例

- enable_rule: true
  conditions:
  - op: eq
    var: uri
    val: /waf

  waf:
    rule_sets:
    - scanner_detection
    - protocol_enforcement
    - application_attack_xss
    - application_attack_sqli
    sensitivity: medium
    action: "403 Forbidden"
    cross_requests: false

在上述示例中,當請求的 URI/waf 時,啟用 WAF,啟用的的規則集包括 scanner_detection、protocol_enforcement、application_attack_xss 及 application_attack_sqli,防護敏感級別設定為中等。一旦觸發 WAF 防護機制,則執行動作並返回 HTTP 狀態碼 403,表示請求被禁止。

以下示例使用 sentinel Lua 模組執行自定義 WAF 動作:

- enable_rule: true
  conditions:
  - op: eq
    var: uri
    val: /custom-action

  waf:
    rule_sets:
    - scanner_detection
    action: custom-action
    module_name: sentinel

以下示例校驗 Private Access Token,失敗時返回名為 pat-tmpl 的全域性頁面模板。匯入時,edge2yaml 會把模板名稱轉換為 ID;匯出時會恢復為名稱。pat-attest 不應設定 page_template_status_code

- enable_rule: true
  conditions:
  - op: eq
    var: uri
    val: /pat-attest

  waf:
    rule_sets:
    - scanner_detection
    action: pat-attest
    fallback_action: page-template
    page_template_name: pat-tmpl