本發(fā)明涉及網(wǎng)站安全技術(shù),尤其涉及一種防御CC攻擊(Challenge Collapsar)的方法及其系統(tǒng)。
背景技術(shù):
CC攻擊(Challenge Collapsar)是DDoS(DDoS,Distributed Denial of Service,分布式拒絕服務(wù))的一種,也是一種常見的網(wǎng)站攻擊方法,這種攻擊見不到虛假IP,見不到特別大的異常流量,而且,這種技術(shù)實現(xiàn)門檻相對較低,只要利用合適的工具和一些IP代理,一個初、中級水平的電腦用戶就能夠?qū)崿F(xiàn)該種攻擊。因此,具有很大的威脅。
CC攻擊的原理是攻擊者控制某些主機不停地發(fā)送數(shù)據(jù)包給對方服務(wù)器造成服務(wù)器資源耗盡,一直到宕機崩潰。CC主要用來攻擊頁面,每個人都有這樣的體驗:當(dāng)一個網(wǎng)頁訪問的人數(shù)特別多的時候,打開網(wǎng)頁就慢了,CC就是模擬多個用戶(多少線程就是多少用戶)不停地進行訪問那些需要大量數(shù)據(jù)操作(就是需要大量CPU時間)的頁面,造成服務(wù)器資源的浪費,CPU長時間處于100%,永遠都有處理不完的連接直至造成網(wǎng)絡(luò)擁塞,正常的訪問被終止。
根據(jù)CC攻擊的特點,CC攻擊的方法可分為快CC攻擊與慢CC攻擊,快CC攻擊是單點或多點長時間頻繁向服務(wù)器發(fā)送HTTP請求;慢CC攻擊是單點或多點長時間占用多個HTTP請求過程。CC攻擊還可分為:直接攻擊、代理攻擊、僵尸網(wǎng)絡(luò)攻擊三種。直接攻擊主要針對有重要缺陷的Web應(yīng)用程序,一般來說是程序?qū)懙挠袉栴}的時候才會出現(xiàn)這種情況,比較少見。僵尸網(wǎng)絡(luò)攻擊有點類似于DDOS攻擊,從Web應(yīng)用程序?qū)用嫔弦呀?jīng)無法防御,所以代理攻擊是CC攻擊者一般會操作一批代理服務(wù)器,比方說100個代理,然后每個代理同時發(fā)出10個請求,這樣Web服務(wù)器同時收到1000個并發(fā)請求的,并且在發(fā)出請求后,立刻斷掉代理的連接,避免代理返回的數(shù)據(jù)將本身的帶寬堵死,而不能發(fā)送再次請求,這時Web服務(wù)器將響應(yīng)這些請求的進程進行隊列,數(shù)據(jù)庫服務(wù)器同樣如此,這樣一來,正常請求將會被排在后面被處理,造成正常請求頁面打開極其緩慢或者白屏,無法有效防護服務(wù)器的網(wǎng)絡(luò)安全。
技術(shù)實現(xiàn)要素:
為了克服上述現(xiàn)有技術(shù)的不足,本發(fā)明提供一種CC攻擊防御方法及其系統(tǒng),以準(zhǔn)確識別CC攻擊,實現(xiàn)對Web服務(wù)器的有效防護。CC攻擊防御系統(tǒng)主要包括攔截/放行模塊和防護模塊;其中,攔截/放行模塊包括網(wǎng)絡(luò)層攔截和應(yīng)用層攔截;防護模塊包括基本防護模塊、中級防護模塊和高級防護模塊,CC攻擊防御方法主要針對Web服務(wù)器,通過上述模塊步驟對Web目錄中的請求進行攔截過濾,可選不同級別的防護過程,最終實現(xiàn)對Web服務(wù)器的有效防護。
為了更清楚地對發(fā)明技術(shù)方案進行描述,對涉及到的變量符號、閾值符號進行定義和約定,如表1:
表1本發(fā)明涉及的變量符號、閾值符號及其含義描述
上述符號表中變量,可以由用戶在取值范圍內(nèi)自行設(shè)置。
本發(fā)明提供的技術(shù)方案是:
一種CC攻擊防御方法,針對發(fā)送到Web服務(wù)器的用戶請求,通過攔截過濾過程和不同級別的防護過程,實現(xiàn)對Web服務(wù)器的有效防護,包括如下步驟:
A.攔截過程:設(shè)置黑名單和白名單,對Web目錄中的請求進行攔截過濾,依次通過網(wǎng)絡(luò)層攔截和應(yīng)用層攔截;
黑名單和白名單的設(shè)置和更新:黑名單、白名單可以通過用戶手工添加IP進入黑名單或白名單,也支持系統(tǒng)自動添加IP進入黑名單、白名單。黑名單中的IP訪問Web頁面請求被丟棄,白名單中的IP訪問Web頁面請求不經(jīng)過CC防護模塊,直接放行,通過Web服務(wù)器處理。
攔截過程具體執(zhí)行如下操作:
A1.網(wǎng)絡(luò)層攔截:通過網(wǎng)絡(luò)層識別請求IP是否在黑名單中或白名單中進行攔截;
A11.網(wǎng)絡(luò)層識別請求IP是否在黑名單中,當(dāng)請求IP在黑名單中時,丟棄該請求,結(jié)束防御操作;
A12.網(wǎng)絡(luò)層識別請求IP是否在白名單中,當(dāng)請求IP在白名單中時,轉(zhuǎn)入應(yīng)用層攔截過程中步驟A22;
A13.當(dāng)網(wǎng)絡(luò)層識別請求IP既不在黑名單中也不在白名單中時,執(zhí)行應(yīng)用層攔截過程;
A2.應(yīng)用層攔截:通過應(yīng)用層識別請求IP是否在黑名單中或白名單中進行攔截;
A21.應(yīng)用層驗證請求IP是否在黑名單中:當(dāng)請求IP在黑名單中時,丟棄該請求,結(jié)束防御操作;
A22.應(yīng)用層驗證請求IP是否在白名單中:當(dāng)請求IP在白名單中時,將該請求交給Web服務(wù)器正常處理,結(jié)束防御操作;
A23.當(dāng)應(yīng)用層驗證請求IP既不在黑名單中也不在白名單中時,執(zhí)行CC防護過程;
B.CC防護過程,分為基本防護、中級防護和高級防護;
基本防護由用戶進行設(shè)置單IP的限定時間T、HTTP請求數(shù)量M以及并發(fā)請求數(shù)N,通過限制在一段時間內(nèi)每個IP的HTTP請求數(shù)量或者單IP的并發(fā)請求次數(shù)來實施防護,為全服務(wù)器端實現(xiàn);既能保證用戶正常訪問,又能識別和攔截快CC攻擊和慢CC攻擊;
中級防護在基礎(chǔ)防護單元的基礎(chǔ)上,增加基于用戶行為的識別方法,以每個IP首次(服務(wù)器無此IP記錄)訪問時,返回瀏覽器可解析的JS加密腳本;瀏覽器解析JS并解密后將使用相關(guān)解密信息再次請求服務(wù)器完成驗證;中級防護能夠極大增加黑客攻擊成本,同時通過有效期參數(shù)驗證大大增加每個IP通過驗證的難度,驗證期間的參數(shù)還能有效防止驗證過程中的CC攻擊,能最大限度的降低攻擊者發(fā)送到服務(wù)器的HTTP請求數(shù)量。
高級防護在基礎(chǔ)防護單元的基礎(chǔ)上,加入真實用戶識別方法,以每個IP首次(服務(wù)器無此IP記錄)訪問時,返回圖形驗證碼,用戶肉眼識別圖形驗證碼,并將識別出來的驗證碼發(fā)送到服務(wù)器完成驗證;高級防護使得黑客攻擊成本比中級防護更大。
基本防護、中級防護和高級防護分別執(zhí)行如下操作:
B1.CC防護基礎(chǔ)防護過程,通過IP請求次數(shù)和并行連接數(shù)量對用戶請求進行防護;具體包括如下步驟:
B11.設(shè)定IP請求次數(shù)閾值M,判斷T秒時間內(nèi)IP請求是否超過設(shè)定次數(shù)M;如果是,則將IP添加到攔截模塊的黑名單中,超過設(shè)定時間后該IP在黑名單中失效,該種請求被丟棄;否則,則繼續(xù)以下步驟;
B12.設(shè)定并行連接數(shù)量閾值N,判斷并行連接數(shù)量是否超過限制;如果是則將IP添加到攔截模塊的黑名單中,超過設(shè)定時間K后該IP在黑名單中失效,并拋棄該請求;否則,繼續(xù)以下步驟;
B13.將該請求交給Web服務(wù)器正常處理;
B2.CC防護中級防護過程,首先進行基礎(chǔ)防護,再通過依次識別用戶請求IP是否為通過驗證的IP、用戶請求IP是否是第一次請求、用戶請求是否是瀏覽器解析JS后的Code返回請求、用戶請求IP的不相關(guān)請求連接數(shù)F是否超過設(shè)定限制來進行防護;具體包括如下步驟:
B21.判斷用戶請求IP是否是通過驗證的IP;如果是,則進入正常Web請求流程,結(jié)束防護操作;否則,繼續(xù)以下步驟;
B22.判斷用戶請求IP是否是第一次請求;如果是,則返回加密的JS驗證代碼段到請求端,代碼段需要瀏覽器解析,解析加密的Code;否則,繼續(xù)以下步驟;
B23.判斷用戶請求是否是瀏覽器解析JS后的Code返回請求;如果是,則驗證Code是否正確,如果Code正確,則驗證Code返回時間是否超時,如果超時,則將該IP加入黑名單中;如果驗證碼未超時,則通過驗證,將該IP添加到通過驗證的IP結(jié)果集中,并將該請求交給Web服務(wù)器處理,結(jié)束防護操作;該結(jié)果集具有一定的時效性,可通過與該結(jié)果集中IP進行比較,判定IP是否是第一次發(fā)送請求,IP在結(jié)果集中的時效由用戶設(shè)定;
本發(fā)明中,通過驗證的IP放到了結(jié)果集中,而不是直接加入到白名單中,目的是限制IP的時效性,如果直接放到白名單該IP將不會再被驗證。所以,實際上,白名單主要是用戶手動輸入信任的IP,而一旦IP驗證不通過將被直接放入黑名單中。
如果Code不正確,則直接將該IP加入黑名單中;如果該請求不是瀏覽器解析JS后的Code返回請求,則繼續(xù)以下步驟;
B24.判斷該IP的不相關(guān)請求連接數(shù)F是否超過設(shè)定限制;如果是,則將該IP添加到攔截模塊的黑名單,并丟棄該請求,結(jié)束防護操作;否則繼續(xù)以下步驟;
B25.返回新的JS代碼,回到步驟B22。
B3.CC防護高級防護模塊,首先進行基礎(chǔ)防護,再通過依次識別用戶請求IP是否為通過驗證的IP、用戶請求IP是否是第一次請求、用戶請求是否是請求驗證碼請求、用戶請求是否是驗證驗證碼請求、不相關(guān)請求連接數(shù)是否超限,來進行防護;具體包括如下步驟:
B31.是否是通過驗證的IP?如果是,則將該請求交給Web服務(wù)器處理,正常執(zhí)行流程;否則進行以下步驟;
B32.IP是否是第一次請求?如果是,則返回驗證碼界面;否則進行以下步驟;
B33.是否是請求驗證碼請求?如果是則驗證是否超過驗證碼請求次數(shù)I?如果是,則將該IP加入攔截模塊中的黑名單;如果不是,返回驗證碼圖片到請求端;如果不是請求驗證碼請求,則繼續(xù)以下步驟;
B34.是否是驗證驗證碼請求?如果是,驗證驗證碼是否正確,如果驗證碼正確則驗證驗證碼是否超時J,如果未超時,則將IP標(biāo)記為驗證通過狀態(tài),還原該請求路徑,交給Web服務(wù)器正常處理該請求,如果驗證碼超時,則將該IP添加到攔截模塊的黑名單中。如果驗證碼不正確,則驗證驗證碼請求次數(shù)I是否超限,如果超限,則將該IP添加到攔截模塊中的黑名單中,如果請求次數(shù)未超限,則返回驗證碼錯誤信息,并禁止用戶重新刷新驗證碼。如果不是驗證驗證碼請求,則繼續(xù)以下步驟;
B35.不相關(guān)請求連接數(shù)H是否超限?如果超限,則將該IP添加到攔截模塊的黑名單中,并丟棄該請求;如果未超限,則回到步驟B32。
上述高級防護過程中,添加人工輸入驗證碼步驟,如果驗證碼在規(guī)定的有效時間內(nèi)輸入正確,才會將用戶的請求還原為原始請求URL,并交由Web服務(wù)器正常執(zhí)行用戶的請求,如果驗證碼在有效時間內(nèi),未輸入正確,則將該IP判定為CC攻擊,加入到黑名單中。
本發(fā)明還提供了一種CC攻擊防御系統(tǒng)(裝置),主要包括攔截/放行單元(模塊)和防護單元(模塊);其中,攔截/放行單元包括網(wǎng)絡(luò)層攔截和應(yīng)用層攔截;防護單元包括基本防護模塊、中級防護模塊和高級防護模塊;
攔截單元,主要用于對用戶請求的IP進行攔截或放行,本單元實現(xiàn)生成IP的黑名單和白名單,除了支持用戶手工添加IP進入黑、白名單,也支持系統(tǒng)自動添加黑、白名單。黑名單中的IP訪問Web頁面請求被丟棄,白名單中的IP訪問Web頁面請求不經(jīng)過CC防護模塊,直接放行,通過Web服務(wù)器處理;攔截模塊在網(wǎng)絡(luò)層與應(yīng)用層均實現(xiàn)了對用戶請求的IP進行攔截或放行;
基本防護單元,用于限制在T時間內(nèi)每個IP的HTTP請求數(shù)量M,或者單IP的并發(fā)請求次數(shù)N,全服務(wù)器端實現(xiàn),基本無法繞過。防護效果:在合理地設(shè)置相關(guān)參數(shù)后,既能保證用戶正常訪問,又能識別和攔截快/慢CC攻擊,該單元中單IP的一定時間、HTTP請求數(shù)量以及并發(fā)請求數(shù)由用戶進行設(shè)置。
中級防護單元,在基礎(chǔ)防護單元的基礎(chǔ)上,加入基于用戶行為的識別算法,即以每個IP首次(服務(wù)器無此IP記錄)訪問時,返回瀏覽器可解析的JS加密腳本;瀏覽器解析JS并解密后將使用相關(guān)解密信息再次請求服務(wù)器完成驗證。防護的效果在于在黑客沒有破解JS加密腳本的情況下,如果黑客有1000個攻擊IP,并想實施大規(guī)模CC攻擊的前提是必須在每臺IP的瀏覽器中對服務(wù)器進行一次手動訪問,該種方法極大增加黑客攻擊成本,與此同時,中級防護中還有一項驗證通過有效期參數(shù),又大大增加每個IP通過驗證的難度,驗證期間的參數(shù)還能有效防止驗證過程中的CC攻擊,如果花了代價破解了JS代碼段,還有CC基礎(chǔ)防護單元,這能最大限度的降低攻擊者發(fā)送到服務(wù)器的HTTP請求數(shù)量。
高級防護單元,在基礎(chǔ)防護單元的基礎(chǔ)之上,加入真實用戶識別算法,即以每個IP首次(服務(wù)器無此IP記錄)訪問時,返回圖形驗證碼,用戶肉眼識別圖形驗證碼,并將識別出來的驗證碼發(fā)送到服務(wù)器完成驗證。本單元防護的效果為在黑客無法自動識別驗證碼的情況下,如果黑客有1000個攻擊IP,并想實施大規(guī)模CC攻擊的前提是必須在每臺IP的瀏覽器中對服務(wù)器進行一次驗證碼識別(比中級防護的一次手動訪問更費時),這增加了比中級防護更大的攻擊成本,與此同時,高級防護中也有一項驗證通過有效期參數(shù),更加增大了每個IP都通過驗證的難度,如果花了代價實現(xiàn)了,還有CC基礎(chǔ)防護單元,這能最大限度地降低攻擊者能發(fā)送到服務(wù)器的HTTP請求數(shù)量。另外,在黑客能自動識別驗證碼的情況下,本身需要非常大的代價(因每個驗證碼有最大錯誤次數(shù)和有效時間,所以無法暴力破解,加上驗證碼圖形的干擾度非常高,基本無法使用程序自動識別),同中級防護一樣,如果能自動識別驗證碼并不是完全繞過了CC防護,基礎(chǔ)防護仍然能有效運行。
通過以上單元,實現(xiàn)CC攻擊防御的裝置,利用該裝置,用戶根據(jù)自身服務(wù)器需求設(shè)置高級防護、中級防護、基礎(chǔ)防護包括每一層防護中的參數(shù),實現(xiàn)對Web服務(wù)器的有效防護。
本發(fā)明的有益效果是:
本發(fā)明提供一種防御CC攻擊的方法及其系統(tǒng),針對發(fā)送到Web服務(wù)器的用戶請求,通過攔截過濾過程和不同級別的防護過程,實現(xiàn)對Web服務(wù)器的有效防護。攔截過程設(shè)置黑名單和白名單,通過網(wǎng)絡(luò)層攔截和應(yīng)用層攔截,對Web目錄中的請求進行攔截過濾;不同級別的防護包括基本防護、中級防護和/或高級防護模塊;中級防護包括基本防護和基于用戶行為的識別;高級防護單元包括基本防護和真實用戶識別。
利用本發(fā)明提供的技術(shù)方案,能夠有效抵御Web服務(wù)器CC攻擊,中級、高級防護模塊基于用戶行為實現(xiàn)的CC攻擊防護,基礎(chǔ)防護模塊是基于單個IP訪問頻率的CC攻擊防護。本方案提供的基礎(chǔ)防護模塊與中級防護模塊能夠有效抵御慢CC攻擊,高級防護模塊能夠有效抵御快CC攻擊。
附圖說明
圖1是本發(fā)明提供的CC攻擊防御方法的整體流程圖。
圖2是本發(fā)明提供的攔截模塊的流程框圖。
圖3是本發(fā)明提供的CC攻擊防護基礎(chǔ)防護模塊的流程框圖。
圖4是本發(fā)明提供的CC攻擊防護中級防護模塊的流程框圖。
圖5是本發(fā)明提供的CC攻擊高級防護模塊的流程框圖。
具體實施方式
下面結(jié)合附圖,通過實施例進一步描述本發(fā)明,但不以任何方式限制本發(fā)明的范圍。
本發(fā)明提供一種CC攻擊防御系統(tǒng),包括攔截模塊、基礎(chǔ)防護模塊、中級防護模塊、高級防護模塊;圖1所示是本發(fā)明提供的CC攻擊防御方法的整體流程,通過對用戶發(fā)送請求進行攔截和防護,從而達到抵御Web服務(wù)器CC攻擊的目的,本發(fā)明具體實施包括如下步驟:
A.攔截模塊,執(zhí)行如下操作(如圖2):
A1.用戶發(fā)送請求到Web服務(wù)器;
A2.經(jīng)過攔截模塊的網(wǎng)絡(luò)層實現(xiàn),攔截模塊的網(wǎng)絡(luò)層實現(xiàn)黑、白名單機制;
攔截模塊的網(wǎng)絡(luò)層設(shè)置有黑名單和白名單;初始名單均為空,可通過后續(xù)防護模塊主動往名單里面添加IP,用戶也可自行進行名單添加;黑名單和白名單沒有相同的IP;
A3.首先判斷請求的IP是否在黑名單中,如果是在攔截模塊的黑名單中,則丟棄該請求,如果不在,則繼續(xù)以下步驟;
A4.繼續(xù)判斷請求的IP是否在白名單中,如果是在白名單中,則進行步驟A6;否則,繼續(xù)以下步驟;
A5.攔截模塊在應(yīng)用層也實現(xiàn)驗了黑、白名單機制,首先,驗證請求IP是否在黑名單中,如果在,則丟棄該請求;否則,繼續(xù)以下步驟;
攔截模塊的應(yīng)用層同樣設(shè)有黑名單和白名單,和攔截模塊的網(wǎng)絡(luò)層的黑名單和白名單是同步更新的;
A6.請求IP是否在白名單中?如果在,則將該請求交給Web服務(wù)器進行正常流程,結(jié)束操作;否則,交給CC防護模塊進行處理。
攔截模塊在網(wǎng)絡(luò)層與應(yīng)用層的黑、白名單是一樣的,但是在網(wǎng)絡(luò)層驗證了請求的IP是在白名單中,還需要在應(yīng)用層驗證,因為應(yīng)用層并不能得到該請求IP是否在白名單中。攔截模塊起到過濾功能。除了程序能夠自動更新黑名單外,本方案也提供用戶人工添加黑、白名單。
CC防護模塊包括基礎(chǔ)防護模塊、中級防護模塊和高級防護模塊,可擇一進行防護。
B.CC防護的基礎(chǔ)防護模塊,具體包括如下步驟(如圖3):
B1.時間T內(nèi)(時間段可設(shè)置為10-9999秒)IP請求是否超過設(shè)定次數(shù)M(可設(shè)置為10-99999次)?如果沒有超過設(shè)定次數(shù),則繼續(xù)執(zhí)行步驟B2;如果超過,則將該IP添加到攔截模塊的黑名單中,當(dāng)超過設(shè)定時間K(可設(shè)置為1-1440分鐘)后,該IP在黑名單中失效,該種請求被丟棄;
其中時間T、IP請求次數(shù)M、IP在加入黑名單的失效時間K需要人工進行設(shè)置。
B2.判斷并行連接數(shù)量N是否超過限制?如果沒有超過限制,則繼續(xù)執(zhí)行步驟B3;如果超過限制則將IP添加到攔截模塊的黑名單中,超過設(shè)定時間K后該IP在黑名單中失效,并拋棄該請求;
其中并行連接數(shù)量限制N、IP在加入黑名單中的失效時間K需要人工進行設(shè)置。并行連接數(shù)量N限制可設(shè)置為0-9999次,0表示不限并行次數(shù);失效時間K可設(shè)置為1-1440分鐘。
B3.將該請求交給Web服務(wù)器正常處理,結(jié)束操作。
C.CC防護的中級防護模塊,具體包括如下步驟(如圖4):
C1.中級防護模塊中,首先需要經(jīng)過基礎(chǔ)防護模塊,具體步驟與B步驟相同,經(jīng)過B的基礎(chǔ)防護后進入到中級防護特有流程,具體如下步驟;
C2.請求的IP是否是通過驗證的IP?如果是,則進入正常Web處理請求流程;否則,繼續(xù)以下步驟;
可通過掃描通過驗證的IP結(jié)果集比對該請求IP,來識別該請求IP是否是通過驗證的IP;
C3.判斷請求IP是否是第一次請求?如果是第一次請求,則返回加密的JS驗證代碼段到請求端,代碼段需要瀏覽器解析(解析加密的Code);因此,加密的JS驗證代碼段能夠正常解析并返回,說明發(fā)送請求的是瀏覽器;否則,不是第一次請求,繼續(xù)以下步驟;
JS代碼是一段加密的Code代碼,一般如果請求是通過瀏覽器發(fā)出的,該驗證JS能夠正常被瀏覽器解析,并返回解密后的Code到防護模塊,如果使用代理、工具發(fā)送的請求,一般是無法解析該JS代碼段的,也就無法將正確的Code返回防護模塊,這樣就能有效避免CC攻擊,該過程由瀏覽器自動解析并返回結(jié)果,用戶感知不到該過程。
C4.是否是瀏覽器解析JS后的Code返回請求?如果是,則驗證Code是否正確,如果正確則驗證Code返回時間是否超時,如果超時,則該IP加入攔截模塊黑名單中;如果驗證未超時,則通過驗證,將該IP添加到結(jié)果集(可用來判斷IP是否已經(jīng)通過驗證、是否是第一次請求)中,并將該請求交給Web服務(wù)器正常處理,結(jié)束防御操作;如果Code不正確,則直接將該IP加入攔截模塊黑名單中;如果該請求不是瀏覽器解析IS后的Code返回請求,則繼續(xù)以下步驟;
驗證通過,會將該IP添加到結(jié)果集中,主要是在C2過程驗證請求的IP是否已經(jīng)通過,結(jié)果集在設(shè)定的時間內(nèi)有效,一個IP通過驗證后不會處于一直通過的狀態(tài),超出設(shè)置的有效時間G后,該IP自動無效,該時間的設(shè)定也為IP是否是第一次請求提供判斷依據(jù),超過設(shè)定時間后,該IP再發(fā)送請求,記為第一次請求。
C5.驗證期間R秒內(nèi),該IP的不相關(guān)請求連接數(shù)F是否超過限制?如果是,則將該IP添加到攔截模塊的黑名單中,并丟棄該請求;否則繼續(xù)以下步驟;
C6.返回新的JS代碼,繼續(xù)步驟C3。
D.CC防護的高級防護模塊,具體包括如下步驟(如圖5):
D1.高級防護模塊中,首先需要經(jīng)過基礎(chǔ)防護模塊,具體步驟包括B中一致,經(jīng)過B的防護后進入到高級防護特有流程,具體如下步驟;
D2.請求IP是否是通過驗證的IP?如果是,則將該請求交給Web服務(wù)器處理,正常執(zhí)行流程;否則進行以下步驟;
D3.IP是否是第一次請求?如果是,則返回驗證碼界面;驗證碼界面是一個Web頁面,需要第一次訪問網(wǎng)站的用戶輸入圖形驗證碼,只有輸入正確的驗證碼才能夠正常訪問;高級防護中此步驟需要用戶輸入驗證碼以有效避免CC攻擊;可有效防御有些利用代理實現(xiàn)的CC攻擊(由于代理不能人工輸入驗證碼,需要用戶輸入驗證碼的環(huán)節(jié)能夠有效避免此類CC攻擊);否則進行以下步驟;
D4.是否是請求驗證碼請求?如果是,則判斷是否超過請求驗證碼的請求次數(shù)I?如果是,則將該IP加入攔截模塊中的黑名單;如果不是,返回驗證碼圖片到請求端,用戶輸入正確的驗證碼才能驗證通過;如果不是請求驗證碼請求,則繼續(xù)以下步驟;
驗證碼請求次數(shù)限定I由人工進行設(shè)定。
D5.是否是驗證驗證碼請求?如果是,先驗證驗證碼是否正確,如果驗證碼正確,則驗證驗證碼是否超時(單個驗證碼J秒內(nèi)有效),如果未超時,則將IP標(biāo)記為驗證通過狀態(tài),還原該請求路徑,交給Web服務(wù)器正常處理該請求,IP通過驗證后在一定的時間內(nèi)有效(由用戶設(shè)定有效時間G),結(jié)束防御操作;如果驗證碼超時,則將該IP添加到攔截模塊的黑名單中。如果驗證碼不正確,則驗證驗證碼請求次數(shù)I是否超限,如果超限,則將該IP添加到攔截模塊中的黑名單中,如果請求次數(shù)未超限,則返回驗證碼錯誤信息,并禁止用戶重新刷新驗證碼。如果不是驗證驗證碼請求,則繼續(xù)以下步驟;
此步驟,在原有基礎(chǔ)請求基礎(chǔ)上,添加人工輸入驗證碼步驟,如果驗證碼在規(guī)定的有效時間內(nèi)輸入正確,才會將用戶的請求還原為原始請求URL,并交由Web服務(wù)器正常執(zhí)行用戶的請求,如果驗證碼在有效時間內(nèi),未輸入正確,則將該IP判定為CC攻擊,加入到黑名單中。本步驟中的驗證碼請求次數(shù)I、驗證碼有效時長J由人工進行設(shè)定。
D6.不相關(guān)請求連接數(shù)是否超限(不相關(guān)請求數(shù)H由用戶設(shè)定)?如果超限,則將該IP添加到攔截模塊的黑名單中,并丟棄該請求;如果未超限,則進行步驟D3。
不相關(guān)請求連接數(shù)閾值由人工進行設(shè)定。
至此,一種CC攻擊防御方案完畢。
下面通過實例對本發(fā)明做進一步說明。
以下實施例提供一個用C語言編寫的C/S模式的CC防護模塊,管理端是一臺以Windows為操作系統(tǒng)的終端電腦M,代理端是一臺以Linux為系統(tǒng)的服務(wù)器S,S上部署了Web服務(wù),S的IP是192.168.1.47,當(dāng)前用戶為Admin,登錄管理端M,并且連接到代理端S,用戶可以對網(wǎng)站CC攻擊防護進行設(shè)置。本實施例中CC防護模塊包括采用本發(fā)明提供技術(shù)方案實現(xiàn)的基礎(chǔ)防護、中極防護和高級防護模塊;具體實施時,可通過選擇不同級別的防護模塊實現(xiàn)對網(wǎng)站的CC攻擊防護:
實施例一:單個IP每x秒訪問若達到y(tǒng)次觸發(fā)CC攻擊防護的實施,具體如下:
1)Admin在M端設(shè)定CC防護級別為基礎(chǔ)防護,并設(shè)定基礎(chǔ)防護的參數(shù)為:單個IP每x秒,訪問若達到y(tǒng)次,或建立超過z并行連接,則鎖定該IP的時間為v分鐘;
2)黑客使用httpd自帶ab工具對服務(wù)器端發(fā)送攻擊命令:
./ab-n/-c m http://192.168.1.47/login.jsp,此命令的參數(shù)-n表示發(fā)送m次請求,-c表示簡歷m并行連接。
3)Admin設(shè)定基礎(chǔ)防護模塊參數(shù)值為:x=10,y=10,z=10,v=10;
4)黑客利用ab工具發(fā)送請求,命令為:./ab-n 20http://192.168.1.47/login.jsp,該命令是向IP地址為192.168.1.47的服務(wù)器發(fā)送20次(m=20)請求,此時的m>y(20>10),即10s內(nèi)IP請求超過設(shè)定的次數(shù)10,基礎(chǔ)防護模塊會將發(fā)送ab命令的IP添加到攔截模塊中的黑名單中,在10分鐘內(nèi)該IP在黑名單中有效,即該IP將被鎖定10分鐘,拋棄該IP的請求;
實施例二:單個IP建立超過z并行連接數(shù)觸發(fā)CC攻擊防護,具體實施如下:
1)Admin如果將基礎(chǔ)防護模塊參數(shù)設(shè)置為:x=10,y=100,z=10,v=10;此處盡量將y設(shè)置大參數(shù),防止由于訪問次數(shù)觸發(fā)CC攻擊防護,而跳過了并行連接數(shù)觸發(fā)的CC防護。
2)此時,黑客利用ab工具發(fā)送的命令為./ab-c 20http://192.168.1.47/login.jsp,該命令是向服務(wù)器IP為192.168.1.47的Web應(yīng)用建立20個并發(fā)的訪問,此時的m>z(20>10),單IP并行連接數(shù)超過個數(shù)10,基礎(chǔ)防護模塊會將發(fā)送ab命令的IP添加到攔截模塊中的黑名單中,在10分鐘內(nèi)該IP在黑名單中有效,即該IP將被鎖定10分鐘,拋棄該IP請求;
以上過程是由并發(fā)連接數(shù)超限觸發(fā)的CC攻擊防護實施說明。
1)Admin在M端設(shè)定CC防護級別為中級防護,并設(shè)定防護的參數(shù)為:單個IP每x秒,訪問若達到y(tǒng)次,或建立超過z并行連接,則鎖定該IP v分鐘,驗證期間k秒內(nèi)最多允許j個不相關(guān)請求連接,通過驗證后r小時內(nèi)有效。
2)此時Admin設(shè)置參數(shù)值為:v=1,K=10,j=10,r=1,x=9999,y=9999,z=9999;
3)黑客使用fiddler工具對其進行攻擊:http://192.168.1.47/,不相關(guān)請求數(shù)超限時(利用fiddler發(fā)送不相關(guān)請求大于j=10時),將鎖定IP 1分鐘;若利用工具在驗證時間k=10秒之內(nèi)訪問http://192.168.1.47/login.jsp超過j=10條記錄,該IP請求無法再次成功;如果該IP通過驗證后,在1小時內(nèi)能夠成功訪問http://192.168.1.47/login.jsp。
實施例三:實施高級防護模塊:
1)Admin在M端設(shè)定CC防護級別為高級防護,并設(shè)定防護參數(shù)為:單個IP每x秒,訪問若達到y(tǒng)次,或建立超過z并行連接,則鎖定該IP v分鐘,通過驗證前單IP最多允許訪問q次,驗證碼最多允許刷新次數(shù)f次,單個驗證碼g秒內(nèi)有效,單IP保存s分鐘,通過驗證后,單個IP通過驗證后r小時內(nèi)有效。
2)此時設(shè)定參數(shù)值為:x=10,y=9999,z=9999,v=10,q=10,f=3,g=60,s=10,r=1,當(dāng)前參數(shù)盡量是使高級防護特有流程有效,所以x、y、z、v值可以是最大值,如果在驗證通過前訪問次數(shù)超過10次,既驗證碼輸入過程中,有其它請求,則將該IP添加到攔截模塊的黑名單中,并丟棄該請求。此處設(shè)定用戶僅有3次刷新驗證碼的機會,單個驗證碼的有效時間是60秒,單個IP通過驗證后僅在1小時內(nèi)有效,超過1小時后,需要重新驗證。至此,CC攻擊防御的高級防護方法實施結(jié)束。
需要注意的是,公布實施例的目的在于幫助進一步理解本發(fā)明,但是本領(lǐng)域的技術(shù)人員可以理解:在不脫離本發(fā)明及所附權(quán)利要求的精神和范圍內(nèi),各種替換和修改都是可能的。因此,本發(fā)明不應(yīng)局限于實施例所公開的內(nèi)容,本發(fā)明要求保護的范圍以權(quán)利要求書界定的范圍為準(zhǔn)。