Web 應用防火牆 (WAF)

Web 應用程式防火牆(WAF)旨在保護 Web 應用程式免遭多種網路攻擊,如跨站指令碼攻擊(XSS)、SQL 注入等威脅。 您可以選擇使用內建規則集或自定義 WAF 規則集。

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

引數說明

引數名資料型別是否必選描述
rule_setsarray是需要啟用的規則集合名稱列表
actionstring是觸發 WAF 防護時執行的動作,可選 log、block 或其別名 403 Forbidden、edge-captcha、hcaptcha、redirect、page-template、close-connection、redirect-validate、js-challenge、custom-action、pat-attest
sensitivitystring是WAF 防護敏感級別,選項有 high(高)、medium(中)、low(低)、none(無)
scorenumber否當 sensitivity 設定為 none 時,可自定義敏感度分數
clearancenumber否驗證碼觸發後的有效期,預設值為 60 秒
redirect_urlstring否當行為設定為 redirect 時,所指定的重定向 URL
page_template_namestring否全域性頁面模板名稱。page-template 動作,或 pat-attest 的 fallback_action 為 page-template 時必填
page_template_status_codenumber否page-template 動作返回的 HTTP 狀態碼。pat-attest 不支援該引數
module_namestring否Lua 模組名稱。action 為 custom-action 時必填
fallback_actionstring否pat-attest 校驗失敗時執行的挑戰,可選 edge-captcha、hcaptcha、js-challenge、page-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