本方案旨在通過Web Application Firewall(Web Application Firewall,簡稱WAF)為已接入內容分發網路(CDN)的網域名稱提供安全防護。通過在CDN回源鏈路上部署WAF,實現對HTTP/HTTPS流量的即時檢測與清洗,確保僅正常業務流量到達來源站點,有效抵禦Web攻擊。
適用範圍
適用架構:本文適用於“CDN+ECS”的動靜混合架構,旨在確保靜態資源繼續由CDN加速的同時,由WAF專註於保護動態資源。若業務採用“CDN+OSS”純靜態託管架構,因OSS僅儲存靜態檔案且不存在應用程式層攻擊風險,接入WAF提供的防護有限,反而會增加回源鏈路與訪問延遲,故不建議接入。
操作前提:目標網域名稱已接入阿里雲 CDN、DCDN 或其他廠商的 CDN 服務。
操作說明:本文以阿里雲 CDN 為例闡述操作步驟,其邏輯同樣適用於 DCDN 或其他廠商的 CDN 服務,操作時請參照執行。
業務影響:建議在業務低峰期執行本文操作,以最小化對業務的影響。
選擇合適的接入方式
WAF支援與其他雲產品協同部署以構建縱深防禦體系。在未接入WAF的架構中,使用者請求經DNS解析至CDN節點後直接回源,導致攻擊流量與正常業務流量直達來源站點伺服器。
WAF提供CNAME接入與雲產品接入兩種模式,具體對比如下。請結合業務架構特性,選擇適配的接入方案。
對比項 | 雲產品接入 | CNAME接入 |
方案優勢 | 無需調整CDN回源配置,對業務影響較小,適用於快速接入情境。 | 適用情境廣泛,功能限制較少,支援跨帳號及跨雲部署。 |
接入對象 | 阿里雲雲產品執行個體。 | 網域名稱。 |
使用限制 |
| 配置稍複雜,需配置CDN回源、擷取真實用戶端IP等。 |
如需瞭解更多的接入方式對比與原理介紹,請參見接入概述。
操作步驟
開通WAF(僅限WAF未開通時):若尚未開通WAF服務,請訪問Web Application Firewall3.0(隨用隨付)購買頁,初次使用建議選擇付費模式為按量付费。具體購買流程,請參見開通WAF 3.0隨用隨付執行個體。
前往WAF控制台:登入Web Application Firewall控制台,在頂部功能表列,選擇WAF執行個體的資源群組和地區(中國內地、非中國內地),然後在左側導覽列,單擊接入管理。
接入資產:從CNAME接入或雲產品接入中選擇一種方式完成資產接入。
說明以下操作需參考CDN已配置的資訊。為確保配置準確,請先前往CDN控制台確認網域名稱、回源等相關配置後再繼續操作。
CNAME接入
在CNAME接入頁簽,單擊接入。在配置監聽頁面,需要關注以下配置。
配置項
說明
網域名稱
填寫已接入CDN的網域名稱,僅支援填寫一個需防護的網域名稱,包括精確網域名稱(如
www.aliyundoc.com)或萬用字元網域名稱(如*.aliyundoc.com)。協議類型與連接埠
請根據CDN已配置的回源協議與回源連接埠進行選擇:
協議選擇:需與CDN回源協議保持一致。
連接埠選擇:需與CDN回源連接埠保持一致。
預設情況下,當CDN回源連接埠配置為443時,使用HTTPS協議回源;其餘連接埠則使用HTTP協議回源。
若使用HTTPS協議,需上傳與網域名稱匹配的認證檔案。若該認證此前已上傳至本帳號的數位憑證管理服務,可直接選擇已有認證進行配置。
WAF前是否有七層代理(高防/CDN等)
由於業務前置了CDN,必須在此處選擇是。若配置錯誤,WAF將無法擷取真實用戶端IP,導致報表資料將所有請求來源顯示為CDN節點。
客戶端IP判定方式選擇【推薦】取指定Header欄位中的第一個IP作為客戶端源IP,避免XFF偽造。
指定Header欄位填寫
ali-cdn-real-ip。這是阿里雲CDN回源請求中預設攜帶的、用於儲存真實用戶端IP的HTTP要求標頭。
說明阿里雲CDN回源請求中用於儲存真實用戶端IP的欄位為
ali-cdn-real-ip。若使用其他CDN產品,請查閱其官方文檔以確認對應的欄位名稱。此外,也可以通過配置CDN增加自訂出站要求標頭,來使用自訂的回源欄位。
單擊下一步,進入配置轉寄頁面,填寫伺服器位址後,單擊提交。
此處的伺服器位址應與CDN控制台填寫的來源站點地址一致。
在接入完成頁,單擊複製CNAME。
前往CDN控制台。單擊域名管理,定位至接入WAF的網域名稱,單擊操作列的管理。在源站信息地區,單擊操作列的編輯,將源站信息修改為上一步複製的CNAME地址。此操作將CDN回源路徑指向WAF。
重要當存在以下情境時,還需執行相應的額外配置:
CDN回源HOST配置:若已配置預設回源HOST,需同步進行修改,將CDN回源路徑指向WAF。
靜態檔案繞過WAF:為減少效能損耗,若需使用戶端對靜態檔案的請求繞過WAF,需配置CDN條件來源站點或將相關資源加入WAF白名單。
來源站點記錄真實用戶端IP:若需在來源站點伺服器(如Nginx的 access.log)記錄真實用戶端IP,需配置來源站點以提取真實IP欄位。詳細資料,請參見擷取用戶端真實 IP。
CNAME接入進階功能:WAF的CNAME接入方式支援HTTPS、IPv6、回源負載平衡及高可用等進階功能。如需自訂相關配置,請參見通過CNAME接入為網站開啟WAF防護。
雲產品接入
在雲產品接入頁簽,選擇需接入的雲產品類型,以ECS執行個體為例,單擊云服务器 ECS,然後定位至目標執行個體,單擊其操作列的立即接入。
說明若接入其他雲產品,請參照以下配置項,並依據對應的雲產品接入文檔完成配置。
在彈出的立即接入頁面,單擊操作列的添加連接埠,根據CDN已配置的回源協議與回源連接埠進行選擇:
協議選擇:需與CDN回源協議保持一致。
連接埠選擇:需與CDN回源連接埠保持一致。
預設情況下,當CDN回源連接埠配置為443時,使用HTTPS協議回源;其餘連接埠則使用HTTP協議回源。
若使用HTTPS協議,需上傳與網域名稱匹配的認證檔案。若該認證此前已上傳至本帳號的數位憑證管理服務,可直接選擇已有認證進行配置。配置完成後單擊确定。
返回立即接入頁面,由於業務前置了CDN,必須在WAF前是否有七層代理(高防/CDN等)地區,選擇是。若配置錯誤,WAF將無法擷取真實用戶端IP,導致報表資料將所有請求來源顯示為CDN節點。
客戶端IP判定方式選擇【推薦】取指定Header欄位中的第一個IP作為客戶端源IP,避免XFF偽造。
指定Header欄位填寫
ali-cdn-real-ip。這是阿里雲CDN回源請求中預設攜帶的、用於儲存真實用戶端IP的HTTP要求標頭。
說明阿里雲CDN回源請求中用於儲存真實用戶端IP的欄位為
ali-cdn-real-ip。若使用其他CDN產品,請查閱其官方文檔以確認對應的欄位名稱。此外,也可以通過配置CDN增加自訂出站要求標頭,來使用自訂的回源欄位。
單擊確定完成接入。
說明為減少效能損耗,若需使用戶端對靜態檔案的請求繞過WAF,還需配置CDN條件來源站點或將相關資源加入WAF白名單。
驗證測試:在瀏覽器輸入接入的網站網域名稱,測試CDN與WAF接入是否成功。
在網域名稱後輸入Web攻擊代碼(例如
<被防護網域名稱>/alert(xss),alert(xss)為用作測試的跨站指令碼攻擊代碼),如果返回405攔截提示頁面,表示攻擊被攔截,WAF防護成功。按F12開啟瀏覽器開發人員工具,重新整理頁面後切換至Network頁簽。單擊目標靜態資源,在Headers頁簽中定位至X-Cache欄位,若顯示hit而非miss,即表示命中緩衝,CDN加速生效。

