對來自網(wǎng)絡(luò)的訪問請求產(chǎn)生黑名單的系統(tǒng)和方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種對來自網(wǎng)絡(luò)的訪問請求產(chǎn)生黑名單的系統(tǒng)和方法,使得可以對來自網(wǎng)絡(luò)的訪問請求進行限制。
【背景技術(shù)】
[0002]傳統(tǒng)的負載平衡器(Load Balancer),如采用Iinux下HaProxy的配置,用于讀取來自網(wǎng)絡(luò)的每一個HTTP請求中所包含的cookies或URL解釋,并且基于這些信息重寫報頭并將HTTP請求發(fā)往后端服務(wù)器群,使得后端服務(wù)器群中各服務(wù)器達到流量、資源占用的平衡狀態(tài)。但是,傳統(tǒng)的負載平衡器不會自動對網(wǎng)絡(luò)的流量進行濾過檢查,不能對攻擊流量進行限流或丟棄。
[0003]在現(xiàn)有技術(shù)中,已知有基于流量清洗技術(shù)通過偵測TCP分組來實現(xiàn)針對ICMP/TCP/UDP流攻擊進行防護的,通過重發(fā)TCP/UDP分組來實現(xiàn)。這種已知方案僅對TCP/UDP層的分組有效,它對于預防需解密的開放式系統(tǒng)互聯(lián)參考模型(OSI)第7層應(yīng)用層的HTTP流攻擊無能為力。
[0004]一種想法是根據(jù)對訪問URL做統(tǒng)計,根據(jù)單位時間訪問量如QPS來限制訪問請求。針對一個大型網(wǎng)站訪問URL的統(tǒng)計通常消耗很多內(nèi)存。一般來說,對于數(shù)據(jù)項IP地址、用戶標識(USERID)、統(tǒng)一資源定位符(URL)等的任何一個組合,需要記錄與該組合相關(guān)聯(lián)的每一個訪問的時間戳(timestamp)。
[0005]在現(xiàn)有技術(shù)中,當需要計算QPS時,將各個時間點過濾或排序,既費時又耗內(nèi)存。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是提供一種對來自網(wǎng)絡(luò)的訪問請求產(chǎn)生黑名單的系統(tǒng)和方法,使得可以對來自網(wǎng)絡(luò)的訪問請求進行限制。
[0007]根據(jù)本發(fā)明的一個方面,提供一種對來自網(wǎng)絡(luò)的訪問請求產(chǎn)生黑名單的系統(tǒng),包括:接收部分,所述接收部分按預定的請求時間間隔向聚集器請求統(tǒng)計結(jié)果,并接收來自所述聚集器的統(tǒng)計結(jié)果,其中所述統(tǒng)計結(jié)果給出了在預定統(tǒng)計時長內(nèi)累計的包含有預定義統(tǒng)計數(shù)據(jù)項組合的UDP報文數(shù)量,每個UDP報文是根據(jù)解析相應(yīng)訪問請求而產(chǎn)生;生成部分,所述生成部分根據(jù)所接收的統(tǒng)計結(jié)果和預定義規(guī)則生成訪問請求的黑名單;監(jiān)聽部分,該監(jiān)聽部分以異步方式把所述黑名單加載至負載均衡器。
[0008]根據(jù)本發(fā)明的另一方面,提供一種對來自網(wǎng)絡(luò)的訪問請求產(chǎn)生黑名單的方法,包括:按預定的請求時間間隔向聚集器請求統(tǒng)計結(jié)果,并接收來自所述聚集器的統(tǒng)計結(jié)果,其中所述統(tǒng)計結(jié)果給出了在預定統(tǒng)計時長內(nèi)累計的包含有預定義統(tǒng)計數(shù)據(jù)項組合的UDP報文數(shù)量,每個UDP報文是根據(jù)解析相應(yīng)訪問請求而產(chǎn)生;根據(jù)所接收的統(tǒng)計結(jié)果和預定義規(guī)則生成訪問請求的黑名單;以異步方式把所述黑名單加載至負載均衡器。
[0009]根據(jù)本發(fā)明,其中以異步方式把所述黑名單加載至負載均衡器包括:監(jiān)聽負載均衡器的請求,當負載均衡器發(fā)起請求時,獲取黑名單,并把黑名單發(fā)送給所述負載均衡器。
[0010]根據(jù)本發(fā)明,其中所述聚集器包括多臺彼此獨立運行的聚集機,各臺聚集機分別進行所述的統(tǒng)計。本發(fā)明的方法還包括從所述多臺聚集機分別接收統(tǒng)計結(jié)果,并根據(jù)所述分別接收的統(tǒng)計結(jié)果產(chǎn)生匯總的統(tǒng)計結(jié)果。并且所述黑名單根據(jù)所述匯總的統(tǒng)計結(jié)果和所述預定義規(guī)則生成。
[0011]根據(jù)本發(fā)明的方法,還包括,利用設(shè)置了針對各預定目的域名的單位時間請求量閥值和處理動作的配置文件,根據(jù)所述統(tǒng)計結(jié)果計算對應(yīng)所述預定義統(tǒng)計數(shù)據(jù)項組合的訪問請求的單位時間訪問量,當該訪問量超過了其目的域名對應(yīng)的單位時間訪問量閥值時,則建立相應(yīng)的黑名單記錄,該記錄包括該訪問請求的目的域名、用戶名和客戶端IP以及相應(yīng)的處理動作,并且所產(chǎn)生的黑名單記錄被加入所述黑名單,從而產(chǎn)生當前的黑名單。
[0012]根據(jù)本發(fā)明,其中所述單位時間請求量是每秒查詢率QPS值。
【附圖說明】
[0013]下面將參考附圖詳細地描述本發(fā)明的實施例,其中:
[0014]圖1是根據(jù)本發(fā)明的用于對來自網(wǎng)絡(luò)的訪問請求進行限制的系統(tǒng)的結(jié)構(gòu)圖;
[0015]圖2是根據(jù)本發(fā)明的對來自網(wǎng)絡(luò)的訪問請求產(chǎn)生黑名單的系統(tǒng)的示例性匯總器的組成框圖示例。
【具體實施方式】
[0016]本發(fā)明提供了利用統(tǒng)計信息產(chǎn)生黑名單,從而對來自網(wǎng)絡(luò)的訪問請求進行限制的系統(tǒng)和方法。
[0017]一個訪問請求,如來自因特網(wǎng)的HTTP請求,包括如下數(shù)據(jù)項:該訪問用戶要訪問的目的域名(host);用戶請求的通用資源標示符(uri);用戶名(uid);客戶端IP地址(cip)等。
[0018]根據(jù)本發(fā)明,提供一種對來自網(wǎng)絡(luò)的訪問請求進行限制的系統(tǒng),該系統(tǒng)包括負載均衡器、聚集器和匯總器。
[0019]所述負載均衡器接收來自所述網(wǎng)絡(luò)的訪問請求,把所接收的每個訪問請求解析成一個UDP報文,并且把UDP報文傳送給聚集器。
[0020]所述聚集器根據(jù)預定義統(tǒng)計數(shù)據(jù)項組合和預定義統(tǒng)計時長對接收到的UDP報文進行統(tǒng)計,并且根據(jù)匯總器的請求向其發(fā)送統(tǒng)計結(jié)果。所述統(tǒng)計結(jié)果給出了在當前的預定義統(tǒng)計時長內(nèi)累計的包含有所述預定義統(tǒng)計數(shù)據(jù)項組合的UDP報文數(shù)量。
[0021]所述匯總器按照預定的請求時間間隔向所述聚集器請求統(tǒng)計結(jié)果,接收來自所述聚集器的統(tǒng)計結(jié)果,根據(jù)所接收的統(tǒng)計結(jié)果和預定義規(guī)則生成訪問請求的黑名單,并且根據(jù)所述負載均衡器的請求把黑名單發(fā)送給所述負載均衡器,其中所述黑名單定義了對相應(yīng)訪問請求的處理動作。
[0022]所述負載均衡器根據(jù)當前黑名單確定對所接收的每個訪問請求的處理動作。
[0023]下面結(jié)合具體實施例詳細描述根據(jù)本發(fā)明實施例的用于對來自網(wǎng)絡(luò)的訪問請求進行限制的系統(tǒng)。但應(yīng)該理解,具體實施例僅用于理解本發(fā)明的精神和具體實現(xiàn),但本發(fā)明并不受限于特定的實施例。
[0024]圖1示出根據(jù)本發(fā)明用于對來自網(wǎng)絡(luò)的訪問請求進行限制實施例的系統(tǒng)100,該系統(tǒng)100包括3個模塊:
[0025]負載均衡器101,
[0026]聚集器102,和
[0027]匯總器103。
[0028]負載均衡器101接收來自網(wǎng)絡(luò)的訪問請求,如來自因特網(wǎng)的HTTP請求,并將接收的訪問請求解析成UDP報文,再將UDP報文傳輸給聚集器。
[0029]UDP報文因其資源消耗小、處理速度快等優(yōu)勢可以大大減小負載均衡器的額外開銷。UDP協(xié)議不屬于連接型協(xié)議,所以會存在一定的報文丟失現(xiàn)象。但這種丟失在可控誤差范圍之內(nèi),對系統(tǒng)的健碩性影響可忽略。
[0030]聚集器可包括多臺聚集機。多臺聚集機水平獨立擴展,即每臺聚集機是獨立部署和運行的,它們相互之間沒有影響和依賴。如果聚集器處理能力不能滿足需要,可以增加機器,再部署新的聚集機。這樣可以較好地滿足大交通流量的需要。
[0031]負載均衡器101把每個UDP報文傳輸至一臺選定的聚集機。各臺聚集機分別進行所述統(tǒng)計。
[0032]根據(jù)本發(fā)明的一個實施例,負載均衡器101用逐個輪詢的方式向多臺聚集機發(fā)UDP報文。例如,第一個UDP包發(fā)給第一臺聚集機,第二個UDP包發(fā)給第二臺聚集機,依次把生成的UDP包按順序發(fā)給各聚集機。當給最后一臺聚集機發(fā)送過過UDP包之后,再重新向第一臺聚集機發(fā)送。
[0033]每臺聚集機按照預定義統(tǒng)計規(guī)則或條件,如預定義的統(tǒng)計數(shù)據(jù)項組合、預定義的統(tǒng)計時間間隔等,對接收到的UDP報文進行統(tǒng)計分析。
[0034]聚集機接收UDP報文并且解析UDP報文。UDP報文中包含了用戶的HTTP訪問請求的信息:用戶訪問的目的域名(host)、用戶請求的通用資源標示符(uri)、用戶名(uid)、客戶端IP地址(cip)等。
[0035]然后,聚集機針對同一個目的域名(相同的host)、同一來源(相同的uid,相同的cip)的訪問請求數(shù)量作統(tǒng)計,進而可計算出此來源的訪問請求量。
[0036]如果在限定的時間段,如最近60秒或最近5分鐘,考察上述統(tǒng)計訪問請求量,那么可得出此來源的單位時間請求量,如通過訪問請求量除以該時間段的時長來獲得QPS值。QPS是指每秒查詢率,是對一個特定的查詢服務(wù)器在規(guī)定時間內(nèi)所處理流量多少的衡量標準,在因特網(wǎng)上,作為域名系統(tǒng)服務(wù)