構(gòu)建Cloudflare Bot Management是一個(gè)令人振奮的體驗(yàn),它融合了分布式系統(tǒng),Web開發(fā),機(jī)器學(xué)習(xí),安全性和調(diào)研以及介于兩者之間的所有學(xué)科。我們正在與不斷適應(yīng)和升級(jí)的強(qiáng)大對(duì)手作戰(zhàn),因此我們的Bot管理平臺(tái)也必須足夠強(qiáng)大!以下內(nèi)容即是Bot Management內(nèi)部機(jī)制的簡要概覽。
如何定義Bot
Bot可以與計(jì)算機(jī)系統(tǒng)或用戶進(jìn)行交互,模仿或替代人類用戶的行為,用比人類用戶更快的速度執(zhí)行重復(fù)性任務(wù)。
Bot的區(qū)分
Good Bots
合法地與企業(yè)互動(dòng),產(chǎn)生效益,例如搜索引擎機(jī)器人(Googlebot,Bingbot等),或Facebook Bot等運(yùn)行在社交媒體平臺(tái)上的機(jī)器人。
Bad Bots
旨在執(zhí)行惡意行為并最終損害企業(yè)利益,例如憑據(jù)填充機(jī)器人,第三方爬蟲機(jī)器人,垃圾郵件機(jī)器人以及搶鞋機(jī)器人(sneakerbot)。
Bot Management的目標(biāo)與要求
惡意Bot攻擊越來越普遍,而識(shí)別惡意Bot流量卻變得越來越困難。
關(guān)鍵要求
功能完整,簡單易用
單擊一下,即可開啟Bot Management,保護(hù)網(wǎng)站,移動(dòng)應(yīng)用程序或API。
顯示可信賴度
客戶能夠知道他們是否可以信任網(wǎng)站訪問者,需要提供確定性指標(biāo)以判定信任級(jí)別。
靈活性
客戶能夠自定義將Bot Management應(yīng)用到哪些流量子集,例如僅登錄URL、定價(jià)頁面或站點(diǎn)范圍內(nèi)的流量。
準(zhǔn)確性
Bot Management的識(shí)別錯(cuò)誤率應(yīng)該盡可能低,盡可能少地將人類訪客錯(cuò)識(shí)別為Bot。
容錯(cuò)性
在預(yù)測(cè)錯(cuò)誤的情況下,應(yīng)始終確保真人用戶和好的Bot流量可以通過網(wǎng)站。
目標(biāo)用例
Bot Management的關(guān)鍵功能
可擴(kuò)展性
確保計(jì)算每個(gè)請(qǐng)求的“Bot”分?jǐn)?shù),無論每秒有多少請(qǐng)求
低延遲
快速執(zhí)行檢測(cè),處理速度在100ms內(nèi)
可配置
可以配置對(duì)哪些流量應(yīng)用哪些檢測(cè),細(xì)分到每個(gè)域/數(shù)據(jù)中心/服務(wù)器級(jí)別
可修改性
平臺(tái)應(yīng)該易于擴(kuò)展,具有更多的檢測(cè)機(jī)制、不同的緩解措施、更豐富的分析和日志
安全性
不使用某個(gè)客戶的敏感信息來建立保護(hù)另一客戶的模型
可解釋且可調(diào)試
我們應(yīng)該能夠以直觀的方式解釋和調(diào)整預(yù)測(cè)
Bot分?jǐn)?shù)
Bot Management的評(píng)分功能由一組微服務(wù)支持,它的總體架構(gòu)如下:
我們的系統(tǒng)使用了多種技術(shù)來處理從邊緣數(shù)據(jù)中心接收的數(shù)據(jù),生成并存儲(chǔ)機(jī)器人檢測(cè)機(jī)制所需的數(shù)據(jù),在構(gòu)建過程中,每一項(xiàng)服務(wù)都考慮到了彈性、性能、可觀察性和安全性。
當(dāng)請(qǐng)求進(jìn)入時(shí),我們提取并轉(zhuǎn)換所需的請(qǐng)求屬性,并將其提供給我們的檢測(cè)機(jī)制。Bot Management將輸出防火墻字段,Cookies,JavaScript挑戰(zhàn),檢測(cè)日志。隨后,防火墻將接管實(shí)際的Bot緩解措施。
整合防火墻
防火墻規(guī)則提供了以下緩解措施
日志
將匹配的請(qǐng)求記錄在提供給客戶的Cloudflare日志中
繞行
允許客戶針對(duì)請(qǐng)求動(dòng)態(tài)禁用Cloudflare安全功能
許可
匹配的請(qǐng)求不受其他防火墻規(guī)則觸發(fā)的質(zhì)詢和阻止
Captcha
用于確保訪問是人為而非自動(dòng)的
JS挑戰(zhàn)
確保僵尸程序和垃圾郵件無法訪問所請(qǐng)求的資源
阻斷
阻止匹配請(qǐng)求訪問該網(wǎng)站
集成Cloudflare Workers
如果客戶希望根據(jù)分?jǐn)?shù)對(duì)請(qǐng)求進(jìn)行更靈活的處理——例如,他們可能想注入新的內(nèi)容或更改現(xiàn)有的HTML頁面內(nèi)容,或?qū)⒉徽_的數(shù)據(jù)提供給機(jī)器人,或暫停某些請(qǐng)求——Cloudflare Workers提供執(zhí)行這些操作的選項(xiàng)。
檢測(cè)機(jī)制
Bot Management使用了五種互補(bǔ)的檢測(cè)機(jī)制,各自產(chǎn)生自己的分?jǐn)?shù),我們將它們結(jié)合起來得到進(jìn)入防火墻的單個(gè)分?jǐn)?shù)。
五種檢測(cè)機(jī)制
機(jī)器學(xué)習(xí)
Cloudflare保護(hù)著超過2600萬個(gè)互聯(lián)網(wǎng)資產(chǎn),我們的機(jī)器學(xué)習(xí)模型能通過龐大、豐富且高質(zhì)量的數(shù)據(jù)中不斷得到改進(jìn)。
啟發(fā)式引擎
基于請(qǐng)求的某些屬性,我們有多種啟發(fā)式類型和數(shù)百種特定規(guī)則,其中的一些很難被欺騙,這有助于我們進(jìn)一步完善Bot Management。
行為分析
在2019年,我們?yōu)锽ot Management集成了行為分析,用以保護(hù)我們的客戶免受潛在攻擊的威脅。
已驗(yàn)證的Bot
通過一些防火墻字段,客戶可以自定義是否允許或限制某些良好Bot對(duì)網(wǎng)站某些部分的訪問。
JS指紋
在不犧牲網(wǎng)站訪問者隱私的情況下,確認(rèn)請(qǐng)求的用戶代理。
Cloudflare每周能夠從流經(jīng)其網(wǎng)絡(luò)的數(shù)萬億個(gè)請(qǐng)求中收集數(shù)據(jù),并通過與其他Cloudflare產(chǎn)品的集成,來識(shí)別和管理Bot活動(dòng)。如果沒有多個(gè)團(tuán)隊(duì)的共同努力,這一切都無法實(shí)現(xiàn)。我們感謝Bots團(tuán)隊(duì)中的每個(gè)人所做出的努力!