當前位置:
首頁 > 最新 > 洋碼頭應用安全架構

洋碼頭應用安全架構

作者介紹

梁中華, 洋碼頭首席架構師, 後端產品研發總監

10多年互聯網系統架構設計從業經驗,關注大型互聯網高可用架構,高性能存儲,目前負責洋碼頭基礎架構和電商業務平台。

寫在前面

作為一家快速發展的互聯網電商平台,應用安全一直是一個繞不開躲不過的問題,在前期準備不足的情況下,每次來襲都會讓我們一陣手忙腳亂,甚至影響用戶對公司的信心,甚至還會造成資損,進一步影響公司產品口碑。

洋碼頭電商平台在業務爆發之前基本上一直名不見經傳,黑產還看不到多少油水。自從我們B輪以後,業務高速發展,在業界也闖出了一些名頭,於是這些黑產基於某種利益驅動,頻頻對我們的平台進行攻擊。於是公司的技術人員和這幫黑產們來了幾輪令人印象深刻的攻防戰。

下面我重點介紹下洋碼頭電商平檯面臨的幾種比較嚴重的安全威脅,以及我們採取的應對措施和這些措施給系統架構造成的影響。

剩餘篇幅約3000字,可參閱下面的大綱閱讀

防撞庫

反滲透攻擊

業務介面流量攻擊

介面數據訪問越權

其它安全措施

防撞庫

關注互聯網圈的應該對兩年多以前淘寶賬號泄露事件有印象,黑客利用手中已有的非淘寶用戶帳號,對淘寶進行了9900多萬次比對嘗試,其中2059萬個賬號被成功匹配。這就是著名的」淘寶撞庫」事件。

「撞庫」,是指拿互聯網上已經泄露的賬號和密碼,批量嘗試登錄另一個網站,因為很多用戶在不同的網站上使用相同的賬號和密碼,所以成功率非常高。據騰訊2014年發布的《網路黑色產業鏈年度報告》,網路黑色產業(簡稱「黑產」)是指以計算機網路為工具,運用計算機和網路技術實施的以盈利為目的,有組織、分工明確的團伙式犯罪行為。

在這幫猖獗的黑產瘋狂撞庫作案的那些年,洋碼頭平台也沒有倖免,成為其攻擊對象,深受撞庫之苦。為此我們採取了很多策略,包括開發了一套反撞庫系統,幾經迭代,現在已經可以有效的防範各種撞庫行為。

在設計這套系統的時候,我們為這套系統定下了如下目標:

對現有業務系統的侵入性要足夠小,系統可獨立發展。

能快速、有效、準確地識別撞庫行為並進行攔截。

在系統資源有限的情況下,吞吐量上要過關,能抗住大規模攻擊。

系統要具備高可擴展性,能快速響應新情況。

先看看這種撞庫攻擊在反映到IT系統上的幾個重點特徵:

短時間內系統登錄頻次大幅度升高

這些登錄用戶Id大都是很長時間未登錄

這些登錄用戶一般不會進一步訪問更多的頁面,更多的是在嘗試。

這些登錄行為往往集中來自某些IP或者某些IP段上

這些用戶的登陸地往往和用戶的常用地不匹配。

有了這些特徵,設計系統就水到渠成了。首先,我們把介面的訪問日誌的關鍵信息通過kafka實時發給大數據處理系統,通過Spark Streaming進行初步流式計算,把計算結果臨時存儲起來,後台決策系統應用經過訓練過的演算法模型,根據這些結果數據進行回歸預測,把預測的結果通過消息匯流排實時的發給登錄風控系統,登錄風控系統根據預測結果里的用戶特徵,應用預先設定的攔截策略進行攔截。這套系統的模型和策略經過幾次細緻的分析和迭代,已經能有效地應對常見的撞庫行為,達到了系統設計目標。

因涉及敏感信息,具體策略和參數這裡暫且略過,歡迎有興趣的同學前來交流。

系統架構大致如下:

防撞庫系統架構

很多系統的複雜架構都和安全有關。從上圖可以看出,一個防撞庫就對系統架構有多麼大的影響。

反滲透攻擊

滲透攻擊手段繁多,歷史上各大大小小的互聯網公司都經歷了無數反滲透攻防戰。程序員們最愛的Github,在2017年全年收到了840個漏洞提交報告,Github為此付出了幾十萬美元的獎金。這些漏洞很多與滲透攻擊有關。這裡我具體展開幾個典型的場景。

業務介面流量攻擊

在業務野蠻生長的時候,總會有一些暴露在外的介面或頁面優化不到位、來不及優化、不值得優化或者有特殊場景下性能較差、消耗資源太多的問題。還有一些遺留系統、老版本等待下線的介面等不值得投入資源優化性能的介面存在。各種別有用心的、無聊的人就開始盯上你系統的這些薄弱環節,進行業務介面層面的流量滲透攻擊,對內部耦合的系統產生嚴重的性能壓力,甚至把核心業務庫打趴下。特別是在大促期間,這些攻擊會造成不可挽回的損失,大量的營銷費用可能就浪費了。即使是經過充分優化的系統,在對方飽和攻擊的情況也很難倖免。防流量攻擊是我們必須面對的非常嚴峻的現實問題。

