單。
[0046] 在匯總器103的配置文件中設置針對具體目的域名的單位時間請求量閥值和處 理動作。
[0047] 匯總器103根據具有某種統(tǒng)計數據項組合該訪問請求的匯總統(tǒng)計結果進行判斷, 當這種訪問請求的單位時間訪問量(QPS)值超過了其目的域名對應的單位時間訪問量閥 值時,則產生相應的黑名單記錄,該記錄包括該請求的目的域名、用戶名和客戶端IP以及 相應的處理動作。所產生的黑名單記錄被加入黑名單,從而產生當前黑名單。
[0048] 另外,在匯總器103中還維護一個白名單。白名單可以具有黑名單同樣的結構,但 白名單實現一種優(yōu)先處理策略,對匹配白名單的訪問請求,處理動作一律是放行,即把該訪 問請求發(fā)往其目的后端服務器(host)。
[0049] 匯總器103將黑名單和預定義的白名單異步加載至負載均衡器101。根據本發(fā)明 的一個實施例,匯總器103的監(jiān)聽線程用于給負載均衡器101提供黑名單列表。當負載均衡 器101發(fā)起請求時,監(jiān)聽線程獲取黑名單,并把黑名單連同白名單發(fā)送給負載均衡器101。
[0050] 負載均衡器101是黑名單中"處理動作"的實際執(zhí)行者。
[0051] 如果一訪問請求匹配白名單,由于負載均衡器101的處理原則是白名單優(yōu)先,因 此不論該訪問請求是否匹配黑名單,負載均衡器101的對該查詢執(zhí)行的處理動作是放行。 如果訪問請求不匹配白名單而匹配黑名單,則負載均衡器101根據黑名單的規(guī)定采取相應 處理動作。如果訪問請求即不匹配白名單也不匹配黑名單,則可以對該訪問請求放行。
[0052] 根據本發(fā)明,負載均衡器101根據匯總器103發(fā)送來的黑名單和白名單,對來自網 絡的訪問請求做如下處理:
[0053] 當該訪問請求匹配白名單或者不匹配黑名單時,則對該訪問請求放行,即構造相 應的UDP報文并發(fā)給聚集器。因只有這種放行流量才是真正發(fā)到相應后端服務器的流量, 聚集器要繼續(xù)計算這種訪問請求的"統(tǒng)計結果"。
[0054] 當該訪問請求不匹配白名單且匹配黑名單時,對該訪問請求按照黑名單中相應記 錄規(guī)定的處理動作來進行操作。
[0055] 由于本發(fā)明的方法是定期進行訪問請求的新統(tǒng)計并產生新的黑名單,因此在應用 統(tǒng)計結果和黑名單時,是指的應用時的"當前"統(tǒng)計結果和"當前"黑名單。
[0056] 本發(fā)明的系統(tǒng)和方法適于解決網絡的拒絕服務(DOS)攻擊和分布式的拒絕服務 攻擊。本發(fā)明的技術尤其適合于針對HTTP流攻擊的防范。通過對用戶流量的分析和統(tǒng)計, 找到符合模式匹配的攻擊流量并加以限流或丟棄,來達到保護其后端的效果。
[0057] 下面結合具體實施例詳細描述聚集機20及其執(zhí)行統(tǒng)計的過程。但應該理解,具體 實施例僅用于理解本發(fā)明的精神和具體實現,但本發(fā)明并不受限于特定的實施例。
[0058] 根據本發(fā)明的聚集機20根據接收的UDP報文產生針對特定統(tǒng)計數據項的統(tǒng)計結 果。如圖2所示,根據本發(fā)明的一個實施例,聚集機20包括接收部分21、計算部分22和發(fā) 送部分23.
[0059] 接收部分21,用于接收來自負載均衡器1發(fā)送的UDP報文,所述UDP報文是通過負 載均衡器解析來自網絡的查詢請求而產生的。
[0060] 計算部分22根據預定義統(tǒng)計數據項組合和預定義統(tǒng)計時長對接收的UDP報文進 行統(tǒng)計以產生統(tǒng)計結果。
[0061] 發(fā)送部分23根據匯總器的請求向其發(fā)送所述統(tǒng)計結果。發(fā)送部分23在收到來自 匯總器的請求后,把當前的統(tǒng)計結果構造成響應報文,然后把響應報文發(fā)送給匯總器。
[0062] 對于來自網絡的每個HTTP請求,它只能被負載均衡器解析成一個UDP報文并傳輸 至聚集器集群上的某一臺聚集機20上。各聚集機20根據預定義的統(tǒng)計條件,如根據UDP 報文中的數據項比如用戶名userid、IP地址ip和通用資源標示符uri的特定組合以及指 定的統(tǒng)計時段,進行訪問請求次數的統(tǒng)計。
[0063] 對接收的UDP報文,聚集機20從該UDP報文中抽取信息項如userid、ip、uri等, 以這些信息項的指定組合(可以存在多種組合)作為統(tǒng)計數據項,按照設定的統(tǒng)計時間段 時長(如分為短時間段和長時間段)進行請求次數的統(tǒng)計。
[0064] 常用統(tǒng)計數據項包括如下三種:
[0065] userid+ip+uri ;
[0066] userid+uri ;
[0067] ip+uri。
[0068] 統(tǒng)計完成后,集聚生成統(tǒng)計結果,例如以JSONS數據格式的web頁形式。在接收到 匯總器3的請求時,把統(tǒng)計結果傳送給匯總器。
[0069] -臺聚集機20計算流量統(tǒng)計的詳細過程如下:
[0070] 在啟動統(tǒng)計過程之后,當接收到給定統(tǒng)計數據項的第一個upd報文時,對相應變 量進行初始化,將接收到該"第一個UPd報文"的當前時刻作為有效開始計算時刻,訪問次 數設為1,開始時間設為該當前時間,持續(xù)時間設為0 :
[0071] total_count = 1 ;
[0072] start_time = time (NULL);
[0073] last_length = 0 ;
[0074] 在后續(xù)的統(tǒng)計計算中,last_length是從開始計算時刻start_time到當前時刻 current_time的持續(xù)時間的時長。
[0075] 對于后續(xù)接收的該統(tǒng)計數據項的報文,根據該報文的接收時間與設定的統(tǒng)計時間 段的關系,訪問次數的計算分為三種情況:
[0076] (1)當接收時間落在第一個統(tǒng)計時間段內時,訪問次數在原基礎上增1,持續(xù)時間 為當前時間與有效開始計算時間之差。假設設定的統(tǒng)計時間段時長設置為60秒,那么一小 時中就有60個統(tǒng)計時間段,該"第一個統(tǒng)計時間段"可被認為是某一個60秒的時間。
[0077] (2)當接收時間落在所述第一個統(tǒng)計時間段之后等長的第二個統(tǒng)計時間段之間 時,有效開始計算時間將被重新記錄。將接受時間作為新的統(tǒng)計時間段的末點,將相應的起 點時刻記為有效開始計算時間。此時的訪問次數為新的統(tǒng)計時間段內的訪問次數,計算方 法為先計算原統(tǒng)計時間段內的QPS,將QPS乘以新的統(tǒng)計時間段中原統(tǒng)計時間段部分的時 間,再增1,持續(xù)時間即為統(tǒng)計時間段時長。
[0078] (3)當接收時間落在第二個統(tǒng)計時間段之后時,當前的接收時間將被定為有效開 始計算時間,訪問次數重新設置為1,持續(xù)時間為〇,等同于初始化,重新計算流量。
[0079] 以設定統(tǒng)計時間段為60秒為例,相應算法偽代碼如下:
[0080]
【主權項】
1. 一種根據接收的UDP報文產生針對特定統(tǒng)計數據項的統(tǒng)計結果的系統(tǒng),所述UDP報 文是通過負載均衡器解析來自網絡的查詢請求而產生的,所述系統(tǒng)包括: 接收部分,用于接收所述負載均衡器發(fā)送的UDP報文; 計算部分,根據預定義統(tǒng)計數據項組合和預定義統(tǒng)計時長對接收的UDP報文進行統(tǒng)計 以產生統(tǒng)計結果,所述統(tǒng)計結果給出了在當前統(tǒng)計時長內累計的包含有所述預定義統(tǒng)計數 據項組合的UDP報文數量; 發(fā)送部分,根據匯總器的請求向其發(fā)送所述統(tǒng)計結果。
2. 根據權利要求1所述的系統(tǒng),其中所述預定義統(tǒng)計數據項組合包括下述之一: 用戶名、客戶端IP地址和通用資源標示符; 用戶名和通用資源標示符;以及 客戶端IP地址和通用資源標示符。
3. 根據權利要求1所述的系統(tǒng),其中所述統(tǒng)計結果以JSONS數據格式通過web頁形式 被發(fā)送。
4. 根據權利要求1所述的系統(tǒng),其中,根據發(fā)送的所述統(tǒng)計結果,所述匯總器產生用于 確定是否放行相應查詢請求的黑名單。
5. -種根據接收的UDP報文產生針對特定統(tǒng)計數據項的統(tǒng)計結果的匯聚器,所述匯聚 器包括多個如權利要求1所述的系統(tǒng),其中 這多個系統(tǒng)彼此獨立運行,分別執(zhí)行所述的統(tǒng)計以產生各自的統(tǒng)計結果,并且 根據匯總器的請求,所述多個系統(tǒng)分別向所述匯總器發(fā)送各自的統(tǒng)計結果,并且由所 述匯總器產生匯總的統(tǒng)計結果。
【專利摘要】本發(fā)明涉及一種根據接收的UDP報文產生針對特定統(tǒng)計數據項的統(tǒng)計結果的系統(tǒng),所述UDP報文是通過負載均衡器解析來自網絡的查詢請求而產生的,所述系統(tǒng)包括:接收部分,用于接收所述負載均衡器發(fā)送的UDP報文;計算部分,根據預定義統(tǒng)計數據項組合、預定義統(tǒng)計時長對接收的UDP報文進行統(tǒng)計以產生統(tǒng)計結果,所述統(tǒng)計結果給出了在當前統(tǒng)計時長內累計的包含有所述預定義統(tǒng)計數據項組合的UDP報文數量;發(fā)送部分,根據匯總器的請求向其發(fā)送所述統(tǒng)計結果。
【IPC分類】H04L12-26, H04L12-803
【公開號】CN104579841
【申請?zhí)枴緾N201510009966
【發(fā)明人】翁志, 周盛寬
【申請人】北京京東尚科信息技術有限公司, 北京京東世紀貿易有限公司
【公開日】2015年4月29日
【申請日】2015年1月9日