本發(fā)明屬于信息安全領(lǐng)域。通過(guò)人機(jī)識(shí)別為網(wǎng)站抵御惡意掃描和惡意流量,提高網(wǎng)站的安全性。
背景技術(shù):
互聯(lián)網(wǎng)飛速發(fā)展,很多公司都以網(wǎng)站的方式為用戶提供服務(wù)。隨著提供的服務(wù)多樣化,網(wǎng)站的用戶也會(huì)多樣化。網(wǎng)站除了接受正常用戶的請(qǐng)求,還要接受很多的掃描器發(fā)送過(guò)來(lái)的請(qǐng)求。有調(diào)查發(fā)現(xiàn),掃描器在2016年發(fā)出的流量比正常用戶多,達(dá)51.8%。掃描器的類型也是很多。除了常見(jiàn)的網(wǎng)絡(luò)爬蟲(chóng),還有手機(jī)的內(nèi)容采集以及偽裝成正常用戶的ddos。
在掃描器中還有很大部分是惡意的掃描。這些掃描器會(huì)冒充的用戶來(lái)訪問(wèn)頁(yè)面內(nèi)容,他們一般是通過(guò)偽裝user-agent的方式企圖繞過(guò)網(wǎng)絡(luò)安全防護(hù)。以近期爆發(fā)的惡意程序mirai為例,它利用假的user-agent來(lái)冒充chrome和safari發(fā)出的流量。掃描器除了偽裝成正常用戶來(lái)進(jìn)行ddos的惡意活動(dòng)之外,還包括黑客的網(wǎng)站漏洞掃描工具,垃圾留言產(chǎn)生器,網(wǎng)絡(luò)爬蟲(chóng)等。
隨著目前攻擊手段的多樣化,攻擊工具多樣,根據(jù)imperva的調(diào)查發(fā)現(xiàn),目前有94.2%的網(wǎng)站每天都會(huì)收到掃描器的掃描,說(shuō)明目前掃描器對(duì)網(wǎng)站的掃描已經(jīng)變成了常態(tài),使用自動(dòng)程序來(lái)攻擊網(wǎng)站已經(jīng)非常普遍。攻擊者通過(guò)利用掃描器的方式來(lái)入侵網(wǎng)站。
鑒于掃描器對(duì)網(wǎng)站進(jìn)行掃描的情況十分普遍,但是目前常見(jiàn)的安全產(chǎn)品僅僅是對(duì)網(wǎng)站進(jìn)行安全性的保護(hù),防止網(wǎng)站遭受常規(guī)性的安全攻擊,如常見(jiàn)的sql注入,xss,惡意文件上傳以及ddos。對(duì)掃描器沒(méi)有進(jìn)行相關(guān)的識(shí)別和防護(hù)。本技術(shù)和裝置就是為了增強(qiáng)目前安全產(chǎn)品的功能。本裝置主要就是從所有的請(qǐng)求中識(shí)別出正常用戶發(fā)出的請(qǐng)求還是掃描器發(fā)出的請(qǐng)求。在識(shí)別掃描器之后,能夠阻止掃描器對(duì)網(wǎng)站進(jìn)行更進(jìn)一步的掃描,從而提升網(wǎng)站的安全性。
技術(shù)實(shí)現(xiàn)要素:
為了解決目前網(wǎng)站不斷地受到掃描器惡意掃描的問(wèn)題,本發(fā)明提供了一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別技術(shù)和裝置。此發(fā)明通過(guò)常見(jiàn)的掃描器指紋、訪問(wèn)頻率,訪問(wèn)時(shí)是否帶有cookie信息,客戶端是否能夠執(zhí)行javascript代碼,在訪問(wèn)url時(shí)是否有點(diǎn)擊事件的方法來(lái)綜合判斷目前訪問(wèn)網(wǎng)站的客戶端是正常用戶還是掃描器。通過(guò)部署本裝置,能夠有效地減少網(wǎng)站的惡意掃描的流量,保障網(wǎng)站的安全性。
本發(fā)明的方法采用的技術(shù)方案是:
一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別裝置,其特征在于,包括:
客戶端標(biāo)識(shí)裝置:用來(lái)對(duì)客戶端進(jìn)行標(biāo)識(shí);作為之后客戶端的認(rèn)證;如果判斷此標(biāo)識(shí)為掃描器,則說(shuō)明此標(biāo)識(shí)所對(duì)應(yīng)的客戶端為掃描器;
基于訪問(wèn)頻率判定裝置:通過(guò)客戶端的訪問(wèn)頻率來(lái)判斷客戶端是否為掃描器:
基于掃描器指紋識(shí)別裝置:通過(guò)檢測(cè)請(qǐng)求頭中是否含有常見(jiàn)的掃描器的信息來(lái)判斷客戶端是否為掃描器;若請(qǐng)求頭中含有掃描器的信息,則說(shuō)明客戶端一定為掃描器;
基于cookie的識(shí)別裝置:在初次訪問(wèn)的時(shí)候,在響應(yīng)頭中注入cookie;在隨后的訪問(wèn)中,檢測(cè)此cookie是否存在;如果在隨后的訪問(wèn)中或者是cookie的值與預(yù)設(shè)的cookie不匹配,那么說(shuō)明此客戶端為掃描器;考慮到cookie可能會(huì)被客戶端篡改,將cookie的值綁定客戶端的信息;如果篡改了cookie信息,則仍然會(huì)被認(rèn)為是掃描器;
基于javascript執(zhí)行的裝置:在響應(yīng)中注入一段javascript代碼;此javascript代碼作用就是在客戶端中加入一個(gè)cookie然后執(zhí)行302跳轉(zhuǎn);如果在隨后的響應(yīng)中沒(méi)有發(fā)現(xiàn)這段javascript生成的cookie,說(shuō)明此客戶端無(wú)法執(zhí)行javascript代碼,則說(shuō)明此客戶端為掃描器。
一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,其特征在于,包括:
步驟1:首先會(huì)通過(guò)客戶端的user-agent、host、ip信息作為客戶端的標(biāo)識(shí);
步驟2:判斷客戶端為否為掃描件,符合以下任意條件,均判斷為客戶端為掃描件:
判斷條件一:判斷步驟1中的標(biāo)識(shí)訪問(wèn)網(wǎng)站的頻率是否超過(guò)了預(yù)設(shè)的閾值,如果超過(guò)了閾值,則判定此客戶端為掃描器;
判斷條件二:分析發(fā)送都網(wǎng)站的http的請(qǐng)求頭信息;如果在http的請(qǐng)求頭中發(fā)現(xiàn)有掃描器的指紋信息,則判定為此客戶端為掃描器;
步驟3,在http的響應(yīng)頭中注入一個(gè)cookie值;如果在隨后的請(qǐng)求中,http的請(qǐng)求頭中不含有此cookie值,則判定此客戶端為掃描器,否則,轉(zhuǎn)入步驟4;
步驟4:在http的響應(yīng)代碼中,注入一段javascript代碼;在隨后的請(qǐng)求中,會(huì)判斷此javascript代碼是否被客戶端執(zhí)行;如果發(fā)現(xiàn)javascript代碼沒(méi)有被執(zhí)行;則判定此客戶端為掃描器;
步驟5:監(jiān)測(cè)在網(wǎng)站中發(fā)起一次新的請(qǐng)求時(shí),是否有點(diǎn)擊事件觸發(fā);如果在訪問(wèn)頻次超過(guò)預(yù)設(shè)的閾值之后,沒(méi)有觸發(fā)一次點(diǎn)擊事件,則判定此客戶端為掃描器;
步驟6:如果判斷客戶端為掃描器,則阻止掃描器的進(jìn)一步請(qǐng)求和訪問(wèn);如果判斷客戶端為正常用戶之后,本裝置對(duì)用戶的訪問(wèn)不進(jìn)行干預(yù)。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,客戶端的標(biāo)識(shí)的信息來(lái)源包括http請(qǐng)求頭中的user-agent、host、ip還包括在裝置中預(yù)設(shè)的特征值;將所有的信息進(jìn)行加密得到的加密值即為客戶端的標(biāo)識(shí)。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,步驟1中所述的閾值是在裝置中預(yù)先設(shè)置的;裝置在每次收到http的請(qǐng)求頭之后,就會(huì)統(tǒng)計(jì)訪問(wèn)次數(shù);如果檢測(cè)到訪問(wèn)次數(shù)超過(guò)了預(yù)設(shè)的閾值,則判定此標(biāo)識(shí)所對(duì)應(yīng)的客戶端為掃描器。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,判斷條件二中,掃描器的指紋信息包括了http請(qǐng)求頭中的user-agent信息,http請(qǐng)求頭中不符合標(biāo)準(zhǔn)的多余的請(qǐng)求頭(掃描器自己添加的請(qǐng)求頭),http請(qǐng)求參數(shù)中的參數(shù)值信息;不符合標(biāo)準(zhǔn)的多余的請(qǐng)求頭指掃描器自行添加的請(qǐng)求頭,通過(guò)檢測(cè)http請(qǐng)求頭是否存在以上所描述的指紋信息來(lái)判斷客戶端是否為掃描器;如果在客戶端中存在指紋信息,則判定為掃描器。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,步驟3中所述的在http的響應(yīng)頭中注入cookie的方式主要是通過(guò)在響應(yīng)頭中通過(guò)setc-cookie的方式來(lái)加入cookie值;此cookie值與瀏覽器中的user-agent,ip信息有關(guān);在加入cookie之后,對(duì)隨后發(fā)送過(guò)來(lái)的請(qǐng)求頭進(jìn)行分析;分析請(qǐng)求中是否存在set-cookie,set-cookie中是否含有設(shè)定的cookie值;如果不存在set-cookie或者是set-cookie中不含有對(duì)應(yīng)的cookie值,則判定此標(biāo)識(shí)所對(duì)應(yīng)的客戶端為掃描器。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,所述步驟4中,javascript的代碼注入;本裝置首先會(huì)檢測(cè)在請(qǐng)求頭中是否會(huì)存在js-cookie值;如果存在js-cookie,驗(yàn)證是否與裝置計(jì)算得一致,若一致,則判定為正常用戶,否則判定為掃描器;如果不存在js-cookie的值,則返回本裝置預(yù)設(shè)的一段javascript代碼,此javascript代碼的作用有2個(gè);其一,執(zhí)行javascript代碼在瀏覽器中加入js-cookie;其二,頁(yè)面進(jìn)行302跳轉(zhuǎn),跳轉(zhuǎn)到用戶原本要訪問(wèn)的網(wǎng)站。
在上述的一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別方法,所述步驟5中,點(diǎn)擊事件觸發(fā)指監(jiān)聽(tīng)網(wǎng)站上面所有的點(diǎn)擊href事件,為了能夠監(jiān)聽(tīng)所有的點(diǎn)擊事件,需要在網(wǎng)站的返回html代碼中加入href點(diǎn)擊事件的監(jiān)聽(tīng)代碼;在隨后的訪問(wèn)中,若訪問(wèn)網(wǎng)站的次數(shù)超過(guò)了預(yù)設(shè)的閾值,但是卻沒(méi)有點(diǎn)擊事件,則判定此標(biāo)識(shí)對(duì)應(yīng)的客戶端為掃描器。
本發(fā)明技術(shù)的主要優(yōu)點(diǎn)有:1、網(wǎng)站部署簡(jiǎn)單,不需要修改網(wǎng)站的任何代碼,也不需要對(duì)服務(wù)器的配置進(jìn)行修改,只需要將本裝置進(jìn)行編譯安裝,然后通過(guò)反向代理的方式進(jìn)行簡(jiǎn)單的配置即可。2、對(duì)系統(tǒng)開(kāi)銷少。由于在客戶端僅僅是增加了2個(gè)cookie,對(duì)服務(wù)端并沒(méi)有什么壓力。其次通過(guò)大量的實(shí)際測(cè)試,在響應(yīng)中注入javascript代碼對(duì)用戶的訪問(wèn)也幾乎沒(méi)有影響。最后所有的檢測(cè)都是在本裝置中來(lái)完成的,因而對(duì)服務(wù)端也沒(méi)有壓力。3、識(shí)別準(zhǔn)確。通過(guò)對(duì)目前大量的掃描器進(jìn)行測(cè)試,包括商用的掃描器或者是開(kāi)源的掃描器,部署了本裝置之后就能夠有效地防御大部分的掃描器的掃描,大大地加強(qiáng)了網(wǎng)站的安全性。定制方面。考慮到網(wǎng)站在訪問(wèn)量,頁(yè)面的不同,裝置中所有預(yù)設(shè)的值都在裝置中的配置文件進(jìn)行修改。在使用過(guò)程中,隨著網(wǎng)站的業(yè)務(wù)變化,也可以對(duì)參數(shù)進(jìn)行修改。修改完畢之后,只需要重啟裝置就可以了。跨平臺(tái)使用。本裝置可以在windows,linux,unix,macos上面進(jìn)行安裝。
附圖說(shuō)明
圖1是本發(fā)明實(shí)施例的裝置原理圖。
圖2是本發(fā)明實(shí)施例的流程圖。
圖3是js點(diǎn)擊事件監(jiān)聽(tīng)。
具體實(shí)施方式
為了便于本領(lǐng)域普通技術(shù)人員理解和實(shí)施本發(fā)明,下面結(jié)合附圖以及實(shí)施例對(duì)本發(fā)明做進(jìn)一步的詳細(xì)描述。應(yīng)當(dāng)理解,此處所描述的實(shí)施示例僅用于說(shuō)明和解釋本發(fā)明,本不用于限定本發(fā)明。
本發(fā)明技術(shù)方案的目的在于通過(guò),訪問(wèn)頻率判定方法,基于掃描器指紋識(shí)別方法、基于cookie識(shí)別方法,基于javascript執(zhí)行識(shí)別方法,基于點(diǎn)擊事件差異性識(shí)別方法的綜合判斷來(lái)區(qū)分正常用戶和掃描器。在識(shí)別掃描器之后,阻止掃描器進(jìn)一步地掃描網(wǎng)站。
本發(fā)明提供一種基于行為差異的web環(huán)境下的人機(jī)識(shí)別技術(shù),需構(gòu)建如下裝置:客戶端標(biāo)識(shí)裝置、基于訪問(wèn)頻率判定裝置、基于掃描器指紋識(shí)別裝置、基于cookie識(shí)別裝置、基于javascript執(zhí)行識(shí)別裝置、基于點(diǎn)擊事件差異性識(shí)別裝置,如圖1所示。
基于掃描器指紋識(shí)別裝置,通過(guò)檢測(cè)請(qǐng)求頭中是否含有常見(jiàn)的掃描器的信息來(lái)判斷客戶端是否為掃描器。若請(qǐng)求頭中含有掃描器的信息,則說(shuō)明客戶端一定為掃描器。
基于cookie的識(shí)別裝置,目前很多的掃描器都無(wú)法攜帶請(qǐng)求頭的上下文信息,比如cookie。本方法是通過(guò)在初次訪問(wèn)的時(shí)候,在響應(yīng)頭中注入cookie。在隨后的訪問(wèn)中,檢測(cè)此cookie是否存在。如果在隨后的訪問(wèn)中或者是cookie的值與預(yù)設(shè)的cookie不匹配,那么說(shuō)明此客戶端為掃描器??紤]到cookie可能會(huì)被客戶端篡改,本裝置會(huì)將cookie的值是綁定了客戶端的信息。如果篡改了cookie信息,則仍然會(huì)被認(rèn)為是掃描器。
基于javascript執(zhí)行的裝置。目前大部分的掃描器都無(wú)法執(zhí)行javascript代碼,通過(guò)對(duì)客戶端是否能夠執(zhí)行javascript就能夠有效地識(shí)別掃描器。本裝置會(huì)在響應(yīng)中注入一段javascript代碼。此javascript代碼作用就是在客戶端中加入一個(gè)cookie然后執(zhí)行302跳轉(zhuǎn)。如果在隨后的響應(yīng)中沒(méi)有發(fā)現(xiàn)這段javascript生成的cookie,說(shuō)明此客戶端無(wú)法執(zhí)行javascript代碼,則說(shuō)明此客戶端為掃描器。
基于點(diǎn)擊事件差異性的識(shí)別裝置。考慮到目前大部分的掃描器都是爬網(wǎng)頁(yè),從網(wǎng)頁(yè)中提取鏈接,然后訪問(wèn)鏈接,得到網(wǎng)頁(yè),周而復(fù)始。正常用戶的訪問(wèn)一般都是通過(guò)滑動(dòng)鼠標(biāo),點(diǎn)擊頁(yè)面上的鏈接來(lái)進(jìn)行訪問(wèn)的。這樣在正常用戶點(diǎn)擊一個(gè)網(wǎng)址訪問(wèn)訪問(wèn)的時(shí)候,就必然會(huì)有鼠標(biāo)相關(guān)的事件,包括鼠標(biāo)的移動(dòng)、鼠標(biāo)的點(diǎn)擊、鼠標(biāo)在頁(yè)面上的位置。通過(guò)在頁(yè)面中注入一段javascript代碼來(lái)監(jiān)測(cè)頁(yè)面中的url,判斷在進(jìn)行訪問(wèn)的時(shí)候是否存在鼠標(biāo)事件。如果客戶端在大量訪問(wèn)的時(shí)候,沒(méi)有一次鼠標(biāo)相關(guān)的事件,那么說(shuō)明此客戶端為掃描器。
下面結(jié)合實(shí)施例對(duì)本發(fā)明做進(jìn)一步闡述。
本發(fā)明跨平臺(tái),在windows環(huán)境、linux環(huán)境、unix環(huán)境、macos環(huán)境下都可以使用。在本示例中以u(píng)buntu為例來(lái)說(shuō)明本裝置的安裝以及配置。
首先,在ubuntu下編譯openresty源碼來(lái)進(jìn)行安裝。安裝之后,將本裝置防止在/usr/local目錄下。將nginx.conf的中的根目錄替換為目前網(wǎng)站的根目錄即可。這樣就完成了本裝置的安裝。
根據(jù)網(wǎng)站的實(shí)際情況對(duì)網(wǎng)站進(jìn)行配置,配置文件是config.lua。配置的選項(xiàng)包括掃描器訪問(wèn)的閾值設(shè)定、cookie的相關(guān)字段的設(shè)置、需要開(kāi)啟的掃描器的識(shí)別方法的設(shè)定。設(shè)定完成之后,重啟裝置即可。在完成所有的配置之后,裝置就會(huì)對(duì)發(fā)送到網(wǎng)站的流量進(jìn)行分析,識(shí)別流量中的掃描器。
裝置在收到發(fā)送過(guò)來(lái)的http的請(qǐng)求之后,就會(huì)提取請(qǐng)求頭中的相關(guān)信息,判斷這些信息是否包含有常見(jiàn)的掃描器的指紋信息。如果檢測(cè)到這些信息中包含有掃描器的指紋信息,說(shuō)明這客戶端就是掃描器。
裝置在通過(guò)請(qǐng)求頭信息無(wú)法識(shí)別出掃描器之后,就會(huì)進(jìn)一步地進(jìn)行判斷。裝置就會(huì)統(tǒng)計(jì)此標(biāo)識(shí)在一段時(shí)間內(nèi)的訪問(wèn)量。如果訪問(wèn)量超過(guò)了預(yù)設(shè)的訪問(wèn)量,就認(rèn)為是掃描器。否則就會(huì)進(jìn)入到下一步的判斷。
裝置會(huì)在服務(wù)器的響應(yīng)頭中加入一個(gè)cookie值,此cookie值會(huì)與客戶端的信息相關(guān)聯(lián)。如果在接下來(lái)的請(qǐng)求中,客戶端沒(méi)有攜帶此cookie值,則認(rèn)為此客戶端為掃描器。或者此cookie值與客戶端的信息不符合,也同樣認(rèn)為是掃描器。
裝置還在在響應(yīng)頭中檢測(cè)是否存在一個(gè)js-cookie的值。此值是由本裝置生成的javascript代碼生成。如果檢測(cè)到不存在js-cookie值,本裝置就會(huì)生成一段javascript代碼。此javascript代碼的作用就兩個(gè)。1.執(zhí)行javascript代碼,在客戶端生成一個(gè)js-cookie;2.在生成js-cookie之后,進(jìn)行302跳轉(zhuǎn),跳轉(zhuǎn)到原來(lái)的頁(yè)面。生成的js-cookie與客戶端的信息有關(guān)。在隨后的請(qǐng)求中,如果沒(méi)有檢測(cè)到j(luò)s-cookie的值,則一直會(huì)重復(fù)上述的步驟,最后就會(huì)因?yàn)樵L問(wèn)過(guò)多被認(rèn)為是掃描器。如果存在js-cookie的值,但是js-cookie的值與預(yù)設(shè)的js-cookie的值不匹配,則認(rèn)為目前正在訪問(wèn)網(wǎng)站的是一個(gè)掃描器。
除了上述的檢測(cè)方法外,還可以通過(guò)客戶端在訪問(wèn)新頁(yè)面時(shí)的鼠標(biāo)動(dòng)作來(lái)進(jìn)行判斷。正常的用戶在訪問(wèn)新的網(wǎng)頁(yè)的時(shí)候(不考慮直接在地址欄輸入,或者是打開(kāi)標(biāo)簽的方式),一般都會(huì)通過(guò)鼠標(biāo)來(lái)點(diǎn)擊鏈接。所以正常的用戶點(diǎn)擊必然會(huì)伴隨有鼠標(biāo)的事件。但是掃描器則是直接通過(guò)網(wǎng)址來(lái)進(jìn)行訪問(wèn)。如果發(fā)現(xiàn)在大量的訪問(wèn)中沒(méi)有一次鼠標(biāo)點(diǎn)擊事件,說(shuō)明此客戶端就是掃描器。
本發(fā)明技術(shù)的主要就是通過(guò)分析在進(jìn)行網(wǎng)頁(yè)訪問(wèn)時(shí)正常用戶與掃描器在網(wǎng)頁(yè)的差異性,通過(guò)訪問(wèn)頻率判定方法,基于掃描器指紋識(shí)別方法、基于cookie識(shí)別方法,基于javascript執(zhí)行識(shí)別方法,基于點(diǎn)擊事件差異性識(shí)別方法的綜合判斷來(lái)區(qū)分正常用戶和掃描器。經(jīng)過(guò)實(shí)踐檢驗(yàn),本裝置能夠有效地識(shí)別出掃描器,能夠保護(hù)網(wǎng)站免受掃描器的掃描從而提升網(wǎng)站的安全性。
應(yīng)當(dāng)理解的是,本說(shuō)明書(shū)未詳細(xì)闡述的部分均屬于現(xiàn)有技術(shù)。應(yīng)當(dāng)理解的是,上述針對(duì)較佳實(shí)施例的描述較為詳細(xì),并不能因此而認(rèn)為是對(duì)本發(fā)明專利保護(hù)范圍的限制,本領(lǐng)域的普通技術(shù)人員在本發(fā)明的啟示下,在不脫離本發(fā)明權(quán)利要求所保護(hù)的范圍情況下,還可以做出替換或變形,均落入本發(fā)明的保護(hù)范圍之內(nèi),本發(fā)明的請(qǐng)求保護(hù)范圍應(yīng)以所附權(quán)利要求為準(zhǔn)。