開啟應用的 WAF

Web 應用防火牆(Web Application Firewall)可以用於防禦 SQL 注入、XSS 跨站指令碼、Web 伺服器漏洞、木馬等常見攻擊,保障網站的安全。

本文介紹如何在 OpenResty Edge 管理後臺的應用中,透過頁面規則開啟 WAF。

第一步:進入頁面規則

在應用內左側導航欄中點選頁面規則,進入規則列表頁面。初始狀態下列表為空,顯示"暫時沒有建立任何規則。"

頁面規則列表

點選右上角的新建規則按鈕,開啟規則配置面板。

第二步:配置 WAF 模組

在新建規則面板中,可以看到以下幾個區域:啟用條件動作WAF代理快取 等。

WAF 模組預設處於關閉狀態,點選右側的開關將其開啟:

新建規則 - WAF 配置

WAF 規則集

WAF 模組內建了以下規則集:

規則集說明
scanner_detection掃描器檢測,識別並攔截常見的漏洞掃描工具和爬蟲
protocol_enforcement協議規範,強制執行 HTTP 協議標準,攔截不合規的請求
protocol_attack協議攻擊,防禦 HTTP 請求走私、響應拆分等協議層攻擊
application_attack_lfi本地檔案包含(LFI),防止攻擊者讀取伺服器本地敏感檔案
application_attack_rfi遠端檔案包含(RFI),防止攻擊者引入並執行遠端惡意檔案
application_attack_rce遠端程式碼執行(RCE),攔截試圖在伺服器端執行任意命令的請求
application_attack_phpPHP 程式碼注入,防禦針對 PHP 應用的程式碼注入攻擊
application_attack_nodejsNode.js 注入,防禦針對 Node.js 應用的注入攻擊
application_attack_xssXSS 跨站指令碼攻擊,攔截惡意指令碼注入請求
application_attack_sqliSQL 注入攻擊,防止攻擊者透過構造 SQL 語句操控資料庫
application_attack_session_fixation會話固定攻擊,防止攻擊者劫持使用者會話
application_attack_javaJava 程式碼注入,防禦針對 Java 應用的反序列化及程式碼注入攻擊(如 Log4Shell)

你也可以根據需要選擇需要的規則集。此外,你還可以新增自定義規則集,以及配置 WAF 白名單,相關內容將單獨說明。

偏執級別

偏執級別預設為 1。級別越高,檢測規則越嚴格,但可能產生更多誤報,需根據實際情況調整。

攔截動作

觸發 WAF 規則後,可配置以下幾種動作:

攔截動作下拉選項

  1. 僅記錄日誌(預設):僅將命中記錄到日誌,不對請求做任何攔截或跳轉。
  2. OpenResty Edge 閘道器服務驗證碼挑戰 - 使用內建驗證碼:將終端重定向到驗證碼頁面,填寫正確驗證碼後,該終端在一定時間內的請求將被放行。
  3. OpenResty Edge 閘道器服務驗證碼挑戰 - 使用 hCaptcha 驗證碼:與上一項類似,但使用 hCaptcha 進行驗證。
  4. 攔截並返回 HTTP 403 狀態碼:直接拒絕請求,返回 403 狀態碼。
  5. 重定向:將請求重定向到指定的 URL。
  6. 返回頁面模板:返回自定義的頁面模板。
  7. 關閉連線:直接關閉 TCP 連線。
  8. 重定向驗證:重定向到驗證頁面進行身份確認。
  9. JavaScript 挑戰驗證:透過 JavaScript 挑戰驗證請求來源是否為真實瀏覽器。

其他選項

  • 跨請求模式:開啟後,來自同一客戶端的請求分數將在 60 秒內累計計算。注意,開啟此模式後,無法為每個規則集單獨設定閾值。
  • 捕獲響應體:開啟後將捕獲響應內容用於進一步分析。

第三步:配置啟用條件(可選)

如需針對特定請求開啟 WAF,可展開頂部的啟用條件區域進行配置。例如,可以根據請求 URL 字首、請求頭、客戶端 IP 等條件,有選擇地對某些路徑啟用對應的 WAF 規則集。

若不設定條件,則該規則對所有請求生效。

管理多條 WAF 規則

你可以新增多條頁面規則,為不同的請求路徑配置不同的 WAF 規則集。

需要注意的是:若多條規則的條件存在重疊,排序靠後(後生效)的規則會覆蓋前面的規則。可透過調整順序按鈕對規則進行排序,並使用檢查規則功能驗證規則配置的正確性。