當前位置: 妍妍網 > 碼農

15.6k star! 推薦一款超強的業務風控系統

2024-06-19碼農

一、計畫介紹

TH-Nebula 透過解析企業的網路流量 (包括 http https ) 來還原企業內部的各種事件, 從而進行深層次的分析來發現各種風險 ,並快速的實施攻防對抗,星雲采用旁路流量的方式進行數據采集,無需在業務邏輯上做數據埋點或侵入,同時支持本地私有化部署和 Docker 映像雲端部署;出於數據私密和敏感性的考慮,我們不做任何數據的上傳;

另外考慮到部份使用者風控經驗不足,星雲會提供基礎的風控策略樣版,使用者可以結合業務實際情況,靈活的進行配置和調整。考慮到攻防對抗的時效性,策略調整之後即時生效,無需重新編譯和上線。

二、計畫特點

1.輕量級部署

星雲采用完全旁路流量解析的方式來采集業務資訊,企業只需要與運維配合即可完成部署。值得一提的是,即使在業務增加、變化的情況下企業都可快速地獲取到網路存取、登陸、註冊、下單、參與活動等業務行為。

2.內建風險辨識規則,簡單易用

在「星雲」上內建了大量業務場景下的攻防規則,並采用視覺化規則編輯的方式,企業可以快速編輯策略並進行實際環境下的測試。

3.無埋點,無敏感數據泄漏風險

星雲不需要企業研發埋點即可實作存取、登陸、註冊、資訊修改等的數據即時采集,無敏感數據外泄風險,更好的保護企業數據私密。

三、技術選型

前端環境

n ode.js: 11.x

npm: 6.x

webpack: 4.x

後端環境

java: 1.8

maven: 3.x

python: 2.7.x

四、架構設計

TH-Nebula 是一個互聯網風控分析和檢測平台, 可以對包括流量攻擊, 帳戶攻擊, 支付攻擊在內的多種業務風險場景進行細致的分析, 找出威脅流量, 幫助使用者減少損失.