配置WAF自訂防護規則:WAF為接入的對象預設啟用一系列防護規則,適用於日常防護情境,可以在頁面查看。當預設規則無法滿足業務需求時(例如需將具備特定特徵的請求加入白名單予以允許存取),可建立或修改防護規則。更多資訊,請參見防護配置概述。
常見問題
CNAME接入後,WAF控制台顯示“DNS解析未知,網域名稱啟用了代理”怎麼辦?
使用CNAME接入方式時,控制台出現此提示屬於正常現象。這是因為網域名稱的DNS解析直接指向了CDN,導致WAF無法直接擷取解析狀態,無需關注此提示。
如需確認接入是否成功,請參照前文提到的驗證測試步驟進行實際測試即可。
接入WAF完成後,是否需要重新整理CDN緩衝?
通常無需重新整理CDN緩衝。但在特定配置變更下,需手動執行重新整理操作。具體說明如下:
無需重新整理的情況
僅完成WAF接入配置,未對來源站點內容進行任何變更。由於來源站點靜態資源未發生改變,CDN節點現有緩衝依然有效。
需要重新整理的情況
存在以下任一情況時,需手動重新整理CDN緩衝以確保配置生效:
修改了來源站點的靜態資源檔案。
調整了與緩衝策略相關的HTTP回應標頭。
啟用了WAF的Bot管理功能,並配置了自動整合Web SDK。
接入完成後訪問網站提示重新導向的次數過多怎麼辦?
通常是因為來源站點伺服器配置了 HTTP 強制跳轉 HTTPS 的規則,導致流量在 WAF/CDN 與來源站點之間形成了死迴圈。
需要在來源站點伺服器的前一跳裝置上,將回源協議配置為 HTTPS。根據採用的接入方式,具體配置位置如下:
CNAME 接入:前一跳裝置為 WAF。
雲產品接入:前一跳裝置為 CDN。
更多資訊,請參見重新導向次數過多的解決方案。
ESA控制台提供的WAF防護功能與本文的WAF有什麼區別?
CDN引入WAF後是否需要修改網域名稱DNS解析?
不需要修改網域名稱DNS解析。無論採用雲產品接入還是CNAME接入方式,用戶端請求均先到達CDN節點,因此無需更改網域名稱的DNS解析記錄。但需注意以下配置調整:
若採用 CNAME接入方式,需將CDN的回源地址修改為WAF提供的CNAME地址,並在WAF配置擷取用戶端真實IP。具體操作請參見上文操作步驟。