設(shè)置CC安全防護
網(wǎng)站業(yè)務(wù)接入DDoS防護后,如果遭受了CC攻擊,可以通過對HTTP字段進行針對性的特征分析及規(guī)則配置,增強CC攻擊的識別攔截效力,用于盜鏈防護、網(wǎng)站管理后臺保護等場景。本文介紹如何設(shè)置CC防護策略。
CC攻擊防御產(chǎn)品介紹
CC攻擊(Challenge Collapsar)是分布式拒絕服務(wù)(DDoS)攻擊的一種類型,通常情況下指應(yīng)用層攻擊(Application Layer Attack)。通過控制某些主機向目標(biāo)網(wǎng)絡(luò)服務(wù)器不停地發(fā)送偽造的HTTP/HTTPS請求,比如頻繁請求一個需要消耗大量服務(wù)器資源的搜索頁面或者登錄頁面,以消耗服務(wù)器的資源或網(wǎng)絡(luò)帶寬,導(dǎo)致網(wǎng)站響應(yīng)變慢,無法處理正常用戶的訪問請求。
與傳統(tǒng)的網(wǎng)絡(luò)層DDoS攻擊不同,CC攻擊更加隱蔽,因為它模仿的是正常的用戶請求。為了提升網(wǎng)站業(yè)務(wù)安全性,阿里云提供了DDoS高防和Web應(yīng)用防火墻產(chǎn)品用于防御CC攻擊。
DDoS高防
DDoS高防側(cè)重于防護大流量攻擊,目的是確保網(wǎng)絡(luò)基礎(chǔ)設(shè)施不受帶寬耗盡和資源耗盡的影響,通常部署在網(wǎng)絡(luò)邊緣。DDoS高防提供AI智能防護、自定義CC安全防護策略,用于防御CC攻擊。
AI智能防護:即基于阿里云的大數(shù)據(jù)能力,能夠自學(xué)習(xí)網(wǎng)站業(yè)務(wù)流量基線,結(jié)合算法分析攻擊異常并自動下發(fā)精準(zhǔn)訪問控制規(guī)則,動態(tài)調(diào)整業(yè)務(wù)防護模型,幫助您及時發(fā)現(xiàn)并阻斷惡意Web攻擊,例如惡意Bot、HTTP Flood攻擊。將網(wǎng)站接入DDoS高防后,默認(rèn)開啟AI智能防護。關(guān)于AI智能防護的詳細介紹,請參見設(shè)置AI智能防護。
自定義CC防護策略:即本文介紹的內(nèi)容。您可以在網(wǎng)站遭受CC攻擊后,通過分析HTTP請求的字段特征,為網(wǎng)站設(shè)置精準(zhǔn)訪問控制規(guī)則或頻率控制規(guī)則,通過頻率控制、行為分析、IP黑名單等措施,更好的防御DDoS攻擊。
Web應(yīng)用防火墻(WAF)
WAF主要是分析進入應(yīng)用層的HTTP/HTTPS流量,對網(wǎng)站或者App的業(yè)務(wù)流量進行惡意特征識別及防護,避免網(wǎng)站服務(wù)器被惡意入侵導(dǎo)致性能異常等問題。WAF采用多種手段來識別和防御應(yīng)用層攻擊,包括輸入驗證、針對特定漏洞的規(guī)則集、會話跟蹤和防護機制(如驗證碼、JS挑戰(zhàn)、Cookie驗證等)。WAF通常部署在網(wǎng)絡(luò)接近服務(wù)器端的位置,可以更緊密地監(jiān)控到達服務(wù)器的流量,并執(zhí)行應(yīng)用層的安全策略。
兩種產(chǎn)品的防護側(cè)重點不同,如果僅針對CC攻擊,如果您的CC攻擊水位很高,例如網(wǎng)站已無法正常訪問,優(yōu)先建議DDoS高防。如果CC攻擊水位不是很高,例如網(wǎng)站只是響應(yīng)變慢,優(yōu)先建議Web應(yīng)用防火墻。但為達到最佳的保護效果,建議您同時部署兩種產(chǎn)品,以確保網(wǎng)站業(yè)務(wù)不受到惡意流量和攻擊者的破壞。
CC防護策略配置建議
建議在網(wǎng)站遭受CC攻擊時配置,通過本功能加強防御,放行或者過濾指定特征的流量。日常防護不推薦使用本功能。
您可以通過如下方式查看HTTP請求中是否存在明顯特征,例如來源IP一樣、URI中包含相同字段等,根據(jù)特征配置CC防護策略。
CC防護策略介紹
根據(jù)設(shè)置規(guī)則時是否開啟頻率設(shè)置,分為精準(zhǔn)訪問控制規(guī)則和頻率控制規(guī)則。匹配原則是先匹配精準(zhǔn)訪問控制規(guī)則,再匹配頻率控制規(guī)則,只要匹配某一個規(guī)則,則不再向后匹配。
說明DDoS高防的AI智能防護自動下發(fā)的精準(zhǔn)訪問控制規(guī)則,即
smartcc_
開頭的規(guī)則,也遵循該匹配邏輯。為了提升CC攻擊默認(rèn)防護效果,產(chǎn)品防護引擎內(nèi)置了兩條頻次控制規(guī)則,具體規(guī)則內(nèi)容已展示在頻率控制規(guī)則配置區(qū)域,規(guī)則名稱為內(nèi)置CC防護規(guī)則-基于客戶端頻次、內(nèi)置CC防護規(guī)則-基于源站響應(yīng)碼。當(dāng)前僅支持規(guī)則的查看和刪除操作。
規(guī)則名稱 | 精準(zhǔn)訪問控制規(guī)則 | 頻率控制規(guī)則 |
說明 | 滿足相關(guān)匹配條件即執(zhí)行動作。 說明 如果您在精準(zhǔn)訪問控制規(guī)則中查看到 | 在統(tǒng)計時長內(nèi),當(dāng)統(tǒng)計對象滿足匹配條件并達到閾值,才執(zhí)行動作。 重要 內(nèi)置CC防護規(guī)則刪除操作后無法恢復(fù),請您謹(jǐn)慎操作。如您確認(rèn)要刪除該規(guī)則,建議您在刪除內(nèi)置CC防護規(guī)則后,結(jié)合您需要防護的重要業(yè)務(wù)域名或接口業(yè)務(wù)訪問頻次和特征,自定義配置頻次防護規(guī)則,從而提升CC攻擊防護效果。 |
規(guī)則生效時長 | 由您設(shè)置,可以設(shè)置為永久或自定義時長(5~120分鐘)。 說明 自定義時長時,到期后該規(guī)則會自動刪除。 | 永久生效。 |
匹配原則 | 匹配所有規(guī)則,當(dāng)訪問請求命中多條規(guī)則時,執(zhí)行列表中排名靠前的規(guī)則的動作。 例如,如果訪問請求同時命中①和②,則執(zhí)行①對應(yīng)的動作。 | 匹配所有規(guī)則,當(dāng)訪問請求命中多條規(guī)則時,隨機執(zhí)行某一條規(guī)則的動作。 |
限制條件 | 每個域名最多設(shè)置20個精準(zhǔn)訪問控制規(guī)則。 | 每個域名最多設(shè)置20個頻率控制規(guī)則。 |
Cookie植入說明
七層接入的業(yè)務(wù)會在以下兩種情況下被植入Cookie。
場景1:域名的網(wǎng)站業(yè)務(wù)DDoS防護策略,開啟CC安全防護功能。
啟用CC安全防護策略后,DDoS高防產(chǎn)品將會在客戶端(如瀏覽器)植入Cookie用于區(qū)分統(tǒng)計不同客戶端,用戶在訪問網(wǎng)站時會在HTTP報文中帶上植入的Cookie信息,DDoS高防將結(jié)合統(tǒng)計結(jié)果判斷業(yè)務(wù)流量中是否存在CC攻擊行為,并啟動CC攻擊清洗策略。
場景2:CC防護策略規(guī)則動作開啟“挑戰(zhàn)”模式。
CC防護策略啟用“挑戰(zhàn)”規(guī)則動作后,將會在HTTP報文的Header中植入Cookie用于獲取客戶端瀏覽器的指紋信息,收集的指紋信息包括HTTP報文的host字段、瀏覽器高度和寬度。當(dāng)訪問流量命中規(guī)則后,DDoS高防將對客戶端發(fā)起挑戰(zhàn)探測,并結(jié)合瀏覽器的指紋統(tǒng)計信息判斷客戶端是否有異常,識別異常客戶端的CC攻擊行為。
如需停止DDoS高防向業(yè)務(wù)植入Cookie的行為,您可以在控制臺的
頁面單擊操作列的編輯,將網(wǎng)站配置中的cookie設(shè)置開關(guān)關(guān)閉,但同時DDoS高防也將無法通過CC安全防護策略模塊對CC攻擊進行主動判斷和防護。配置CC安全防護策略
前提條件
已將網(wǎng)站業(yè)務(wù)接入DDoS高防。具體操作,請參見添加網(wǎng)站配置。
操作步驟
登錄DDoS高防控制臺。
在頂部菜單欄左上角處,選擇地域。
DDoS高防(中國內(nèi)地):選擇中國內(nèi)地地域。
DDoS高防(非中國內(nèi)地):選擇非中國內(nèi)地地域。
在左側(cè)導(dǎo)航欄,選擇
。在通用防護策略頁面,單擊網(wǎng)站業(yè)務(wù)DDoS防護頁簽,并從左側(cè)域名列表中選擇要設(shè)置的域名。
定位到CC安全防護配置區(qū)域,單擊設(shè)置后,在右上角單擊新增規(guī)則,配置完成后單擊確定。
參數(shù)
描述
規(guī)則名稱
規(guī)則的名稱。由英文字母、數(shù)字和下劃線(_)組成,不超過128個字符。
匹配條件
規(guī)則的匹配條件。字段詳細介紹,請參見附錄一:支持設(shè)置的HTTP請求字段。
說明匹配內(nèi)容不允許設(shè)置為空值。精準(zhǔn)訪問控制規(guī)則的匹配內(nèi)容區(qū)分大小寫,頻率控制規(guī)則的匹配內(nèi)容不區(qū)分大小寫。
最多可以設(shè)置5個匹配條件。若添加多個匹配條件,只有當(dāng)訪問請求滿足所有條件時才算命中。
頻率設(shè)置
設(shè)置是否啟動頻率設(shè)置校驗。
開關(guān)關(guān)閉:表示該規(guī)則為精準(zhǔn)訪問控制規(guī)則。
開關(guān)打開:表示該規(guī)則為頻率控制規(guī)則。開啟后您需要配置統(tǒng)計對象(只支持IP、自定義Header)、統(tǒng)計時長(秒)、閾值(次),您也可以結(jié)合響應(yīng)碼的數(shù)量或比例設(shè)置更細致的規(guī)則。
規(guī)則動作
當(dāng)訪問請求命中匹配條件時,對請求執(zhí)行的操作。取值 :
放行:放行該訪問請求。
攔截:阻斷該訪問請求。
挑戰(zhàn):通過挑戰(zhàn)算法對訪問請求的源IP地址發(fā)起校驗。
觀察:對命中觀察規(guī)則的請求進行日志記錄,并放行該訪問請求。
說明開啟頻率設(shè)置時,規(guī)則動作僅支持攔截、挑戰(zhàn)、觀察。
處置時長
頻率設(shè)置開關(guān)關(guān)閉時:表示精準(zhǔn)訪問規(guī)則的生效時長,支持永久生效、自定義時長(5~120分鐘)。
說明自定義時長時,到期后該規(guī)則會自動刪除。
頻率設(shè)置開關(guān)打開時:表示滿足頻率控制規(guī)則時,執(zhí)行多長時間的規(guī)則動作,只支持自定義時長(1~1440分鐘)。
高級設(shè)置
開啟頻率設(shè)置時,支持配置統(tǒng)計時去重。統(tǒng)計對象可以設(shè)置為IP、Header、URI。
場景一:開啟去重模式
以下圖為例,滿足匹配條件的場景下,當(dāng)同一源IP地址在30秒內(nèi)訪問不同的URI大于等于200種時,執(zhí)行規(guī)定動作,攔截來自該IP的請求。由于開啟了去重模式,當(dāng)同一源IP使用相同的URI訪問多次時,訪問次數(shù)統(tǒng)計為1次。
場景二:未開啟去重模式
以下圖為例,滿足匹配條件的場景下,當(dāng)同一源IP地址在30秒內(nèi)訪問次數(shù)大于等于200次時,執(zhí)行規(guī)定動作,攔截來自該IP的請求。未開啟去重模式,假如同一源IP使用相同的URI訪問10次時,訪問次數(shù)統(tǒng)計為10次。
返回CC安全防護區(qū)域,開啟狀態(tài)開關(guān)。
附錄一:支持設(shè)置的HTTP請求字段
匹配字段 | 字段描述 | 邏輯符 | 字段示例 |
IP | 訪問請求的來源IP。 取值為單個IP或IP/掩碼。 | 屬于、不屬于 | 10.10.10.10 |
URI | 訪問請求的URI地址。例如: | 包含、不包含、 等于、不等于、長度小于、長度等于、長度大于、前綴匹配、等于多值之一、不等于多值之一 說明 邏輯符為等于、不等于時,輸入的字符應(yīng)以 | /action/member/id.php?id=1&td=2 |
User-Agent | 發(fā)起訪問請求的客戶端的瀏覽器標(biāo)識、渲染引擎標(biāo)識和版本信息等瀏覽器相關(guān)信息。 | 包含、不包含、等于、不等于、長度小于、長度等于、長度大于、等于多值之一、不等于多值之一 | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.XX.XX Safari/537.36 |
Cookie | 訪問請求中攜帶的Cookie信息。 | 包含、不包含 、等于、不等于、長度小于、長度等于、長度大于、不存在、等于多值之一、不等于多值之一 | cna=Z87DHXX/jXIBASQBsYAimToU; sca=234ea940; yunpk=177699790**** |
Referer | 訪問請求的來源網(wǎng)址,即該訪問請求是從哪個頁面跳轉(zhuǎn)產(chǎn)生的。 | 包含、不包含 、等于、不等于、長度小于、長度等于、長度大于、不存在、等于多值之一、不等于多值之一 | https://example.aliyundoc.com/ |
Content-Type | 訪問請求指定的響應(yīng)HTTP內(nèi)容類型,即MIME類型信息。 | 包含、不包含 、等于、不等于、長度小于、長度等于、長度大于、等于多值之一、不等于多值之一 | text/plain;charset=UTF-8 |
X-Forwarded-For | 訪問請求的客戶端真實IP。格式為: | 包含、不包含 、等于、不等于、長度小于、長度等于、長度大于、不存在、等于多值之一、不等于多值之一 | 36.18.XX.XX,192.18.XX.XX |
Content-Length | 訪問請求包含的字節(jié)數(shù)。 | 值小于、值等于、值大于 | 806 |
Post-Body | 訪問請求的內(nèi)容信息。 | 包含、不包含、等于、不等于、等于多值之一、不等于多值之一 | Content-Type: application/x-www-form-urlencoded name=John&age=25&email=**** |
Http-Method | 訪問請求的方法。取值為:GET、POST、DELETE、PUT、OPTIONS、CONNECT、HEAD、TRACE。 | 等于、不等于、等于多值之一、不等于多值之一 | POST |
Header | 訪問請求的頭部信息,用于自定義HTTP頭部字段及匹配內(nèi)容。 | 包含、不包含、等于、不等于 、長度小于、長度等于、長度大于、不存在、等于多值之一、不等于多值之一 | *text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/**** |
Params | 訪問請求的URL地址中的參數(shù)部分,通常指URL中 | 包含、不包含 、等于、不等于、長度小于、長度等于、長度大于、等于多值之一、不等于多值之一 | action=login |
Raw-URI | 未經(jīng)過編碼的URI,即保留了原始的字符序列。Raw-URI可以包含特殊字符和空格,但在使用時需要進行編碼處理,以確保在網(wǎng)絡(luò)傳輸和解析過程中不會引起歧義或錯誤。 | 包含、不包含、等于、不等于、長度小于、長度等于、長度大于、正則匹配、字節(jié)包含、字節(jié)等于、等于多值之一、不等于多值之一 | GET /images/logo.png HTTP/1.1 |
Tls-Fingerprint | 基于發(fā)起訪問請求的客戶端TLS指紋,通過阿里云自研算法識別和計算得出的客戶端指紋值,用于訪問請求的匹配和防護。客戶端指紋查看方式:
| 等于、不等于 | 74dcbf6b790160370bb6b7bea98d5978 |
HTTP/HTTPS | 訪問請求的協(xié)議類型,支持設(shè)置為HTTP和HTTPS。 | 等于、不等于 | HTTP |
HTTP版本 | HTTP協(xié)議的版本,支持設(shè)置為HTTP/1.0,HTTP/1.1,HTTP/2.0版本。 | 等于、不等于、等于多值之一、不等于多值之一 | HTTP/1.0 |
HTTP2.0指紋 | 根據(jù)HTTP2客戶端的原始指紋,利用MD5算法處理后生成的HTTP2.0指紋。用來分析和識別不同的客戶端,實現(xiàn)更安全和高效的通信。 | 等于、不等于 | ad8424af1cc590e09f7b0c499bf7fcdb |
JA3指紋 | DDoS高防通過將TLS握手過程中的關(guān)鍵參數(shù)(包括TLS版本、密碼套件、壓縮算法和TLS擴展等信息)進行MD5哈希處理,生成一個字符串用來表示客戶端的TLS配置,該字符串即JA3指紋。 JA3指紋可以用于識別和區(qū)分不同類型的TLS客戶端,例如Web瀏覽器、移動應(yīng)用程序、惡意軟件等。 | 等于、不等于、等于多值之一、不等于多值之一 | eb6f49e8db7ad1809f885d12232f4855 |
JA4指紋 | JA4指紋通過引入更多的上下文信息和算法,例如瀏覽器的版本、操作系統(tǒng)等,減少了J3A指紋可能導(dǎo)致的重復(fù)性問題。 JA4指紋能夠更準(zhǔn)確地鑒別出真實的用戶與偽裝者,降低誤識率。 | 等于、不等于、等于多值之一、不等于多值之一 | f436b9416f37d134cadd04886327d3e8 |
大洲/國家 | 表示來源IP的地理位置。 | 區(qū)域封禁選擇 | 歐洲 |
附錄二:配置示例
下述示例給出常見的適配業(yè)務(wù)場景的配置建議,具體請以您業(yè)務(wù)實際需求為準(zhǔn),示例僅做規(guī)則配置展示。
攔截特定攻擊請求
一般情況下,正常業(yè)務(wù)不存在POST根目錄的請求信息。如果網(wǎng)站業(yè)務(wù)上發(fā)生CC攻擊,且您發(fā)現(xiàn)客戶端的請求中存在大量的POST根目錄請求,則可以評估請求的合法性。如果確認(rèn)其為非正常業(yè)務(wù)請求,可以配置如下規(guī)則。
攔截爬蟲
如果在某段時間內(nèi),您發(fā)現(xiàn)網(wǎng)站的訪問流量中有大量爬蟲請求,若不排除是攻擊傀儡機模擬爬蟲進行CC攻擊,則可以對爬蟲的請求執(zhí)行攔截操作。規(guī)則配置示例如下。
防盜鏈
當(dāng)瀏覽器訪問某個網(wǎng)頁時,會帶上Referer字段,告訴服務(wù)器該請求是從哪個頁面鏈接過來的。通過配置Referer字段的訪問控制規(guī)則,可以阻斷特定網(wǎng)站的盜鏈。例如,您發(fā)現(xiàn)“https://example.aliyundoc.com”大量盜用本站的圖片,您可以配置如下。
針對User-Agent設(shè)置訪問頻率限制
例如,某一UA在10秒內(nèi)訪問/game/all_
前綴的URI超過30次,就對該UA的請求執(zhí)行挑戰(zhàn)動作。
設(shè)置登錄頻率限制
例如,為了預(yù)防登錄接口受到惡意高頻撞庫攻擊,可以配置登錄接口的地址,設(shè)置60秒內(nèi)超過20次請求則進行攔截。
結(jié)合源站響應(yīng)碼設(shè)置頻率限制規(guī)則
通過配置源站響應(yīng)碼數(shù)量或比例的觸發(fā)條件,在原有頻率防護策略的基礎(chǔ)上進一步提高防護準(zhǔn)確性,降低對正常業(yè)務(wù)的誤傷風(fēng)險。當(dāng)統(tǒng)計對象在統(tǒng)計時長內(nèi)請求數(shù)超過閾值,且配置的源站響應(yīng)碼超過指定數(shù)量或比例,則觸發(fā)對應(yīng)的處置動作。
200
當(dāng)源站處理能力較強時,對于攻擊者的高頻請求響應(yīng)依舊正常,此時可根據(jù)業(yè)務(wù)自身特征,處置超出業(yè)務(wù)正常請求頻率的IP,起到一定限速限流的效果,保護源站和業(yè)務(wù)可用性。可以參考如下配置:
404
當(dāng)攻擊者發(fā)起URI掃描攻擊或持續(xù)請求源站實際不存在的路徑時,源站經(jīng)常會響應(yīng)大量404狀態(tài)碼,可配置策略拉黑攻擊IP。請參考如下配置:
403
當(dāng)攻擊者發(fā)起Web類攻擊,且高防后端為WAF等防護產(chǎn)品時,可依據(jù)其他防護產(chǎn)品攔截響應(yīng)碼進行對應(yīng)規(guī)則配置。例如,阿里云WAF會攔截Web攻擊并響應(yīng)403,可配置策略在高防側(cè)提前拉黑攻擊IP。可以參考如下配置:
429
由于源站自身存在限流或業(yè)務(wù)校驗等配置,當(dāng)攻擊者請求命中此類源站限速或校驗規(guī)則時,源站會響應(yīng)429 Too Many Requests或客戶自定義響應(yīng)碼,可配置策略拉黑攻擊IP,緩解源站壓力。可以參考如下配置:
502
當(dāng)源站由于請求突增等原因?qū)е抡埱筇幚頃r間較長,出現(xiàn)異常502響應(yīng)時,可配置策略拉黑高頻請求的IP,保證源站可用性。可以參考如下配置:
555
當(dāng)源站存在業(yè)務(wù)自身的特殊邏輯,對非預(yù)期的請求響應(yīng)諸如555等自定義狀態(tài)碼,可在高防側(cè)根據(jù)該特征,處置發(fā)起非預(yù)期請求的IP。可以參考如下配置:
攔截非法的客戶端指紋
攻擊者通過偽造客戶端指紋,模擬真實的客戶端以嘗試建立大量的連接或HTTP請求,從而導(dǎo)致服務(wù)器崩潰或者拒絕服務(wù)。您可以通過檢查并識別客戶端指紋拒絕連接。
例如:遭受大流量CC攻擊時,如果攻擊者使用相同的腳本或工具,包含相同指紋值的請求數(shù)或請求數(shù)占比會突增。您可以在安全總覽頁面的域名頁簽,查看客戶端指紋Top數(shù)據(jù),并結(jié)合全量日志分析日志中的ssl_client_tls_fingerprinting_md5字段查看Top客戶端指紋的占比,分析請求的行為,及時發(fā)現(xiàn)可疑的指紋值并設(shè)置策略。