如果您的網站遭受的攻擊既有流量型攻擊,又混雜精巧的Web應用程式層攻擊時(例如SQL注入、跨站指令碼攻擊、命令注入等)時,推薦您組合使用阿里雲DDoS高防和Web Application Firewall (WAF),通過多層次的安全防護對抗多種潛在威脅。本文介紹如何同時部署DDoS高防和WAF。
網路架構
DDoS高防和WAF同時部署時採用以下網路架構:DDoS高防(入口層,防禦DDoS攻擊)->WAF(中介層,防禦Web應用攻擊)->來源站點伺服器(ECS、SLB、VPC、IDC等)。網站業務流量會先經過DDoS高防清洗,然後轉寄到WAF過濾Web攻擊,最後只有正常的業務流量被轉寄到來源站點伺服器,保障網站的業務安全和資料安全。業務流量的轉寄過程如下圖所示。
注意事項
訪問請求將經過多層中間代理才到達來源站點,來源站點不能直接擷取請求的真實來源IP。如果您需要擷取訪問請求的真實來源IP,請參見配置DDoS高防後擷取真實的請求來源IP。
前提條件
已購買DDoS高防執行個體。更多資訊,請參見購買DDoS高防執行個體。
已購買WAF執行個體。更多資訊,請參見購買WAF 3.0訂用帳戶執行個體或開通WAF 3.0隨用隨付執行個體。
說明本文以WAF 3.0為例介紹,如果您使用的是WAF 2.0也可以參考本文操作。
步驟一:網站業務接入WAF
支援CNAME接入和雲產品接入兩種方式,接入前請您詳細瞭解各接入方式的推薦情境。詳細資料,請參見接入概述。
登入Web Application Firewall3.0控制台。在頂部功能表列,選擇WAF執行個體的資源群組和地區(中國內地、非中國內地)。
在左側導覽列,單擊接入管理。
通過CNAME接入或雲產品接入,將業務接入WAF。
CNAME接入
- 在CNAME接入頁簽單擊接入。
在配置監聽嚮導頁,完成如下配置後,單擊下一步。
僅簡要介紹各配置項,更詳細的配置項介紹,請參見通過CNAME接入為網站開啟WAF防護。
配置項
配置說明
網域名稱
填寫您的網站網域名稱。
協議類型
選擇網站使用的協議類型並填寫對應連接埠。每輸入一個連接埠,按斷行符號確認。
說明選中HTTPS後,您還需要將網站網域名稱關聯的認證上傳到WAF。
選中HTTPS並配置認證後,您也可以根據業務需要,設定是否開啟HTTP2、是否開啟HTTPS的強制跳轉、選擇TLS協議版本、選擇HTTPS加密套件。
WAF前是否有七層代理(高防/CDN等)
選擇是,並設定客戶端IP判定方式。
(預設)取X-Forwarded-For中的第一個IP作為客戶端源IP
WAF預設讀取請求Header欄位
X-Forwarded-For(XFF)中的第一個IP地址作為用戶端IP。【推薦】取指定Header欄位中的第一個IP作為客戶端源IP,避免XFF偽造
如果您的網站業務已通過其他代理服務的設定,規定將用戶端源IP放置在某個自訂的Header欄位(例如,X-Client-IP、X-Real-IP),則您需要選擇該選項,並在指定Header欄位框中輸入對應的Header欄位。
說明推薦您在業務中使用自訂Header存放用戶端IP,並在WAF中配置對應Header欄位。該方式可以避免攻擊者偽造XFF欄位,躲避WAF的檢測規則,提高業務的安全性。
更多配置
根據您的業務,設定是否開啟IPv6、是否開啟獨享IP,選擇要使用的防護資源類型。
資源群組
從資源群組下拉式清單中選擇該網域名稱所屬資源群組。如果不選擇,則預設加入默認資源組。
在配置轉寄嚮導頁,完成如下配置後,單擊提交。
在接入完成嚮導頁,擷取WAF提供的CNAME地址。
配置項
說明
負載平衡演算法
來源站點有多個伺服器位址時,根據業務需要設定,以實現負載平衡。
伺服器位址
填寫網站對應的來源站點伺服器的公網IP地址或來源站點網域名稱,用於接收WAF轉寄回源的正常業務請求(回源請求)。
HTTPS進階設定
根據業務需要,設定是否開啟HTTP回源、是否啟用回源SNI。
其它進階設定
根據業務需要,設定是否啟用流量標記、WAF回源到來源站點的逾時時間、回源重試、回源長串連。
雲產品接入
具體操作,請參見雲產品接入。
如果Web業務已啟用阿里雲應用型負載平衡(Application Load Balancer,簡稱ALB)、微服務引擎(Microservices Engine,簡稱MSE)、Function Compute(Function Compute,簡稱FC),建議您選擇SDK外掛程式接入。如果Web業務已啟用阿里雲傳統型負載平衡(Classic Load Balancer,簡稱CLB)上、雲端服務器(Elastic Compute Service,簡稱ECS),建議您通過反向 Proxy叢集接入。
步驟二:網站業務接入DDoS高防
登入DDoS高防控制台。
在頂部功能表列左上方處,根據DDoS高防產品選擇地區。
DDoS高防(中國內地):選擇中國內地地區。
DDoS高防(非中國內地):選擇非中國內地地區。
在左側導覽列,選擇。
在網域名稱接入頁面,單擊添加網站,填寫網站接入資訊,然後單擊下一步。
配置項
說明
功能套餐
選擇要關聯的DDoS高防執行個體的功能套餐。
執行個體
選擇要關聯的DDoS高防執行個體。
一個網站網域名稱最多可以關聯8個DDoS高防執行個體,且只能關聯同一種功能套餐下的多個執行個體。
網站
填寫您的網站網域名稱。
協議類型
選擇網站支援的協議類型。
說明選擇HTTPS協議時,完成網站配置後,請上傳網站網域名稱使用的認證。
選中HTTPS協議後,可以根據需要開啟HTTPS的強制跳轉、是否開啟HTTP回源、是否啟用HTTP2。
關於如何上傳認證、自訂安全性原則、啟用OCSP Stapling,請參見添加網站配置。
伺服器位址
網域名稱在WAF上的接入模式為CNAME接入時,選擇來源站點網域名稱並填寫步驟一中擷取的WAF的CNAME地址。
網域名稱在WAF上的接入模式為雲產品接入時,選擇來源站點IP並填寫來源站點伺服器的公網IP。
服務器連接埠
根據協議類型,設定來源站點提供對應服務的連接埠。
HTTP協議、Websocket協議的連接埠預設為80。
HTTPS協議、HTTP2協議、Websockets協議的連接埠預設為443。
您可以單擊自訂,自訂伺服器連接埠,多個連接埠間使用半形逗號(,)分隔。
Cname Reuse
僅DDoS高防(非中國內地)支援配置該參數。選擇是否開啟CNAME複用。更多資訊,請參見CNAME複用。
填寫轉寄配置,然後單擊下一步。
回源設定
回源負載演算法:當配置了多個來源站點IP或來源站點網域名稱時,可通過修改回源負載平衡演算法或者為不同伺服器設定權重,決定流量在多個來源站點間的分配方式。
方案
適用情境
機制說明
輪詢(預設)
多來源站點且對來源站點負載均勻要求較高的情境。
所有請求輪流分配給所有伺服器位址,預設所有伺服器位址具有相同權重。支援修改伺服器權重,伺服器權重越大,被分配到請求的可能性越高。
IP hash
需要保持使用者會話一致性的情境,極端情況下可能存在負載不均衡。
將來自同一用戶端IP的請求始終定向到同一台來源站點伺服器,以保證會話一致性。支援設定IP hash的同時為伺服器設定權重,根據伺服器的處理能力進行權重分配,可將流量優先導向效能更強的伺服器。
Least time
對訪問速度和響應延遲極其敏感的業務(如遊戲、線上交易)。
通過智能DNS解析能力和Least time回源演算法,保證業務流量從接入防護節點到轉寄回來源站點伺服器整個鏈路的時延最短。
回源重試:表示對網域名稱轉寄來源站點的可用性進行健全狀態檢查的探測次數,預設值3。回源重試機制如下:
僅當業務流量訪問高防節點時觸發回源重試功能,當高防節點檢測到標題來源站不可用時會進行回源重試。
超過重試次數仍然不可達時將進入靜默狀態,不再對該來源站點進行流量轉寄和探測。
靜默結束後重新根據業務流量觸發回源重試功能。如果回源重試成功,則對來源站點重新拉起。
流量標記:
要求標頭欄位轉寄配置:DDoS高防支援要求頭轉寄配置功能,可以在轉寄請求到來源站點時添加或修改HTTP要求標頭資訊,協助識別和標記通過高防的流量。
插入 X-Client-IP 擷取真實IP:用於傳遞用戶端真實原始的IP地址。
插入 X-True-IP 擷取建連IP:用於傳遞用戶端建立串連的IP地址。
插入 Web-Server-Type 擷取服務類型:通常由第一個代理添加,用於告知後端伺服器處理當前請求的前端Web伺服器或代理類型。
插入 WL-Proxy-Client-IP 擷取建連IP:功能與X-Client-IP相同,為 Oracle WebLogic Server 特有的要求標頭。
插入 X-Forwarded-Proto 擷取監聽協議:用戶端與第一個代理之間建立串連所使用的協議。
流量標記
預設標記
說明JA3指紋、JA4指紋、客戶端指紋、HTTP2.0指紋需聯絡商務經理配置。
如果業務使用自訂欄位代替預設標記,請參考下文自訂Header。配置後,從高防轉寄到來源站點的請求中解析該欄位,解析樣本請參見配置DDoS高防後擷取真實的請求來源IP。
客戶端真實源連接埠:HTTP Header中用戶端真實源連接埠所在的頭部欄位名,通常使用
X-Forwarded-ClientSrcPort欄位記錄。客戶端真實源IP:HTTP Header中用戶端真實源IP所在的頭部欄位名,通常使用
X-Forwarded-For欄位記錄。JA3指紋:HTTP Header中用戶端JA3指紋的MD5雜湊值所在的頭部欄位名,通常使用
ssl_client_ja3_fingerprinting_md5欄位記錄。JA4指紋:HTTP Header中用戶端JA4指紋MD5雜湊值所在的頭部欄位名,通常使用
ssl_client_ja4_fingerprinting_md5欄位記錄。客戶端指紋:HTTP Header中用戶端TLS指紋的MD5雜湊值所在的頭部欄位名,通常使用
ssl_client_tls_fingerprinting_md5欄位記錄。HTTP2.0指紋:HTTP Header中用戶端HTTP2.0指紋的MD5雜湊值所在的頭部欄位名,通常使用
http2_client_fingerprint_md5欄位記錄
自訂Header:在請求中增加自訂HTTP Header(包含欄位名稱和欄位值)來標記經過DDoS的請求。高防在代理網站流量時,會在轉寄到來源站點的請求中添加對應的欄位值,方便後端服務進行統計分析。
命名限制:為避免關聯請求原始頭部欄位的內容被改寫,自訂Header的欄位名(Key)不得使用以下保留或常用欄位:
高防預設欄位:
X-Forwarded-ClientSrcPort:預設被用於擷取訪問高防七層引擎的用戶端連接埠。X-Forwarded-ProxyPort:預設被用於擷取訪問高防七層引擎的監聽連接埠。X-Forwarded-For:預設被用於擷取訪問高防七層引擎的用戶端IP。ssl_client_ja3_fingerprinting_md5:預設被用於擷取用戶端JA3指紋MD5雜湊值。ssl_client_ja4_fingerprinting_md5:預設被用於擷取用戶端JA4指紋MD5雜湊值。ssl_client_tls_fingerprinting_md5:預設被用於擷取用戶端TLS指紋的MD5雜湊值。http2_client_fingerprint_md5:預設被用於擷取用戶端HTTP2.0指紋的MD5雜湊值。
標準HTTP欄位:如host、user-agent、connection、upgrade等。
常見代理欄位:如x-real-ip、x-true-ip、x-client-ip、web-server-type、wl-proxy-client-ip、eagleeye-rpcid、eagleeye-traceid、x-forwarded-cluster、x-forwarded-proto等被廣泛使用的自訂HTTP頭部欄位。
數量限制:最多支援添加5個自訂Header標籤。
配置建議:
請優先使用預設標記。
建議先在測試環境驗證header欄位配置效果後再應用到生產環境。
欄位值長度建議控制在100字元以內,避免影響轉寄效能。
Cname Reuse:選擇是否開啟CNAME複用。開啟CNAME複用後,只需將同一個伺服器上多個網域名稱的解析指向同一個高防CNAME地址,即可將多個網域名稱接入高防,無需為每個網域名稱分別添加高防網站配置。更多資訊,請參見CNAME複用。
重要僅DDoS高防(非中國內地)支援配置該參數。
其他設定
開啟HTTP回源:如果網站不支援HTTPS回源,請務必開啟該設定。開啟該設定後,所有HTTPS協議請求將通過HTTP協議回源、所有Websockets協議請求將通過Websocket協議回源,且預設回源連接埠為80。
說明HTTPS非標準連接埠(443以外的連接埠)訪問的情境下,如果開啟了HTTP回源,則訪問預設跳轉到來源站點HTTP 80連接埠。
HTTP2.0回源:啟用HTTP2.0回源後,DDoS將通過HTTP2.0協議向來源站點回源。
警告此功能配置,需聯絡商務經理開通。
若來源站點不支援HTTP2.0,請勿配置,否則網站無法訪問。
cookie設定
下發狀態:預設開啟。DDoS高防將會在用戶端(如瀏覽器)植入Cookie用於區分統計不同用戶端或者擷取用戶端的指紋資訊等。詳細介紹,請參見設定CC安全防護。
重要如果應用在接入高防後出現登入閃退或會話丟失問題,可以嘗試關閉此開關。但請注意,關閉後部分CC防護功能將無法生效。
Secure屬性:預設關閉。若開啟,Cookie只會在HTTPS串連中被發送,而不會在HTTP串連中發送,有助於保護Cookie不被攻擊竊取。
說明當網站業務僅支援HTTPS連結時建議開啟。
設定新建連線逾時時間:DDoS高防嘗試建立到來源站點的連線時間。
說明超過該時間串連未建立完成,會被認定為失敗。
設定讀連線逾時時間:DDoS高防成功建立串連並向來源站點發出讀取資料請求之後,等待來源站點返迴響應資料的最長時間。
設定寫連線逾時時間:資料從DDoS高防發送出去之後,並由來源站點開始處理之前,DDoS高防等待的時間長度。
說明超過這段時間,如果DDoS高防還沒有成功地將所有資料發送給來源站點,或者來源站點沒有開始處理資料,會被認定為失敗。
回源長串連:由於在快取服務器與來源站點之間,TCP串連在一段時間內保持活躍,而不是每完成一次請求就關閉,從而造成資源浪費。開啟回源長串連後可減少建立串連的時間和資源消耗,提高請求處理的效率與速度。
複用長連接的請求個數:在DDoS高防向來源站點建立的一個TCP串連中,支援發送的HTTP請求個數,可以減少因頻繁建立和關閉串連所帶來的延遲和資源消耗。
說明建議小於等於後端來源站點(如:WAF、SLB)上配置的長串連請求複用個數,以免長串連關閉造成業務無法訪問。
空閑長連線逾時時間:DDoS高防向來源站點建立的一個TCP長串連,在沒有資料轉送之後,在高防的串連池保持開啟狀態的最長時間。這個時間段內如果沒有新的請求,該串連將被關閉,以釋放系統資源。
說明建議小於等於後端來源站點(如:WAF、SLB)上配置的逾時時間長度,以免長串連關閉造成業務無法訪問。
複製DDoS高防提供的CNAME地址。
步驟三:修改網域名稱的DNS解析
請將網域名稱解析指向DDoS高防提供的CNAME地址。以網域名稱DNS託管在阿里雲Alibaba Cloud DNS為例介紹,使用其他DNS服務商的網域名稱解析服務時請參考配置。
在網域名稱解析頁面,定位到目標網域名稱,單擊操作列的解析设置。
在解析设置頁面,定位到目標解析記錄,單擊操作列的修改。
說明如果要操作的解析記錄不在記錄列表中,您可以單擊添加记录。
在修改记录(或添加记录)頁面,選擇记录类型為CNAME,並將记录值修改為網域名稱對應的DDoS高防CNAME地址(即步驟二中擷取到的DDoS高防CNAME地址)。
單擊确认,等待修改後的解析設定生效。
使用瀏覽器測試網站訪問是否正常。
相關文檔
修改DNS解析後,如果網站訪問出現異常,請參見業務接入DDoS高防後存在卡頓、延遲、訪問不通等問題。
同時部署DDoS高防和CDN時,請參見DDoS高防和CDN或DCDN聯動。