携程风险防御体系的变革之路
本文為CSDN投稿文章,分享了攜程信息安全業(yè)務(wù)安全團(tuán)隊(duì)在這幾年來(lái),風(fēng)險(xiǎn)防御體系演進(jìn)變革的要點(diǎn),遇到的一些坑,如何做技術(shù)選型,解決了哪些困境,走過(guò)的彎路,各位讀者可以將本文作為自身建設(shè)風(fēng)險(xiǎn)防御系統(tǒng)的攻略參考,也可以作為一個(gè)回憶錄,避免重復(fù)踩坑。
1.0時(shí)代
過(guò)去攜程曾經(jīng)使用一套基于.NET的風(fēng)險(xiǎn)防御系統(tǒng)作為控制注冊(cè),登錄,支付以及其他相關(guān)場(chǎng)景的主要手段,這套系統(tǒng)主要由三個(gè)服務(wù)組成:數(shù)據(jù)收集服務(wù),規(guī)則引擎服務(wù),黑白名單服務(wù)。主要實(shí)現(xiàn)的場(chǎng)景案例有:
架構(gòu)圖如圖:
這套風(fēng)險(xiǎn)防御系統(tǒng)的特點(diǎn)有:
使用下來(lái),優(yōu)缺點(diǎn)都很明顯。
優(yōu)點(diǎn):
規(guī)則可以實(shí)時(shí)的配置,測(cè)試,上線,下線,雖然規(guī)則引擎和緯度存在一定限制,但是針對(duì)短時(shí)間內(nèi)做登錄&注冊(cè)的流量控制,應(yīng)該來(lái)說(shuō)是可以接受的。配合驗(yàn)證碼,比如“同一個(gè)IP,X分鐘內(nèi)登錄Y個(gè)不同的攜程賬號(hào),給這個(gè)IP出現(xiàn)Z分鐘的@@類型驗(yàn)證碼”,這種看似大路貨的規(guī)則,實(shí)際上能攔截掉很大一部分的異常嘗試。
因?yàn)榇嬖诤诎酌麊畏?wù),由DB和redis維持,所以可以直接導(dǎo)入大批量的黑產(chǎn)名單,這個(gè)在業(yè)務(wù)初期,大量依賴人工事后分析異常以及存在外部黑產(chǎn)數(shù)據(jù)的場(chǎng)景下,顯得格外有用。
缺點(diǎn):
由于用DB和redis是雙寫(xiě)的,一旦數(shù)據(jù)量過(guò)大,db寫(xiě)入性能即出現(xiàn)影響,同時(shí)影響redis寫(xiě)入,從而整個(gè)系統(tǒng)受到影響。真實(shí)案例,明明一個(gè)ip應(yīng)該在半小時(shí)前就從黑名單自動(dòng)消失,可以正常訪問(wèn)攜程,但是這個(gè)ip現(xiàn)在依然還是被攜程彈出高級(jí)別驗(yàn)證碼,導(dǎo)致用戶體驗(yàn)受損,排查下來(lái),就是由于DB單位時(shí)間數(shù)據(jù)量過(guò)大,出現(xiàn)IO瓶頸,這個(gè)數(shù)據(jù)失效請(qǐng)求一直在排隊(duì)狀態(tài),影響到生產(chǎn)。
因?yàn)閿?shù)據(jù)預(yù)處理和引擎耦合,并且是通過(guò)流量表進(jìn)行計(jì)算,導(dǎo)致了現(xiàn)在想增加一些復(fù)雜引擎和結(jié)果緯度,難度基本接近于重構(gòu),后期的維護(hù)和使用成本過(guò)高。并且由于流量表的結(jié)果緯度單一化,想做成組合緯度結(jié)果或者評(píng)分卡也成為了空談,只能單一化的輸出。類似“某攜程賬號(hào)在福建被盜,需要禁止這個(gè)賬號(hào)在福建IP的登錄,在上海IP允許其登錄”這種實(shí)際意義很大的場(chǎng)景無(wú)法實(shí)現(xiàn)。
由于大量數(shù)據(jù)的計(jì)算依賴DB,這套系統(tǒng)日均千萬(wàn)級(jí)別的計(jì)算量,讓DB多次達(dá)到了負(fù)荷極限,即使做了索引,因?yàn)榇罅咳哂嗪椭貜?fù)的規(guī)則計(jì)算,導(dǎo)致了整體服務(wù)的性能下降嚴(yán)重。實(shí)際案例是,隨著有段時(shí)間的業(yè)務(wù)量增長(zhǎng),DB表每分鐘產(chǎn)生的數(shù)據(jù)就是上萬(wàn)級(jí)別,而刪除的數(shù)據(jù)只是上千級(jí)別,導(dǎo)致DB表內(nèi)的數(shù)據(jù)超過(guò)數(shù)億條,直接無(wú)法操作。
因?yàn)檫@套系統(tǒng)的計(jì)算結(jié)果并不直接返回給請(qǐng)求方,而是異步計(jì)算并將結(jié)果寫(xiě)入黑白名單服務(wù),只有等待請(qǐng)求方第二次來(lái)請(qǐng)求黑白名單服務(wù)的時(shí)候,才會(huì)給出返回結(jié)果。類似”滿足xx條件的ip,30分鐘內(nèi)不允許該IP再次訪問(wèn)”的規(guī)則,只有在這個(gè)ip第二次來(lái)請(qǐng)求的時(shí)候,才會(huì)禁止其請(qǐng)求,無(wú)法在第一次就直接回復(fù)無(wú)法訪問(wèn),導(dǎo)致了掃號(hào),只要有足夠多的IP,對(duì)方可以隨意嘗試,每個(gè)IP都有一條命的無(wú)敵嘗試機(jī)會(huì)。
總結(jié):隨著業(yè)務(wù)量的增長(zhǎng)和業(yè)務(wù)場(chǎng)景的增加,這套系統(tǒng)已經(jīng)明顯顯現(xiàn)了性能和業(yè)務(wù)需求的瓶頸,需要改造。
1.5時(shí)代
在介紹了上面的系統(tǒng)后,讀者一定會(huì)發(fā)現(xiàn),這個(gè)系統(tǒng)阻擋的場(chǎng)景由于規(guī)則引擎的不可變,導(dǎo)致了能攔截到的異常數(shù)據(jù)都是基本固化的,在黑產(chǎn)千變?nèi)f化的當(dāng)今,這個(gè)系統(tǒng)只能對(duì)付對(duì)付一些非常初級(jí)的黑產(chǎn)興趣愛(ài)好者以及一些測(cè)試人員,想要依靠上面這個(gè)系統(tǒng),去阻擋真正的掃號(hào)工作室,批量注冊(cè),薅羊毛等情況,無(wú)異于癡人說(shuō)夢(mèng)。
基于這個(gè)情況,我們?cè)谌ツ晟暇€了風(fēng)險(xiǎn)庫(kù)系統(tǒng),這個(gè)系統(tǒng)旨在用現(xiàn)有的時(shí)間跨度較大的業(yè)務(wù)數(shù)據(jù),異步計(jì)算相關(guān)風(fēng)險(xiǎn),并輸出給黑白名單服務(wù),由這個(gè)服務(wù)為各個(gè)業(yè)務(wù)方提供結(jié)果。
從這個(gè)簡(jiǎn)單的系統(tǒng)架構(gòu)圖可以看到,我們?cè)诒WC原先風(fēng)控系統(tǒng)架構(gòu)不變的前提下,加入了這個(gè)風(fēng)險(xiǎn)庫(kù)系統(tǒng),對(duì)外仍然使用統(tǒng)一的黑白名單服務(wù)API接口提供結(jié)果,保證了業(yè)務(wù)方不需要再接入一個(gè)新的服務(wù)API,這個(gè)設(shè)定節(jié)約了我們大量的系統(tǒng)推廣成本以及接入方的接入成本,只需要在內(nèi)部確保系統(tǒng)的可用性和性能即可。
風(fēng)險(xiǎn)庫(kù)系統(tǒng)的特點(diǎn):
(1)計(jì)算規(guī)則相對(duì)復(fù)雜,所以沒(méi)有規(guī)則引擎的概念,直接使用sql統(tǒng)計(jì),自由度高。
(2)由于直接使用sql統(tǒng)計(jì),所以無(wú)法做規(guī)則實(shí)時(shí)調(diào)整,一定要進(jìn)行發(fā)布。
(3)離線計(jì)算數(shù)據(jù)是周/天級(jí)別,計(jì)算時(shí)間顆粒度是分鐘級(jí)別。
(4)統(tǒng)計(jì)結(jié)果支持下發(fā)黑白名單服務(wù),無(wú)需讓業(yè)務(wù)方單獨(dú)接入。
在這個(gè)系統(tǒng)上線后,可以說(shuō)我們才具備了一個(gè)風(fēng)險(xiǎn)規(guī)則(rule)這樣一個(gè)概念,同樣的,這個(gè)系統(tǒng)的優(yōu)缺點(diǎn)也很明顯。
優(yōu)點(diǎn):
由于可以使用sql語(yǔ)句做各種復(fù)雜統(tǒng)計(jì),相當(dāng)于是一個(gè)沒(méi)有任何限制的規(guī)則引擎,所以可以根據(jù)人工分析結(jié)果,設(shè)置各種復(fù)雜規(guī)則,分別應(yīng)對(duì)掃號(hào),爬蟲(chóng),異常注冊(cè),活動(dòng)/優(yōu)惠卷領(lǐng)取等等各種場(chǎng)景,并且效果經(jīng)過(guò)驗(yàn)證,相對(duì)于準(zhǔn)實(shí)時(shí)風(fēng)險(xiǎn)防御系統(tǒng)計(jì)算的結(jié)果只能做一個(gè)短時(shí)間維持(比如密碼錯(cuò)3次,只能讓一個(gè)賬戶30分鐘不能?chē)L試登錄),風(fēng)險(xiǎn)庫(kù)系統(tǒng)計(jì)算應(yīng)對(duì)的異常目標(biāo)的維持時(shí)間可以長(zhǎng)達(dá)幾年(異常注冊(cè)的薅羊毛賬號(hào),可以讓他5年不能參與活動(dòng))。
相對(duì)于準(zhǔn)實(shí)時(shí)風(fēng)險(xiǎn)防御系統(tǒng)計(jì)算的量大,精度低這么一個(gè)特點(diǎn),風(fēng)險(xiǎn)庫(kù)得到的結(jié)果是量小,精度高,都是99%以上可以確認(rèn)有問(wèn)題的緯度值,填補(bǔ)了無(wú)法長(zhǎng)時(shí)間維持黑名單,做異常數(shù)據(jù)積累的問(wèn)題。
缺點(diǎn):
由于種種原因,當(dāng)時(shí)上線這個(gè)系統(tǒng)的時(shí)候,任務(wù)緊時(shí)間急,架構(gòu)選取的是sql+db+redis,導(dǎo)致了計(jì)算大體量數(shù)據(jù),尤其是在目前業(yè)務(wù)量年年顯著增長(zhǎng)的情況下,DB明顯在性能上存在明顯瓶頸,分鐘級(jí)計(jì)算基本是這套系統(tǒng)的極限。
因?yàn)闆](méi)有了規(guī)則引擎概念,所有的都是通過(guò)配置rule來(lái)進(jìn)行數(shù)據(jù)抽取,自由度高的代價(jià)自然是每次調(diào)整規(guī)則或者新增規(guī)則都需要進(jìn)行發(fā)布,在某些需要應(yīng)急響應(yīng)的場(chǎng)景下,尤其是對(duì)比黑產(chǎn)團(tuán)隊(duì)調(diào)整自身策略的速度,往往捉襟見(jiàn)肘。
總結(jié):風(fēng)險(xiǎn)庫(kù)系統(tǒng)雖然填補(bǔ)了離線黑產(chǎn)數(shù)據(jù)統(tǒng)計(jì)的問(wèn)題,但是離真正的防御黑產(chǎn),依然是任重道遠(yuǎn)。
2.0時(shí)代
介紹完上面的準(zhǔn)實(shí)時(shí)風(fēng)險(xiǎn)防御系統(tǒng)和離線風(fēng)險(xiǎn)庫(kù)系統(tǒng)后,可以說(shuō)有了一個(gè)實(shí)時(shí)+異步數(shù)據(jù)的雛形,在這個(gè)基礎(chǔ)上,攜程信息安全業(yè)務(wù)安全團(tuán)隊(duì)構(gòu)建了下面這樣一個(gè)平臺(tái),我們命名為Ares平臺(tái)。
這個(gè)是Ares系統(tǒng)的架構(gòu)圖,讀者可以看到,相對(duì)于之前兩個(gè)系統(tǒng)的架構(gòu),這個(gè)系統(tǒng)除了頂層的API接口定義沿用了之前的老接口定義(避免接入方做無(wú)謂的開(kāi)發(fā)調(diào)整),其他的架構(gòu)基本上都做了重構(gòu)。
數(shù)據(jù)層:
數(shù)據(jù)層負(fù)責(zé)對(duì)各種結(jié)構(gòu)化以及非結(jié)構(gòu)化數(shù)據(jù)進(jìn)行統(tǒng)一的數(shù)據(jù)收集,清洗,預(yù)處理操作。目前來(lái)說(shuō),這種清洗注重點(diǎn)一般在區(qū)分正常用戶和異常用戶的注冊(cè),登錄到賬戶各種重要操作,瀏覽PV數(shù)據(jù),到最后購(gòu)買(mǎi)旅游產(chǎn)品的一個(gè)行為區(qū)別,以及用戶存在是否批量操作的相關(guān)數(shù)據(jù)抽取,這也被稱為用戶的社交網(wǎng)絡(luò)區(qū)分。
規(guī)則引擎層:
規(guī)則引擎層負(fù)責(zé)將清洗及預(yù)處理完成的數(shù)據(jù),使用實(shí)時(shí)流或者迭代作業(yè)按照定義好的規(guī)則或者模型進(jìn)行數(shù)據(jù)計(jì)算,將計(jì)算完成的數(shù)據(jù),存放在數(shù)據(jù)倉(cāng)庫(kù)內(nèi),以供分析層或者應(yīng)用層調(diào)用。
分析模型層:
分析模型層負(fù)責(zé)將目前已有的清洗完成以及計(jì)算完成的結(jié)果數(shù)據(jù)再清洗和歸類,進(jìn)行后續(xù)的規(guī)則分析,補(bǔ)充,調(diào)整,模型的建立,以及離線+實(shí)時(shí)評(píng)分卡的數(shù)據(jù)權(quán)重比例調(diào)整等。
應(yīng)用層:
應(yīng)用層主要負(fù)責(zé)將綜合得到的實(shí)時(shí)+離線的評(píng)分卡形式的得分結(jié)果通過(guò)SOA接口返回給業(yè)務(wù)方,告知業(yè)務(wù)方請(qǐng)求是否存在風(fēng)險(xiǎn),并提供操作建議,同時(shí)會(huì)將相關(guān)請(qǐng)求數(shù)據(jù)全部記錄,以供后續(xù)分析。
系統(tǒng)優(yōu)勢(shì):
由于Ares系統(tǒng)使用實(shí)時(shí)+離線兩部分?jǐn)?shù)據(jù)通過(guò)評(píng)分卡形式實(shí)時(shí)給出結(jié)果,避免了之前準(zhǔn)實(shí)時(shí)數(shù)據(jù)和離線數(shù)據(jù)各自為戰(zhàn),有效提高了返回結(jié)果的準(zhǔn)確性和有效性。
系統(tǒng)架構(gòu)的更新,有效提高了數(shù)據(jù)的統(tǒng)計(jì)量和計(jì)算效率,帶來(lái)的直接效果就是可以數(shù)據(jù)量放大,可以覆蓋更多的低頻次異常操作檢測(cè),比如低頻掃號(hào),低頻爬蟲(chóng),在新架構(gòu)上線后,抓取率明顯提高。
分析層同時(shí)引入規(guī)則和模型同時(shí)提供異常檢測(cè)策略,在某些已存在黑樣本的場(chǎng)景下,尤其是規(guī)則運(yùn)行時(shí)間長(zhǎng),黑產(chǎn)團(tuán)隊(duì)不斷變化策略的情況下,模型的異常檢出率和覆蓋率會(huì)優(yōu)于規(guī)則。
目前這套系統(tǒng)已經(jīng)開(kāi)始陸續(xù)為攜程多個(gè)部門(mén)提供黑產(chǎn)及異常行為檢測(cè),并且在年后,會(huì)基于這套系統(tǒng)打造攜程的賬戶風(fēng)險(xiǎn)畫(huà)像體系,為攜程所有高危行為接口提供行為異常檢測(cè)分析,比如無(wú)風(fēng)險(xiǎn)用戶,可以直接修改某些賬戶信息,高風(fēng)險(xiǎn)用戶,則需要驗(yàn)證多種信息,才能進(jìn)行賬戶信息或者其他的交易相關(guān)操作等。
黑產(chǎn)團(tuán)隊(duì)一直在進(jìn)行著技術(shù)以及思路的變化,不斷的挑戰(zhàn)甲方的信息以及資金安全。在這種大背景下,我們唯有不斷的自我革新,才能應(yīng)對(duì)國(guó)內(nèi)復(fù)雜多變的黑產(chǎn)局勢(shì)。
總結(jié)
以上是生活随笔為你收集整理的携程风险防御体系的变革之路的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: xxl-Job某一环境机器无法自动注册
- 下一篇: 计算机控制反激变换器控制,反激变换器你会