一開始遇到這種攻擊的時候,我們搞了一個開源的單機WAF。但這種開源的系統一般性能較低,抗壓能力和功能都很有限,更不要說對其進行一些個性化的定製了。第二年我們上了一個網路接入運營商提供的安全防護策略,確實擋住了一些攻擊,但這種通用的七層防護策略往往會有比較大的延遲,在大促期間影響還是挺明顯的。另外策略也不夠精細,比如只能設置一般防護和高級防護,粒度也只能到網站級別,不能根據業務場景進行區分對待,指標設置高了防護效果不好,低了又可能造成誤殺。

第三年我們痛定思痛,為了公司系統的長治久安,我們決定根據公司業務的特徵自研一套高度自動化、高性能、可擴展的類WAF系統,給我們的系統安裝一個「門神」。選型期間,我們考察了業界的做法,發現一般這種系統都是在接入層來實現,如京東定製化的nginx模塊,通過lua來實現攔截邏輯。這種方案確實性能不錯,也比較可靠,但需要開發人員對nginx的模塊開發非常熟悉,否則開發時間不可控。

一番調研後我們決定採用基於Netty的新一代高性能全非同步編程框架Vert.x。Vert.x發展到3.0版本,基本上在生產上使用已經不是問題了。經過一輪性能測試,發現其可以滿足我們的要求。「門神」項目於16年9月正式立項,於當年11月黑五前正式投產。

門神項目開發的過程中,項目組投入了大量的精力來識別我們自有系統的特徵和外部攻擊的特徵,最終形成我們針對性的安全防護策略。經過大量的論證,我們形成了一套基於用戶IP、訪問URL、accessToken、用戶終端、業務介面類型等特徵的組合交差的立體防護策略。因涉及到一些敏感信息,具體系統參數恕不能詳細說明。除了進行安全攔截,我們還陸續開發了流量控制、熔斷、報警、訪問報表等高級附加功能。

「門神」系統投產以後,幫助洋碼頭平穩的度過了16年、17年黑五大促,系統的功能、穩定性和性能得到了驗證。

該系統的架構有點複雜,我這裡通過一張架構圖來說明一下:

門神系統架構

介面數據訪問越權

公司業務在高速發展的時候,團隊都忙於業務版本,應用介面的數據嚴謹性校驗往往會被忽略,有一段時間我們的訂單信息莫名奇妙的泄露,在排除了撞庫、後台管理系統許可權不嚴、導出訂單數據管理不嚴,QQ到處傳等可能的問題後,我們發現系統也有一些非常可疑的點,就是應用業務介面數據授權不嚴,導致數據訪問越權。

具體情況是,我們有一個公網上可以訪問的應用介面,這個介面會根據傳入的訂單號參數返回訂單信息,這些信息可能會被黑產利用。這個介面內部只判斷了當前客戶端是否拿到了登錄授權的token,但是沒有對訂單擁有者的用戶和當前token所屬的用戶進行匹配校驗,導致只要是拿到任何token的客戶端都可以任意的訪問這個介面,並枚舉訂單號爬取用戶信息,然後轉手賣給黑產。

這種安全漏洞,從系統的角度沒有太好的方法來解決,只有通過提升團隊經驗、完善開發規範、落地code review,培養大家的安全意識等多個環節來盡量避免這樣的安全隱患和技術債務的出現。一個有經驗的開發人員對公司系統健康發展是非常重要的;如何讓開發人員成長,讓寶貴的經驗在團隊中輻射、傳播,是洋碼頭技術團隊這幾年在著力做的一件事情。

其他安全措施

在應用介面層面我們還陸續上了HTTPS和HTTP/2,介面報文MD5簽名驗證,這在一定程度上保障了介面本身的安全性,提升被攻擊的門檻。

在數據方面,安全敏感的用戶數據的傳輸和存儲都做加密和脫敏處理,如用戶密碼,手機號,銀行卡等感敏要麼做hash,要麼做加密處理,以防數據泄露。

還有其他一些應用層面的安全問題,比如跨站腳本攻擊,SQL注入等,這在以前都是很嚴重的安全隱患,隨著開發框架的完善,開發人員安全意識的普及和提升,基本上很少發生了,幸甚。

寫在最後

應用安全,平台之大事,不可不察也。

安全領域的投入產出不是那麼明顯,但是安全堡壘一旦被攻破,其影響往往是致命的。一些別有用心的人利用盜取的這些數據做什麼勾當,有時候都是我們無法想像的,比如最近剛剛出現的facebook 5000萬用戶數據泄露的問題,弄的小札同學心情很不好:)

願大家在日常項目里,提高安全意識和設計方案的嚴謹性,持續關注安全領域,一刻都不要放鬆警惕,唯有如此才能有備無患。

全文完

近期主題預告:

數據挖掘在電商平台上的風控與反作弊應用

洋碼頭推薦系統的演進

緩存技術在洋碼頭商品領域的應用

洋碼頭自動化發布系統介紹

關注【洋碼頭技術】,第一時間獲取我們最新的技術分享推送。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 洋碼頭技術 的精彩文章:

洋碼頭技術演進之路

TAG:洋碼頭技術 |