與常見的一些簡易安全防護軟體不同, TH-Nebula 本質上應該是一套完整且獨立的數據分析平台, 邏輯上, 它需要提供以下幾個方面的功能:

  • 數據采集與整合平台. 負責對接客戶現有系統不同形式存在的各種原始數據, 包括流量, 即時日誌, 日誌檔等.

  • 數據規整化與業務日誌提取系統. TH-Nebula 對原始數據進行清洗和標準轉換, 並根據配置抽象出各種標準的業務日誌, 方便後續進一步的分析.

  • 數據持久化功能.對於進入系統的日誌, 進行持久化, 方便後續的離線計算以及攻擊溯源操作.

  • 海量數據即時計算引擎. 對進入系統的海量數據, 進行大規模即時平行計算, 得到關於使用者的即時統計特征

  • 海量數據離線批次處理計算引擎. 對進入系統的海量數據, 間隔性地進行離線批次處理計算, 得到關於使用者的固定特征

  • 高效能策略引擎. 利用即時計算和離線計算的數據, 對所有使用者存取進行策略判別, 辨識出風險流量, 方便後續進一步處理

  • 風險事件和黑白名單管理功能. 對於系統中辨識出的風險事件, 以及與之相關的黑白名單進行管理和查詢

  • 數據視覺化和風險數據自助式分析系統. 方便對原始數據進行 review , 對風險情況進行溯源

  • 數據匯出和 API 整合. 用於將黑白名單和風險事件匯出, 整合到客戶系統; 同時可以進一步將系統內部數據匯出.

  • 系統設定和管理功能. 復雜的系統需要配合相應的管理工具.

  • 系統粗略的架構設計如下圖所示:

    整個 TH-Nebula 系統, 功能比較完整和復雜, 無法用單個行程或軟體的形態來提供這樣一整套平台.在物理實作上, 將由多個獨立的元件組成, 純業務模組包括:

  • 數據采集和轉化模組. 數據采集和規整化由單個物理模組提供.

  • 數據即時計算模組和規則引擎. 提供了系統中即時處理的功能, 包括即時計算, 準即時計算, 策略引擎等.為了簡化, 目前統一在即時模組.

  • 數據離線計算模組. 離線計算負責離線數據的統計計算, 數據呈現以及數據持久化等.

  • 系統設定和管理模組. 配置和所有的數據管理都由單獨的web套用負責.

  • TH-Nebula 前端展現模組. TH-Nebula 的前端采用 JS + API 的模式, 大量的數據展現功能由前端模組來提供支撐.

  • 當然, 系統還用到了許多底層的平台支撐:

  • 系統緩存 Redis . Redis 提供了緩存數據的支撐, 主要包括訊息中介軟體和監控數據的儲存.

  • 檔案系統. 透過檔資料庫, 可以提供海量數據的儲存和查詢.

  • 數據儲存 MySQL . MySQL 提供了所有具備強持久化需求的數據落地和讀取.

  • 使用者畫像輔助 Key-Value 資料庫 AeroSpike . AeroSpike 是一個 Key-Value 資料庫, 為使用者畫像數據的高效能存取提供了支撐.

  • 其他. 包括負載均衡 Nginx , 離線管理指令碼, 行程監控平台, 客製內核模組等多個其他功能.

  • 下圖描述了系統的物理模組組成, 以及邏輯模組在其中的劃分

    五、功能

    總覽:觀察網站流量和風險事件的情況

    風險名單管理:由你設定的某個具體的策略出發而產生,風險名單管理頁面展示了風險名單的列別,透過這個頁面可以進行風險名單的查詢、刪除和人工添加等操作。

    風險事件管理:風險事件由一組關聯風險名單的基礎事件組成,風險事件可以對不同的攻擊進行整理成組,以便分析人員快速的針對一組風險事件進行檢視。

    風險分析:風險分析頁面提供了IP、USER、PAGE、DEVICE ID四個維度的分析視角、允許分析人員透過不同的維度去檢視某個IP、使用者、裝置或頁面的細節以還原風險事件的整個流程。

    日誌查詢:透過自訂的方式去搜尋歷史日誌中的數據

    策略管理:提供了視覺化策略編輯功能,允許使用者透過界面方式建立或編輯策略,並且可透過對策略狀態的編輯快速的測試策略的有效程度,以及生產策略的下限。

    六、場景介紹

    對於公司業務細分到不同的場景, 再到客製策略, 以及 TH-Nebula 指令碼可能會有些模糊, 對於一開始認識 TH-Nebula 系統可能會對此概念模糊不清, 所以接下來對於不同的場景分別制定策略, 來深入了解策略的客製, 以及 TH-Nebula 指令碼的客製.

    IP撞庫登陸

    假設同一個 IP , 不斷的用不同的帳號或者密碼一直存取登陸頁面, 那麽設定次數之後就可以捕獲到這個 IP , 之後對此 IP 進行彈驗證碼, 封 IP 等處理.

    策略的制定

    首先對公司的登陸介面在新建策略的時候, 以 [事件-動態資源請求] 選定內容 [ page ] , 也就是 URL 中包含了 login 欄位的, 即認定為登陸介面, 此處要根據公司的登陸介面做相應的改變, 每家公司業務的登陸介面不盡相同. 在 ①處填公司的登陸介面

    接下來選擇點選圖片中②所全選的+號, 選擇 [ 條件判斷 - 條件統計 - 動態資源請求 ]

    然後編輯參數, 選擇同一個 IP 的存取次數, 這樣才可以達到計算的效果

    以上是即時計算5分鐘內統計同一 IP 存取登陸介面則對次 IP 進行判定為稽核或者是黑名單, 透過 TH-Nebula 查詢介面可以查詢到黑名單, 稽核名單, 可以對其做進一步處理.

    IP大量請求卻不載入靜態資源

    假設一個 IP 大量的請求卻不載入靜態資源, 那麽可以認定此 IP 是透過機器程式登陸的操作的, 只對介面存取, 這種 IP 存在一定的風險.

    策略的制定

    選擇新建策略, 選擇 [ 事件 - 動態資源請求 ] 選定內容 c_ip , 包含 [ . ] , 這樣表達的意思是所有的 IP 都會被捕獲到, 接下來透過條件篩選出同一個 IP 大量請求卻不載入靜態資源的 IP .

    選擇 [ 條件判斷 - 條件統計 - IP請求量5M ] 然後編輯參數設定為 [ c_ip ] 大於50, 表示在5分鐘內某個相同的 IP 存取50次網站 接下來選擇 [ 條件判斷 - 條件統計 - 靜態資源請求量 ] 編輯參數設定 [ c_ip ] 等於 [0]

    這樣設定就可以判斷出同一個 IP 在5分鐘內大量請求介面卻不載入靜態資源, 進行判定為稽核或者是黑名單, 透過 TH-Nebula 查詢介面可以查詢到黑名單, 稽核名單, 可以對其做進一步處理.

    IP關聯多個使用者

    假設一個 IP 以多個使用者登陸, 那麽可以認定此 IP 是透過機器程式操作多個用, 這種 IP 存在一定的風險.

    策略的制定

    選擇新建策略, 選擇 [ 事件 - 動態資源請求 ] 選定內容 [ c_ip ] , 包含 [ . ] , 這樣表達的意思是所有的 IP 都會被捕獲到, 接下來透過條件篩選出同一個 IP 關聯多個使用者

    隨後增加條件篩選

    需要註意編輯參數

    之後增加處置措施

    以上三個例子從3個不同的業務場景說明了制定場景的方法, 希望可以從這些例子幫助到理解根據業務制定策略.

    原始碼下載地址:

    https://gitee.com/threathunter/nebula.git

    看到最後,如果這個計畫對你有用,一定要給我點個「 在看和贊 」。