將七層CLB(HTTP/HTTPS)實例接入WAF
如果您已創(chuàng)建阿里云傳統(tǒng)型負載均衡(Classic Load Balancer,簡稱CLB)實例,且已為端口添加HTTP或HTTPS監(jiān)聽,您可以添加該端口到Web應(yīng)用防火墻(Web Application Firewall,簡稱WAF),將Web業(yè)務(wù)引流到WAF防護。本文介紹如何將七層CLB(HTTP/HTTPS)實例接入WAF。
背景信息
CLB通過設(shè)置虛擬服務(wù)地址,將添加的同一地域的多臺云服務(wù)器虛擬成一個高性能和高可用的后端服務(wù)池,并根據(jù)轉(zhuǎn)發(fā)規(guī)則,將來自客戶端的請求分發(fā)給后端服務(wù)器池中的云服務(wù)器。更多信息,請參見什么是傳統(tǒng)型負載均衡CLB。
WAF支持為七層CLB實例開啟安全防護。將七層CLB實例接入WAF后,實例所有的Web業(yè)務(wù)流量將被指定網(wǎng)關(guān)牽引到WAF進行檢測。WAF過濾Web應(yīng)用攻擊后,將正常的業(yè)務(wù)流量轉(zhuǎn)發(fā)回CLB服務(wù)器。具體網(wǎng)絡(luò)架構(gòu)如下圖所示:
使用限制
云產(chǎn)品接入適用于快速將阿里云ALB、MSE、FC、SAE 2.0、CLB或ECS資源接入WAF防護。如需防護非阿里云資源的Web應(yīng)用,請通過CNAME接入方式將域名下業(yè)務(wù)接入WAF,具體操作請參見添加域名。
限制項類型 | 描述 |
支持的實例 | 同時滿足:
|
支持的地域 |
|
引流端口配置的數(shù)量 | 與防護對象數(shù)量保持一致:
|
TLS安全策略 | 配置HTTPS監(jiān)聽的引流端口僅支持CLB內(nèi)置的TLS安全策略。如果該端口配置了內(nèi)置TLS安全策略以外的其他自定義TLS安全策略,會導(dǎo)致接入失敗。更多信息,請參見TLS安全策略有哪些。 |
業(yè)務(wù)同時接入DDoS高防和WAF | 如果您的業(yè)務(wù)需要同時接入DDoS高防和WAF,則只有在業(yè)務(wù)通過域名接入(即七層接入模式)接入DDoS高防時,該業(yè)務(wù)才支持通過透明接入模式接入WAF。 |
前提條件
已開通WAF 3.0服務(wù)。具體操作,請參見開通包年包月WAF 3.0、開通按量付費WAF 3.0。
已創(chuàng)建滿足使用限制的CLB實例,且已為CLB實例添加HTTP或HTTPS監(jiān)聽。關(guān)于使用限制描述,請參見使用限制。關(guān)于為CLB實例添加HTTP或HTTPS監(jiān)聽的具體操作,請參見添加HTTP監(jiān)聽、添加HTTPS監(jiān)聽。
如果您開通的是包年包月實例,請確認您的實例還可以添加防護對象。否則,將無法進行云產(chǎn)品接入。
您可以訪問防護對象頁面,查看實例還可以添加的防護對象數(shù)。
添加引流端口
實例首次接入WAF時,Web業(yè)務(wù)可能會出現(xiàn)秒級閃斷。在客戶端可自動重連的情況下該閃斷會自動恢復(fù),不會對您的業(yè)務(wù)造成影響,請您關(guān)注業(yè)務(wù)并根據(jù)業(yè)務(wù)系統(tǒng)評估準(zhǔn)備重連或回源等相關(guān)容災(zāi)機制。
CLB(HTTP/HTTPS)實例接入WAF后,如果進行如下操作,引流端口會自動取消接入。您需要重新添加端口,否則,業(yè)務(wù)流量將不會經(jīng)過WAF防護。
更換實例上綁定的公網(wǎng)IP
引流端口的證書更換為非數(shù)字證書管理服務(wù)(原 SSL 證書)購買的證書
開啟雙向認證
CLB實例或配置的接入WAF防護的監(jiān)聽端口被刪除
登錄Web應(yīng)用防火墻3.0控制臺。在頂部菜單欄,選擇WAF實例的資源組和地域(中國內(nèi)地、非中國內(nèi)地)。
在左側(cè)導(dǎo)航欄,單擊接入管理。
選擇云產(chǎn)品接入頁簽,在左側(cè)云產(chǎn)品類型列表,選擇CLB(HTTP/HTTPS)。
單擊接入。
根據(jù)頁面提示,單擊立即授權(quán),完成云產(chǎn)品授權(quán)。
完成后,阿里云將自動為您創(chuàng)建WAF服務(wù)關(guān)聯(lián)角色AliyunServiceRoleForWAF。您可以在RAM控制臺的 頁面,查看阿里云為WAF自動創(chuàng)建的服務(wù)關(guān)聯(lián)角色。
說明如果您已經(jīng)完成云產(chǎn)品授權(quán),則授權(quán)頁面不會出現(xiàn),您可以直接執(zhí)行后續(xù)步驟。
在接入資產(chǎn)- 七層CLB面板,完成如下配置。
配置項
相關(guān)操作
選擇需要添加的實例&端口
同步最新資產(chǎn)
如果要添加的實例未同步到實例列表,單擊同步最新資產(chǎn),更新實例列表。
添加端口
定位到要添加的實例,單擊操作列的添加端口。
選擇要添加的HTTP或HTTPS端口,單擊確定。
重要如果要添加HTTPS端口,請確認該端口配置的證書是通過阿里云數(shù)字證書管理服務(wù)(原 SSL 證書)購買的,或已上傳到數(shù)字證書管理服務(wù)(原 SSL 證書)。否則會因為WAF證書來源校驗失敗,而造成實例接入失敗。更多信息,請參見添加HTTPS引流端口時,顯示CLB證書不全,該如何處理?
七層CLB(HTTP/HTTPS)實例存在過期證書或來源為手動上傳證書,無法同步CLB實例證書。您需要替換過期證書或把來源為手動上傳的證書更換為數(shù)字證書管理服務(wù)(原SSL)的證書,登錄SSL證書控制臺。
WAF前是否有七層代理(高防/CDN等)
如果網(wǎng)站在接入WAF前啟用了其他七層代理服務(wù)(例如DDoS高防、CDN等),配置該功能。
選擇否(默認),表示W(wǎng)AF收到客戶端直接發(fā)起的業(yè)務(wù)請求(不是從其他代理服務(wù)轉(zhuǎn)發(fā)的請求)。
說明WAF直接取與WAF建立連接的IP(來自請求的
REMOTE_ADDR
字段)作為客戶端IP。選擇是,表示W(wǎng)AF收到的業(yè)務(wù)請求來自其他七層代理服務(wù)轉(zhuǎn)發(fā)(不是客戶端直接發(fā)起的請求)。為保證WAF可以獲取真實的客戶端IP進行安全分析,您需要進一步設(shè)置客戶端IP判定方式。
WAF默認讀取請求Header字段
X-Forwarded-For
(XFF)中的第一個IP地址作為客戶端IP。如果您的網(wǎng)站業(yè)務(wù)已通過其他代理服務(wù)的設(shè)置,規(guī)定將客戶端源IP放置在某個自定義的Header字段(例如,X-Client-IP、X-Real-IP),則您需要選擇該選項,并在指定Header字段框中輸入對應(yīng)的Header字段。
說明推薦您在業(yè)務(wù)中使用自定義Header存放客戶端IP,并在WAF中配置對應(yīng)Header字段。該方式可以避免攻擊者偽造XFF字段,躲避WAF的檢測規(guī)則,提高業(yè)務(wù)的安全性。
支持輸入多個Header字段。每輸入完一個Header字段,按回車進行確認。如果設(shè)置了多個Header,WAF將按順序嘗試讀取客戶端IP。如果第一個Header不存在,則讀取第二個,以此類推。如果所有指定Header都不存在,則讀取XFF中第一個IP地址作為客戶端IP。
資源組
從資源組列表中選擇該域名所屬資源組。如果不選擇,則默認加入默認資源組。
說明您可以使用資源管理服務(wù)創(chuàng)建資源組,根據(jù)業(yè)務(wù)部門、項目等維度對云資源進行分組管理。更多信息,請參見創(chuàng)建資源組。
高級設(shè)置
啟用流量標(biāo)記可以幫助源站區(qū)分經(jīng)過WAF的請求,獲取客戶真實源IP或源端口。
例如,如果攻擊者在域名接入WAF前,已獲取源站IP信息,并通過購買其他WAF實例,將請求回源到目標(biāo)源站時,您可以在源站對啟用流量標(biāo)記的字段進行校驗。如果請求中存在指定標(biāo)記字段,則為WAF檢測后的正常請求,放行該請求;如果請求中不存在指定標(biāo)記字段,則為攻擊者請求,攔截該請求。
您可以配置如下類型的標(biāo)記字段:
通過配置Header名和Header值,使WAF在回源請求中添加該Header信息,標(biāo)記經(jīng)過WAF的請求(區(qū)分沒有經(jīng)過WAF的請求,便于您的后端服務(wù)統(tǒng)計分析)。
例如,您可以使用
ALIWAF-TAG: Yes
標(biāo)記經(jīng)過WAF的請求,其中,ALIWAF-TAG
為Header名,Yes
為Header值。通過配置真實客戶端源IP所在的頭部字段名,WAF可記錄該頭部字段并將該頭部字段傳遞回源站。關(guān)于WAF判定客戶端真實源IP的具體規(guī)則,請參見WAF前是否有七層代理(高防/CDN等)參數(shù)的描述。
通過配置真實客戶端源端口所在的頭部字段名,WAF可記錄該頭部字段并將該頭部字段傳遞回源站。
重要請不要填寫標(biāo)準(zhǔn)的HTTP頭部字段(例如User-Agent等),否則會導(dǎo)致標(biāo)準(zhǔn)頭部字段內(nèi)容被自定義的字段值覆蓋。
單擊新增標(biāo)記,可以增加標(biāo)記字段。最多支持設(shè)置5個標(biāo)記字段。
如果WAF與您的源站之間出現(xiàn)長連接超時響應(yīng)問題時,您可以根據(jù)實際業(yè)務(wù)情況,調(diào)節(jié)長連接超時時間、復(fù)用次數(shù)、空閑長連接超時時間。
設(shè)置讀連接超時時間:WAF等待源站響應(yīng)的時間。超過該時間,則WAF斷開該連接。默認值為120s,可配置范圍為1s~3600s。
設(shè)置寫連接超時時間:WAF向源站發(fā)送請求的時間。超過該時間,則源站斷開該連接。默認值為120s,可配置范圍為1s~3600s。
回源長連接:如果您需要配置長連接的復(fù)用次數(shù)或空閑長連接超時間,您可以開啟該功能,并設(shè)置以下參數(shù)。
復(fù)用長連接的請求個數(shù):WAF可以向源站同時發(fā)送的請求或接收的響應(yīng)的個數(shù)。默認值為1000個,可配置范圍為60個~1000個。
空閑長連接超時時間:空閑長連接的關(guān)閉時間。默認值為3600s,可配置范圍為10s~3600s。
確認并選中要添加的實例后,單擊確定。
完成接入后,WAF會自動生成一個命名為“實例id-端口-資產(chǎn)類型”的防護對象,并為該防護對象默認開啟基礎(chǔ)防護規(guī)則。您可以在接入列表,單擊已接入的實例ID,在防護對象頁面,查看自動添加的防護對象,并為其配置防護規(guī)則。具體操作,請參見防護配置概述。
管理WAF
在WAF側(cè)管理WAF防護
登錄Web應(yīng)用防火墻3.0控制臺。在頂部菜單欄,選擇WAF實例的資源組和地域(中國內(nèi)地、非中國內(nèi)地)。
在左側(cè)導(dǎo)航欄,單擊接入管理。
管理WAF防護
在云產(chǎn)品接入頁簽,從左側(cè)云產(chǎn)品類型列表中選擇CLB(HTTP/HTTPS),查看已接入的CLB實例。
設(shè)置防護對象和防護規(guī)則
開啟WAF防護后,WAF會自動生成一個后綴為-clb7的防護對象,并為該防護對象默認開啟基礎(chǔ)防護規(guī)則。您可以在接入列表,單擊已接入的實例ID,在防護對象頁面,查看自動添加的防護對象,并為其配置防護規(guī)則。具體操作,請參見防護配置概述。
查看源站服務(wù)器和取消接入
實例接入WAF后,您可以查看源站服務(wù)器的詳細防護信息,以及在需要緊急容災(zāi)的情況下強制關(guān)閉引流或刪除引流端口。
在CLB(HTTP/HTTPS)分頁,單擊目標(biāo)實例前的圖標(biāo),展開查看該實例下已添加到WAF防護的端口。
查看端口詳情:單擊端口詳情,查看端口、協(xié)議、配置的證書信息,設(shè)置WAF前是否有七層代理(高防/CDN等)、啟用流量標(biāo)記(高級設(shè)置)、配置回源長連接(高級設(shè)置)。
取消接入:單擊目標(biāo)實例名稱操作列的取消接入,在取消接入對話框,單擊確定。
重要取消接入后,您資產(chǎn)上的流量將不再受到WAF保護,您可以單擊接入,重新添加端口。具體操作,請參見添加引流端口。
更新引流端口綁定的證書
如果證書即將到期或其他原因?qū)е伦C書發(fā)生變更(例如證書被吊銷)時,您需要更新引流端口綁定的證書。
證書的剩余有效期不足30個自然日時,WAF會在接入列表的證書信息處,通過圖標(biāo),提示您的證書即將過期,請盡快更新證書。
如果您希望在證書即將到期時,收到郵件、短信等提醒,您可以登錄數(shù)字證書管理服務(wù)控制臺,在SSL證書頁面,定位到目標(biāo)證書,單擊通知提醒列的圖標(biāo),在消息提醒頁面,為證書開啟并配置證書到期提醒。
為避免您的業(yè)務(wù)因證書到期無法正常使用,您可以開通阿里云數(shù)字證書管理服務(wù)(原 SSL 證書)的證書托管服務(wù),在證書即將到期時幫您自動申請并更新證書。更多信息,請參見托管服務(wù)概述。
具體操作如下所示:
續(xù)費證書或?qū)⒆C書上傳到數(shù)字證書管理服務(wù)(原 SSL 證書)。具體操作,請參見SSL證書續(xù)費或上傳和分享SSL證書。
同步證書到七層CLB實例。
在數(shù)字證書管理服務(wù)(原 SSL 證書)控制臺部署證書到七層CLB實例。具體操作,請參見部署SSL證書到阿里云產(chǎn)品。
在負載均衡控制臺更新證書。具體操作,請參見替換證書。
如果在 CLB 控制臺直接更換證書,WAF 會自動同步。如果從數(shù)字證書管理服務(wù)(原 SSL 證書)控制臺更新 CLB 上的證書,您需要在 WAF 控制臺執(zhí)行如下操作:
在
頁簽,單擊接入。在接入資產(chǎn)- 七層CLB面板,單擊同步最新資產(chǎn),手動同步更新。
如果引流端口更換的證書為非數(shù)字證書管理服務(wù)(原 SSL 證書)購買的證書,引流端口會自動取消接入。您需要在更換證書后重新添加端口,具體操作,請參見添加引流端口。
如果對應(yīng)的七層CLB實例關(guān)聯(lián)有過期證書,則WAF側(cè)無法同步最新證書,需要將過期證書刪除后再同步最新證書。
在CLB側(cè)管理WAF防護
在頂部菜單欄,選擇實例所屬的地域。
管理WAF防護。
操作
步驟
查看實例是否開啟WAF防護
選擇以下任意一種方式查看實例是否開啟WAF防護。顯示防護中,表示已開啟WAF防護。
方式一:在實例管理頁面,找到目標(biāo)實例,將鼠標(biāo)懸停在實例名稱后的圖標(biāo),在氣泡框的Web安全防護區(qū)域,查看防護狀態(tài)。
方式二:
在實例管理頁面,找到目標(biāo)實例,單擊實例ID。
在實例詳情頁簽,在基本信息區(qū)域查看WAF安全防護的狀態(tài)。
方式三:
在實例管理頁面,找到目標(biāo)實例,單擊實例ID。
在實例詳情頁簽,單擊安全防護頁簽,在Web應(yīng)用安全防護區(qū)域查看防護狀態(tài)。
查看WAF安全報表
查看WAF安全報表,請確保您的CLB實例已開啟WAF防護。
方式一:在實例管理頁面,找到目標(biāo)實例,將鼠標(biāo)懸停在實例名稱后的圖標(biāo),在氣泡框的Web安全防護區(qū)域,單擊查看WAF安全報表進入WAF 3.0控制臺的安全報表頁面查看。
方式二:
在實例管理頁面,找到目標(biāo)實例,單擊實例ID。
在實例詳情頁簽,在基本信息區(qū)域單擊WAF安全防護右側(cè)的查看WAF安全報表進入WAF 3.0控制臺的安全報表頁面查看。
方式三:
在實例管理頁面,找到目標(biāo)實例,單擊實例ID。
在實例詳情頁簽,單擊安全防護頁簽,在Web應(yīng)用安全防護區(qū)域單擊防護配置管理,在Web應(yīng)用安全防護管理頁面進入WAF 3.0控制臺的安全報表頁面查看。
更多信息,請參見安全報表。
關(guān)閉WAF防護
關(guān)閉WAF防護后,CLB實例上的業(yè)務(wù)流量將不再受WAF防護,安全報表中也不再包含相關(guān)業(yè)務(wù)流量的防護數(shù)據(jù)。
方式一:
在實例管理頁面,找到目標(biāo)實例,在操作列選擇
。在監(jiān)聽頁面,找到目標(biāo)實例,將鼠標(biāo)懸停在目標(biāo)實例名稱后的圖標(biāo),在氣泡框中單擊關(guān)閉防護。
在關(guān)閉Web應(yīng)用防火墻防護對話框中,選擇確定。
方式二:
在實例管理頁面,找到目標(biāo)實例,單擊實例ID。
在實例詳情頁簽,單擊監(jiān)聽頁簽,找到目標(biāo)實例,將鼠標(biāo)懸停在目標(biāo)實例名稱后的圖標(biāo),在氣泡框中單擊關(guān)閉防護。
在關(guān)閉Web應(yīng)用防火墻防護對話框中,選擇確定。
方式三:
在實例管理頁面,找到目標(biāo)實例,單擊實例ID。
在實例詳情頁簽,單擊安全防護頁簽,在Web應(yīng)用安全防護區(qū)域,單擊防護配置管理。
在Web應(yīng)用安全防護管理頁面,在Web應(yīng)用安全防護列,點擊圖標(biāo),在關(guān)閉成功對話框中,選擇確定。
常見問題
驗證七層CLB(HTTP/HTTPS)是否成功接入WAF
在瀏覽器中輸入域名進行訪問測試,如果網(wǎng)站可以正常訪問,則表示W(wǎng)AF接入成功。
在域名后輸入SQL惡意攻擊代碼驗證防護效果,例如
xxx.xxxx.com?id=1 and 1=1
,返回如下 405 攔截提示頁面,則表示攻擊被攔截。
CLB提供基于四層 (TCP協(xié)議和UDP協(xié)議)和七層(HTTP協(xié)議和HTTPS協(xié)議)的負載均衡:
四層監(jiān)聽將請求直接轉(zhuǎn)發(fā)給后端服務(wù)器。客戶端請求到達CLB后,CLB根據(jù)監(jiān)聽中配置的后端端口修改報文的目的IP和目的端口,并將流量轉(zhuǎn)發(fā)給對應(yīng)的后端服務(wù)器,客戶端和后端服務(wù)器建立TCP連接。
七層監(jiān)聽原理上是反向代理的一種實現(xiàn)。客戶端請求到達CLB后,CLB與后端服務(wù)器建立TCP連接,即再次通過新TCP連接HTTP協(xié)議訪問后端服務(wù)器,而不是直接轉(zhuǎn)發(fā)報文到后端服務(wù)器。七層監(jiān)聽比四層監(jiān)聽在底層實現(xiàn)上多了一個Tengine處理環(huán)節(jié)。此外,客戶端端口不足、后端服務(wù)器連接過多等場景可能導(dǎo)致七層服務(wù)性能不高,如果您對性能有很高的要求,建議您選擇四層監(jiān)聽。
更多詳細信息,請參見CLB監(jiān)聽概述。
將七層CLB(HTTP/HTTPS)實例接入WAF ,可以把HTTP、HTTPS 兩個端口同時接入嗎?
可以。
CLB接入時報錯提示“端口號為443的CLB證書不全,請到CLB控制臺重新選擇來源是SSL證書服務(wù)的證書。”
需要登錄SSL證書控制臺續(xù)費或者上傳證書,在CLB重新選擇這個證書,才可以在WAF中接入使用。具體操作,請參見SSL證書續(xù)費或上傳和分享SSL證書。
相關(guān)文檔
如需監(jiān)聽獲取客戶端真實IP,請參見通過CLB七層監(jiān)聽獲取客戶端真實IP。
如需排查接入配置頁面找不到示例,請參見接入配置頁面找不到需要接入的CLB實例或ECS實例的排查方法。