Web Application Firewall (WAF)提供開箱即用的安全防護。在資產接入WAF後,系統將自動為其應用一套預置的Web核心防護規則,無需額外配置,即時抵禦SQL注入、XSS、命令注入等主流Web應用攻擊。本文將指導您如何管理和精細化配置這些規則。
Web 核心防護規則功能更新陸續上線中,本文介紹新版本功能,若您使用舊版本功能,請閱讀Web核心防護規則(舊版)。升級公告,請參見【公告】WAF 3.0基礎防護規則功能更新。您可以通過WAF控制台頁面的Web 核心防護規則樣式進行判斷。
新版 | Web 核心防護規則模組右側僅顯示建立模板按鈕,與IP黑名單、自訂規則等其他模組右側樣式一致。 |
舊版 | Web 核心防護規則模組右側顯示建立模板與規則群組管理兩個按鈕。 |
關鍵概念
Web 核心防護規則:Web核心防護的防護模組之一。通過防護模板使此模組生效,開通WAF後,系統將自動建立一個預設防護模板,支援後續手動建立多個防護模板。
防護模板:防護模板是防護規則的集合,用於定義具體的規則內容和作用範圍。建立防護模板時,需設定模板資訊、引擎設定、生效範圍。
模板資訊:定義模板類型,其類型在模板建立後不可更改。模板類型分為以下兩種:
模板類型
說明
適用情境
預設防護模板
系統提供一個初始的預設防護模板。
模板建立時,預設對沒有關聯自訂防護模板的防護對象和對象組生效,後續新增的對象也自動生效。
支援手動將特定對象排除(設定為“未生效”)。
在Web核心防護規則模組下,僅能建立一個預設防護模板。
當某防護對象從自訂防護模板中移出後,將自動加入預設防護模板。
部署通用的、需全域執行的防護規則。在業務無特殊防護需求時,建議使用系統提供的預設防護模板,無需額外配置。
自訂防護模板
必須手動指定其生效的防護對象或對象組。
針對特定業務部署精細化的防護規則。
引擎設定:定義具體的防護規則,WAF 基於業務安全經驗,提供多條系統防護規則,並按檢測模組分類,以防禦不同類型的攻擊。支援配置系統防護規則的規則動作;對於混合雲接入,還支援配置自訂防護規則,以滿足特定業務的防護需求。
生效範圍:指定防護模板的應用目標。通過生效對象設定,將防護規則應用到指定的防護對象或防護對象組。一個防護對象或對象組僅能關聯一個防護模板。
防護對象:每個接入 WAF 的網域名稱或雲產品執行個體,系統會為其自動建立一個防護對象。
防護對象組:可將多個防護對象加入一個防護對象組,以便集中管理。
功能優勢
開箱即用:系統預設範本內建多條防護規則,新接入資產將自動應用這些規則,無需手動設定,即可滿足日常安全防護需求。
多種解碼支援:支援解析與還原 JSON、XML、Form 等資料格式,以及 Base64、HTML 實體等多種編碼方式,確保識別隱藏在多層編碼或壓縮中的惡意流量。
智能加白引擎:WAF 基於您歷史業務流量進行 AI 學習,可識別在特定 URL 上不適用的防護規則,並自動將其加入白名單,有效降低誤攔截風險。
執行以下操作前,請確保已存在防護對象(已將Web業務接入WAF),若尚未將業務接入,請參見接入概述。
建立防護模板進行精細化防護
業務接入WAF後,系統將自動為所有防護對象應用預設防護模板並啟用防護。若業務無特殊防護需求,則無需執行建立防護模板的操作。以下步驟僅適用於需為不同防護對象配置差異化防護規則的多模板情境。
如僅需處理WAF誤攔截或漏攔截問題,請參見應對誤判與漏攔截。
進入控制台:
登入Web Application Firewall3.0控制台。在頂部功能表列,選擇WAF執行個體的資源群組和地區(中國內地、非中國內地)。在左側導覽列,選擇,在Web 核心防護規則地區,單擊新建模板。
配置模板資訊:
模板名稱:設定一個便於識別的名稱。
是否設定為預設範本:在Web核心防護規則模組下,系統提供一個初始的預設防護模板,且僅能設定一個預設範本。因此,當初始的預設範本存在時,無法將此處設定為“是”。
是:無需設定生效範圍,模板建立時,預設對沒有關聯自訂防護模板的防護對象和對象組生效,後續新增的對象也自動生效。支援手動將特定對象排除(設定為“未生效”)。
否:需要設定生效範圍,手動指定其生效的防護對象或對象組。
引擎設定:
檢測引擎自動更新:預設狀態下,此功能開啟。
開啟:未來阿里雲安全團隊在預設規則中新增或移除的規則(例如0day應急規則或已失效規則)將自動同步至當前檢測引擎。WAF將自動應用新規則,規則狀態為“啟用”或“未啟用”,規則動作為“觀察”或“攔截”。
關閉:規則仍會同步,但規則狀態為“未啟用”,規則動作為“觀察”。
引擎配置:單擊右上方的引擎配置,或下方地區相應檢測模組操作列的配置,進行防護規則配置。支援的檢測模組,請參見附錄。
系統防護規則
系統防護規則基於阿里雲安全內建檢測模組,提供四種規則等級:超嚴格、嚴格、中等和寬鬆。其中,中等與寬鬆等級的規則預設開啟,超嚴格與嚴格等級的規則預設關閉。
系統防護規則支援如下配置:
規則動作:選擇當請求命中該規則時,要執行的防護動作。
攔截:攔截命中規則的請求,並向發起請求的用戶端返回攔截響應頁面。
觀察:不攔截命中規則的請求,僅通過日誌記錄請求命中的情況。在試運行規則時,可以先通過觀察模式分析WAF日誌,以確認未產生誤攔截。
規則狀態:可選擇開啟或關閉。若關閉,請求將不再命中該規則。
說明通過安全報表,可以查詢各類防護規則的命中詳情。
自訂防護規則(僅混合雲接入適用)
自訂防護規則僅對混合雲接入的防護對象生效。如需添加自訂防護規則,並在防護模板中使用,請參見規則庫管理。
自適應引擎:智能加白引擎功能預設關閉。啟用後,WAF將基於歷史業務流量進行AI學習,識別在URL粒度上不適用的防護規則,並自動建立白名單以降低誤攔截風險。
自動建立的白名單模板名稱為AutoTemplate。更多資訊,請參見白名單。
說明僅隨用隨付版、訂用帳戶企業版或旗艦版支援該功能。
配置生效範圍:
選擇要應用於該模板的防護對象和防護對象組。模板的生效範圍取決於在步驟二的配置:
使用系統建立的預設範本,或設定為預設範本:無需設定生效對象,模板建立時,預設對沒有關聯自訂防護模板的防護對象和對象組生效,後續新增的對象也自動生效。支援手動將特定對象排除(設定為“未生效”)。
未設為預設範本:需要手動設定生效的防護對象和防護對象組。
說明模板建立時與建立完成後,均支援手動調整防護對象或防護對象組生效狀態。
應對誤判與漏攔截
當遇到WAF攔截正常業務流量或未能有效攔截攻擊的情況時,需要通過以下步驟,定位具體原因並調整配置。
WAF誤攔截正常業務
在左側導覽列,選擇。
說明若您已開啟Log Service,也可以進入查看完整請求日誌。
通過時間、防護對象(被訪問的網域名稱/雲產品執行個體)、規則動作進行篩選,定位至具體被攔截的請求。
在安全報表版面設定篩選條件:選擇自訂時間範圍、選擇目標網域名稱/執行個體、將動作設定為攔截,即可查看對應時間段內的攻擊攔截趨勢及攻擊類型分布。
若確認被攔截的是正常業務請求,可在頁面下面的日誌列表地區,單擊操作列的誤判屏蔽,添加白名單規則進行允許存取。
如發現請求具有聚類特徵(例如同一可信 IP 位址觸發了多條不同的防護規則),建議直接將該 IP 位址作為白名單的匹配條件一次性允許存取,避免對誤判日誌進行逐條加白。更多資訊,請參見白名單。
WAF未攔截攻擊(防護無效)
當出現未被WAF攔截的攻擊請求時,通常有以下幾種原因及應對建議:
請求未經過WAF處理
原因:WAF配置的SSL認證或監聽連接埠與來源站點實際使用的不匹配。
建議:核對WAF與來源站點的SSL認證及連接埠配置。原因:CNAME接入時,未正確修改DNS解析記錄,使流量未指向WAF。
建議:確認DNS解析已正確指向WAF提供的CNAME地址。原因:CNAME接入時,攻擊者直接存取來源站點伺服器IP地址繞過WAF。
建議:通過在伺服器安全性群組中僅允許存取WAF回源IP地址解決。
原因:雲產品接入時,添加到 WAF 防護的並非網域名稱實際解析指向的雲產品執行個體。
建議:確認目標雲產品執行個體已正確接入。
請求經過WAF但規則未覆蓋
預設的Web核心防護規則無法覆蓋所有攻擊類型,需根據攻擊特徵啟用相應防護模組:
日常營運
查看防護模板:單擊防護模板名稱左側的
表徵圖,查看該模板包含的引擎資訊。開啟或關閉防護模板:通過模板開關,開啟或關閉模板。
編輯防護模板:單擊防護模板操作列的編輯,修改模板資訊、引擎設定、生效對象等內容。
刪除防護模板:當不再需要某模板時,單擊防護模板操作列的刪除,並在彈出對話方塊中單擊刪除完成操作。
重要若某防護對象所屬的自訂防護模板被刪除,該防護對象將自動加入預設防護模板。
若預設防護模板被刪除,且其中仍包含防護對象,則這些防護對象將不再受Web核心防護規則保護。
附錄:支援的檢測模組
Web核心防護規則支援以下檢測模組,可識別並攔截針對Web應用的各類攻擊。
攻擊類型 | 說明 |
SQL注入 | SQL注入是一種通過將惡意SQL代碼注入到查詢語句中,來操縱資料庫執行攻擊者希望的操作的攻擊方式。 |
跨站指令碼(XSS) | 跨站指令碼(XSS)攻擊是一種通過在網頁中嵌入惡意指令碼,使其他使用者在瀏覽網頁時執行這些指令碼的攻擊方式。 |
代碼執行 | 代碼執行攻擊是指利用注入的惡意代碼,使伺服器執行這些代碼,從而實現攻擊目的。 |
CRLF | 一種通過在HTTP頭部插入斷行符號符(CR, \r)和分行符號(LF, \n),以操縱HTTP響應或進行HTTP響應分割攻擊(HTTP Response Splitting)的攻擊方式。 |
本地檔案包含(LFI) | 是指當伺服器開啟allow_url_include選項時,就可以通過PHP的某些特性函數(include(),require()和include_once(),requir_once())利用URL去動態包含檔案,此時如果沒有對檔案來源進行嚴格審查,就會導致任意檔案讀取或者任意命令執行。 |
遠程檔案包含(RFI) | 遠程檔案包含(RFI)攻擊通過包含遠程伺服器上的檔案,使得攻擊者能夠在本機伺服器上執行遠程惡意代碼。 |
webshell | Webshell是一種惡意指令檔,通過上傳或注入這些檔案,攻擊者可以遠端控制伺服器。 |
OS命令注入 | 作業系統命令注入攻擊通過在程式中嵌入惡意作業系統命令,使伺服器執行這些命令,從而實現攻擊目的。 |
掃描器行為 | 這通常指的是Web應用程式掃描器的行為和特點。這些工具自動化地掃描Web應用以發現潛在的安全性漏洞。它們定位常見的漏洞如SQL注入、跨站指令碼(XSS)等,通過產生並發送大量請求來分析應用的響應。 |
商務邏輯缺陷 | 商務邏輯缺陷是應用程式在實現其商務程序時存在的漏洞。這些漏洞通常不能通過傳統的輸入驗證和輸出編碼來防禦。它們可能允許攻擊者通過操縱應用程式的正常工作流程來實現未授權訪問或其他惡意行為。 |
任意檔案讀取 | 任意檔案讀取漏洞允許攻擊者讀取系統上任何檔案,通常通過HTTP請求中的檔案路徑參數。利用這種漏洞,攻擊者可以訪問敏感資訊,如設定檔、憑證和個人資料。 |
任意檔案下載 | 任意檔案下載漏洞類似於任意檔案讀取,但它專註於允許攻擊者下載系統上的任意檔案。這可能導致敏感資訊泄露,甚至使攻擊者擷取系統的完整備份以進行離線分析。 |
外部實體注入 | XXE漏洞利用XML解析器在解析外部實體時的特性,允許攻擊者讀取系統檔案、執行伺服器端請求(SSRF)或導致拒絕服務(DoS)。這種攻擊通常通過包含惡意外部實體的XML輸入實現。 |
跨站請求偽造 | CSRF攻擊通過欺騙認證使用者向Web應用程式發送未經授權的請求來執行惡意操作。通常,攻擊者會誘騙使用者點擊惡意連結或訪問惡意網頁,從而在使用者的身份下執行某些操作,如更改設定或提交表單。 |
運算式注入 | 運算式注入攻擊是指通過嵌入惡意運算式,使伺服器執行這些運算式,從而實現攻擊目的。 |
.net還原序列化 | 還原序列化是將資料從一種格式(例如JSON、XML或二進位)轉換回對象的過程。在.NET應用中,不安全的還原序列化可能導致任意代碼執行。如果攻擊者能夠控制還原序列化的資料,他們可能會注入惡意資料,從而執行任意代碼。 |
Java還原序列化 | Java還原序列化攻擊通過還原序列化惡意對象,使伺服器在還原序列化過程中執行惡意代碼。 |
PHP還原序列化 | PHP還原序列化攻擊通過還原序列化惡意對象,使伺服器在還原序列化過程中執行惡意代碼。 |
SSRF(伺服器端請求偽造) | 伺服器端請求偽造(SSRF)攻擊通過偽造伺服器端請求,使伺服器訪問內部或外部資源,從而實現攻擊目的。 |
路徑穿透 | 路徑穿透攻擊通過注入相對路徑(如../),訪問伺服器上的不應公開的檔案。 |
協議違背 | 協議違背是通過惡意操縱協議(如HTTP、HTTPS等)的方式,進行攻擊或繞過安全機制。 |
任意檔案上傳 | 任意檔案上傳攻擊通過上傳惡意檔案,使伺服器執行這些檔案,從而實現攻擊目的。 |