一,防御方式
1)JavaScript方式輸出入口
演示可以看下面這張圖:
第一次訪問的時候,不是直接返回網(wǎng)頁內(nèi)容,而且返回這段JS程序。
作用就是計算出入口變量的值,然后在訪問的網(wǎng)址后面加上類似于”?jdfwkey=hj67l9″的字串,組合成新的網(wǎng)址,然后跳轉(zhuǎn),當(dāng)防火墻驗證了jdfwkey的值(hj67l9)是正確的之后,就放行,一段時間內(nèi)就不會再出這個判斷程序的頁面。
2)301或者302轉(zhuǎn)向方式輸出入口
原理和1類似,區(qū)別在于把入口直接輸出在了HTTP頭部信息里,不重復(fù)敘述了。
2.5)還有一些把入口通過其他方式輸出的,比如cookie,類似于1和2,原理都是在第一次訪問的時候設(shè)置一道檻。這個就不單獨計算為一條了。
3)屏蔽代理
由于一部分的CC攻擊是利用代理服務(wù)器發(fā)起的,所以有些時候防CC會屏蔽掉帶x-forward-for這個值的IP,對匿名代理無效。
4)判斷速率
由于CC攻擊是持續(xù)的發(fā)起請求,所以發(fā)起攻擊的IP在單位時間內(nèi)的請求數(shù)量會明顯比正常多出很多,通過把請求頻率過高的IP屏蔽掉來防御。
5)驗證碼
這個基本是最后的無敵大招了,必須在用戶輸入驗證碼后才能訪問。
二,防御效果(突破方式)
1中的防護方式用的最早并且用的最多的是金盾防火墻。也正是由于用的人太多了,市面上已經(jīng)有突破金盾防火墻的軟件在出售,原理就是通過JS解析引擎計算出jdfwkey的值。
突破2的方式更簡單,和1差不多,只不過是直接在HTTP頭中,連JS引擎都省了。
3無法硬性突破,也就是說,如果屏蔽了帶x-forward-for的IP,那么它就不可能訪問到。
突破4的方式就是限制請求速度,但是這對于攻擊者是一個挑戰(zhàn),限制單個攻擊源的請求速度,并且保證攻擊效果,這就要求攻擊者擁有更多倍的攻擊源(肉雞)。
對于5,驗證碼識別是個大話題,目前階段幾乎不可能應(yīng)用到CC攻擊中,未來也不太可能。但是網(wǎng)絡(luò)上有很多的打碼平臺,如果和這些平臺對接的話,人工識別驗證碼,就OVER了(應(yīng)該不會有人去搞,太麻煩)。
對于所有的防護方式,如果是把網(wǎng)站域名解析到了別處,通過其他機器轉(zhuǎn)發(fā)請求來防御CC攻擊流量的(比如CDN),都可以通過添加HOST值的方式將流量發(fā)到真實機器上,使這些防護失效。找查網(wǎng)站真實IP的方法很多很復(fù)雜,不能保證100%都能找得到,本文不做敘述。
三,負作用
有些IP,我們會要求它一直可以訪問到網(wǎng)站內(nèi)容,比如蜘蛛,比如交易類網(wǎng)站的支付寶異步通知。
但是收集這些IP,幾乎是無法100%準(zhǔn)確的收集到的(可能有人會想到useragent,一句話:攻擊者可以偽造)。
下面要講的,就不再考慮上述的這個問題了。
對于1和2,對訪客幾乎不會造成影響,判斷過程是由瀏覽器自動完成的。
對于3,由于個別的網(wǎng)絡(luò)環(huán)境,在沒有使用代理的情況下,也會在瀏覽器訪問時強行加上x-forward-for的值,最終的導(dǎo)致的就是這個訪問無法訪問。其實在現(xiàn)在這個年代,除了CC攻擊中使用的代理IP外,剩的帶x-forward-for的IP,幾乎都是這樣的情況,也就是訪客本地網(wǎng)絡(luò)環(huán)境強加上的。早些年設(shè)置代理主要是因為那個時候網(wǎng)速差,用于提高速度?,F(xiàn)在搬梯子時設(shè)置的SSH代理一般不會加上x-forward-for。
對于4,可能會造成誤封。而且這個判斷攻擊的閥值也沒法精確的設(shè)置,只能憑經(jīng)驗以及分析網(wǎng)站的具體情況。
對于5,對用戶體驗會產(chǎn)生影響,并且長期下去,對網(wǎng)站形象也會產(chǎn)生影響。
總結(jié)下來就是,幾乎所有方式,都會產(chǎn)生或多或少的負作用,所以,任何一種防護方式,在沒事的時候不要開,只在被攻擊的時候開啟。
四,什么樣的網(wǎng)站容易被CC攻擊
在我處理過的CC攻擊中,主要消耗的是CPU和內(nèi)存,通常在帶寬被占滿前CPU和內(nèi)存已經(jīng)爆掉。
而對于靜態(tài)網(wǎng)站,也就是生成HTML頁面的網(wǎng)站,靜態(tài)請求占用的CPU和內(nèi)存是極低的,所以幾乎不太可能出現(xiàn)生成HTML后被CC攻擊掛掉的情況。
所以,被CC的主要都是動態(tài)網(wǎng)站,比如Discuz,Wordpress等。
五,都是什么人在攻擊
1)無聊惡作劇
2)打擊報復(fù)
3)敲詐勒索
4)同行惡意競爭
六,尾聲
今天遇到的一起攻擊事件,某網(wǎng)站被敲詐1萬塊(也就是前文中的截圖,網(wǎng)站有金盾防護,但是被肉雞穿透)。于是理了理思緒,寫下了這些經(jīng)驗之談,與大家分享。