一種http慢速攻擊的防范方法
【技術(shù)領(lǐng)域】
[0001 ]本發(fā)明涉及一種HTTP慢速攻擊的防范方法,屬于自動(dòng)控制技術(shù)領(lǐng)域。
【背景技術(shù)】
[0002]目前,DDoS(Distributed Denial of Service,分布式拒絕服務(wù))攻擊的主要目的是讓指定目標(biāo)無法提供正常服務(wù),是目前最強(qiáng)大、最難防御的攻擊之一。按照發(fā)起的方式,傳統(tǒng)的DDoS簡單分為三類。第一類以力取勝,海量數(shù)據(jù)包從互聯(lián)網(wǎng)的各個(gè)角落蜂擁而來,堵塞互聯(lián)網(wǎng)數(shù)據(jù)中心的(IDC, Internet Data Center)入口,讓各種強(qiáng)大的硬件防御系統(tǒng)、快速高效的應(yīng)急流程無用武之地。這種類型的攻擊典型代表是ICMP Flood和UDP Flood。第二類以巧取勝,這類攻擊主要是利用協(xié)議或者軟件的漏洞或者缺陷發(fā)起,靈動(dòng)而難以察覺,例如SYN Flood攻擊、DNS Query Flood攻擊,是當(dāng)前的主流攻擊方式。第三類是針對(duì)現(xiàn)有的目標(biāo)對(duì)象,利用大量僵尸主機(jī)采用了無賴方式的消耗訪問,慢速訪問消耗資源的對(duì)象,導(dǎo)致防護(hù)設(shè)備失效和服務(wù)器無法正常服務(wù),例如HTTP的慢速攻擊,這種方式的訪問本身和正常訪問沒有區(qū)別,只是由于僵尸主機(jī)較多,大量的這類慢速訪問能夠使服務(wù)器消耗資源處理這些訪問,從而影響正常用戶的訪問。而本發(fā)明要解決的問題是這種和正常訪問類似的HTTP慢速攻擊防護(hù)。例如= SlowHTTPTest是一個(gè)可配置的應(yīng)用層拒絕服務(wù)攻擊測(cè)試攻擊,它能工作在Linux,OSX和Cygwin環(huán)境以及Windows命令行接口,能幫助安全測(cè)試人員檢驗(yàn)服務(wù)器對(duì)慢速攻擊的處理能力。這個(gè)工具能模擬低帶寬耗費(fèi)下的DoS攻擊,比如慢速攻擊,慢速HTTPPOST,通過并發(fā)連接池進(jìn)行的慢速讀攻擊(基于TCP持久時(shí)間)。慢速攻擊基于HTTP協(xié)議,通過精心的設(shè)計(jì)和構(gòu)造,這種特殊的請(qǐng)求包會(huì)造成服務(wù)器延時(shí),而當(dāng)服務(wù)器負(fù)載能力消耗過大即會(huì)導(dǎo)致拒絕服務(wù)。
[0003]通常DDoS防護(hù)部署在專業(yè)的DDoS清洗設(shè)備上。DDoS防護(hù)分成兩部分,一個(gè)是DDoS檢測(cè)模塊,一個(gè)是DDoS防護(hù)模塊。管理中心用來管理清洗設(shè)備。
[0004]在一些場(chǎng)景里面,防火墻也集成DDoS功能,這樣DDoS檢測(cè)模塊和清洗模塊也直接集成到防火墻中,作為防火墻的DdoS防護(hù)特性。
[0005]無論是DDoS清洗設(shè)備還是帶DDoS防護(hù)的FW,通常的步驟如下:
[0006]1、設(shè)備從網(wǎng)口通過驅(qū)動(dòng)獲得網(wǎng)絡(luò)數(shù)據(jù)報(bào)文
[0007]2、數(shù)據(jù)報(bào)文送入DDoS檢測(cè)模塊進(jìn)行DDoS攻擊檢測(cè)
[0008]3、當(dāng)DDoS檢測(cè)模塊發(fā)現(xiàn)攻擊發(fā)生的時(shí)候,則會(huì)把發(fā)生攻擊的流量送入DDoS防護(hù)模塊進(jìn)行清洗。清洗完后的流量送入下一階段。如果DDoS檢測(cè)模塊沒有發(fā)現(xiàn)數(shù)據(jù)報(bào)文有攻擊,則會(huì)把流量直接送入下一階段。
[0009]4、數(shù)據(jù)報(bào)文按照目的IP查找路由表,如果沒有路由信息,則該數(shù)據(jù)包進(jìn)行丟棄。如果查到有匹配的路由條目,則送入下一階段
[0010]5、根據(jù)下一跳的地址,查看是否是該設(shè)備直接的網(wǎng)絡(luò)鏈路,如果是,則送到鏈路接口,再由驅(qū)動(dòng)轉(zhuǎn)發(fā)出去;如果不是直連的鏈路,則設(shè)定下一跳地址為目標(biāo)地址,然后再查找路由表,找到下一跳的直連接口,然后通過該接口進(jìn)行報(bào)文封裝并轉(zhuǎn)發(fā)。[0011 ]目前常見的HTTP的DDoS攻擊檢測(cè)方法,主要采用頻率統(tǒng)計(jì)的方式來識(shí)別惡意訪問源IP。通常是流量檢測(cè)模塊進(jìn)行攻擊檢測(cè)。該算法步驟如下:
[0012]1.數(shù)據(jù)報(bào)文送入檢測(cè)模塊,首先要進(jìn)行HTTP協(xié)議解析,也就是對(duì)HTTP數(shù)據(jù)報(bào)文中需要的字段進(jìn)行解析,識(shí)別五元組信息;
[0013]2.根據(jù)保護(hù)的主機(jī)IP地址,構(gòu)建目的IP的監(jiān)控表,主要的是監(jiān)控目的IP的HTTP流量的大小、HTTP連接數(shù);
[0014]3.判斷每個(gè)被保護(hù)的IP地址的HTTP的監(jiān)控參數(shù)的統(tǒng)計(jì)數(shù)值是否超過閾值,連續(xù)N個(gè)周期超過,則進(jìn)入精細(xì)化分析狀態(tài)。如果沒有超過,則恢復(fù)目的IP的監(jiān)控統(tǒng)計(jì)過程;
[0015]4.啟動(dòng)攻擊源的檢測(cè)是精細(xì)話分析狀態(tài),為每個(gè)超過閾值的目的IP,構(gòu)建源IP監(jiān)控表;
[0016]5.對(duì)每個(gè)目的IP監(jiān)控超過M周期,則回復(fù)初略統(tǒng)計(jì)的狀態(tài),如果沒有超過,則進(jìn)行源IP監(jiān)控;
[0017]6.源IP監(jiān)控表主要監(jiān)控訪問源IP的HTTP請(qǐng)求的頻率,如果發(fā)現(xiàn)頻率過快,說明該源IP很有可能是攻擊源IP,則輸出該源IP ;
[0018]7.針對(duì)攻擊源IP進(jìn)行防護(hù)。具體的防護(hù)方式有多種,有阻斷、限速、重定向、挑戰(zhàn)輸入。
[0019]綜上所述,現(xiàn)有技術(shù)的缺點(diǎn)如下:
[0020]1、基于頻率進(jìn)行防護(hù),對(duì)于一些本身訪問流量很大的IP地址,容易誤判;常規(guī)的基于IP地址維度進(jìn)行統(tǒng)計(jì),會(huì)對(duì)大流量的訪問產(chǎn)生效果,而實(shí)際上慢速攻擊的流量和頻率不大,因此該方式無法正常區(qū)分。
[0021]2、有些頁面本身并不容易造成拒絕服務(wù),也容易進(jìn)行監(jiān)控范圍并消耗檢測(cè)資源;網(wǎng)站大量靜態(tài)頁面和不耗資源的動(dòng)態(tài)頁面,黑客就算訪問,一般情況下也不會(huì)造成太大影響。而耗時(shí)的頁面很少的流量都會(huì)造成服務(wù)器大的負(fù)擔(dān)。采用這種方式不做區(qū)分的統(tǒng)計(jì),實(shí)際上消耗檢測(cè)資源。
【發(fā)明內(nèi)容】
[0022]本發(fā)明的目的在于提供一種能夠克服上述技術(shù)問題的HTTP慢速攻擊的防范方法,本發(fā)明要解決技術(shù)問題是:避免基于流量和訪問頻率統(tǒng)計(jì)不精準(zhǔn)造成的誤判以及減少無效的頁面訪問流量的檢測(cè);本發(fā)明采用HTTP(HyperText Transfer Protocol,超文本傳輸協(xié)議)響應(yīng)時(shí)間方式來進(jìn)行URL耗時(shí)識(shí)別;針對(duì)耗時(shí)URL(Uniform Resoure Locator,統(tǒng)一資源定位器)列表分析耗時(shí)URL列表的訪問次數(shù)并與常規(guī)正常模式比較來檢測(cè)異常訪問。
[0023]正常情況下用戶不會(huì)連續(xù)多次大量訪問耗時(shí)頁面,要么瀏覽網(wǎng)站的內(nèi)容每次訪問會(huì)有幾十秒的間隔時(shí)間,要么也會(huì)點(diǎn)擊一些非耗時(shí)的頁面。黑客如果要攻擊網(wǎng)站,也會(huì)攻擊耗時(shí)URL(Uniform Resoure Locator,統(tǒng)一資源定位器)的網(wǎng)站頁面。本方案就是基于用戶是否連續(xù)訪問大量耗時(shí)頁面來判斷用戶是否是惡意行為。
[0024]本發(fā)明的技術(shù)方案是首先依賴流量學(xué)習(xí),對(duì)正常訪問的被保護(hù)主機(jī)的流量進(jìn)行智能學(xué)習(xí),利用訪問的時(shí)間差值從而能夠識(shí)別哪些頁面是耗費(fèi)資源的頁面。記錄下來這些頁面的信息。然后利用這些消耗資源的頁面URL構(gòu)建URL哈希監(jiān)控表,具體統(tǒng)計(jì)每個(gè)周期內(nèi)各源IP對(duì)各耗資源頁面的訪問次數(shù)和其訪問該網(wǎng)站的總次數(shù),然后在周期時(shí)間截至?xí)r進(jìn)行匯總,計(jì)算每個(gè)源IP的耗時(shí)頁面訪問次數(shù)。如果連續(xù)幾個(gè)周期內(nèi),出現(xiàn)一些源IP訪問的耗資源的頁面次數(shù)超過設(shè)定的閾值,則說明這幾個(gè)源IP—直在從事低流量而獲取大計(jì)算量的服務(wù)器資源,則進(jìn)行限制其訪問。本發(fā)明能解決一些黑客利用僵尸網(wǎng)絡(luò)并下發(fā)攻擊URL列表來進(jìn)行以小博大的慢速隨機(jī)攻擊。
[0025]本發(fā)明能夠應(yīng)用在網(wǎng)關(guān)設(shè)備上,例如應(yīng)用在分布式拒絕服務(wù)(DDoS,DistributedDenial of Service)專業(yè)設(shè)備、NGFW、IPS、UTM、WAF設(shè)備上。
[0026]本發(fā)明包括以下步驟:
[0027](I)解碼步驟:對(duì)數(shù)據(jù)報(bào)文進(jìn)行解析,解析出HTTP的URL相關(guān)字段,然后送給后面的學(xué)習(xí)步驟和檢測(cè)步驟;
[0028](2)學(xué)習(xí)步驟:能夠?qū)υO(shè)置為保護(hù)對(duì)象的HTTP服務(wù)進(jìn)行流量學(xué)習(xí),學(xué)習(xí)其訪問的HTTP流量的特性,從而識(shí)別消耗資源的頁面,并學(xué)習(xí)其相關(guān)的參數(shù);
[0029](3)攻擊識(shí)別步驟:能夠根據(jù)學(xué)習(xí)來的信息,構(gòu)建URL監(jiān)控表,能夠?qū)υL問過這些URL的源IP的耗時(shí)頁面訪問次數(shù)和耗時(shí)頁面訪問次數(shù)占比進(jìn)行統(tǒng)計(jì)。連續(xù)周期超過閾值,則識(shí)別這些源IP為有惡意企圖的IP;
[0030](4)防護(hù)步驟:啟用對(duì)所述URL的防護(hù),例如啟用對(duì)所述URL限制連接、黑名單一定時(shí)間、進(jìn)行重定向并要求輸入挑戰(zhàn)數(shù)據(jù)驗(yàn)證是否真實(shí)用戶請(qǐng)求的防范措施;
[0031](5)檢測(cè)步驟;首先,針對(duì)耗時(shí)URL構(gòu)建哈希表。哈希表以哈希值即HASH(URL)的數(shù)值為KEY,采用盡可能少碰撞的散列算法NHASH;再構(gòu)建一個(gè)源IP訪問統(tǒng)計(jì)表。其次,新周期T計(jì)時(shí)啟動(dòng),當(dāng)有HTTP的URL請(qǐng)求來的時(shí)候,首先對(duì)URL進(jìn)行正規(guī)化,然后對(duì)其計(jì)算其哈希值,獲得該數(shù)據(jù)后,然后再用NHASH進(jìn)行散列,獲取其在耗時(shí)URL哈希表中的桶位置,然后再判斷其哈希值是否與該桶元素里的哈希值相等,如果不等,則說明沒有命中,則該請(qǐng)求不需要記錄。如果命中,則在該哈希表中創(chuàng)建一個(gè)節(jié)點(diǎn)(NODE),同時(shí)把該IP地址記錄在該節(jié)點(diǎn)(NODE)中,這個(gè)節(jié)點(diǎn)(NODE)還包含了本周期訪問該URL的次數(shù),這個(gè)次數(shù)每次有命中則加一。
[0032]再次,當(dāng)本周期T時(shí)間截至,遍歷該哈希表的所有節(jié)點(diǎn),把相同IP地址的訪問次數(shù)進(jìn)行累加,則能形成每個(gè)周期的該源IP訪問耗時(shí)URL的總次數(shù),判斷這個(gè)總次數(shù)是否遠(yuǎn)大于正常用戶訪問的閾值。如果超過,記錄下該源IP。正常用戶訪問的閾值由經(jīng)驗(yàn)數(shù)據(jù)來獲得,例如通常瀏覽網(wǎng)頁,一般耗時(shí)網(wǎng)站I分鐘不會(huì)打開超過5個(gè),因此閾值能放大到每分鐘不超過10個(gè)。
[0033]最后,連續(xù)統(tǒng)計(jì)M個(gè)周期,如果該源IP連續(xù)都是超過常規(guī)閾值,則說明該源IP是異常訪問,啟動(dòng)防護(hù)流程。
[0034]本發(fā)明的學(xué)習(xí)步驟(2)的具體過程如下:
[0035]用戶設(shè)置被保護(hù)的網(wǎng)站的IP地址,并啟動(dòng)本發(fā)明的學(xué)習(xí)步驟,則網(wǎng)關(guān)對(duì)經(jīng)過的流量進(jìn)行學(xué)習(xí)。對(duì)于保護(hù)的網(wǎng)站,每次網(wǎng)關(guān)發(fā)出查詢報(bào)文的時(shí)刻記錄為Til,網(wǎng)關(guān)收到其對(duì)應(yīng)的應(yīng)答報(bào)文Ti2,其中i為客戶機(jī)的代號(hào)。則每次網(wǎng)關(guān)的響應(yīng)時(shí)間為:Pi = (T