Web 應用防火牆 (WAF)
Web 應用程式防火牆(WAF)旨在保護 Web 應用程式免遭多種網路攻擊,如跨站指令碼攻擊(XSS)、SQL 注入等威脅。
引數說明
| 引數名 | 資料型別 | 是否必選 | 描述 |
|---|---|---|---|
| rule_sets | array | 是 | 需要啟用的規則集合名稱列表 |
| action | string | 是 | 觸發 WAF 防護時執行的動作,可選 log、block 或其別名 403 Forbidden、edge-captcha、hcaptcha、redirect、page-template、close-connection、redirect-validate、js-challenge、custom-action、pat-attest |
| sensitivity | string | 是 | WAF 防護敏感級別,選項有 high(高)、medium(中)、low(低)、none(無) |
| score | number | 否 | 當 sensitivity 設定為 none 時,可自定義敏感度分數 |
| clearance | number | 否 | 驗證碼觸發後的有效期,預設值為 60 秒 |
| redirect_url | string | 否 | 當行為設定為 redirect 時,所指定的重定向 URL |
| page_template_name | string | 否 | 全域性頁面模板名稱。page-template 動作,或 pat-attest 的 fallback_action 為 page-template 時必填 |
| page_template_status_code | number | 否 | page-template 動作返回的 HTTP 狀態碼。pat-attest 不支援該引數 |
| module_name | string | 否 | Lua 模組名稱。action 為 custom-action 時必填 |
| fallback_action | string | 否 | pat-attest 校驗失敗時執行的挑戰,可選 edge-captcha、hcaptcha、js-challenge、page-template,預設為 edge-captcha |
| cross_requests | bool | 否 | 設定為 true 時開啟跨請求模式,預設值為 true,推薦設定為 false |
| rule_sets_threshold | array | 否 | 為各規則集單獨設定敏感度分數,需與 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