CC攻擊防御方法
廣告:
1. 利用Session做訪問計(jì)數(shù)器:利用Session針對每個(gè)IP做頁面訪問計(jì)數(shù)器或文件下載計(jì)數(shù)器,防止用戶對某個(gè)頁面頻繁刷新導(dǎo)致數(shù)據(jù)庫頻繁讀取或頻繁下載某個(gè)文件而產(chǎn)生大額流量。(文件下載不要直接使用下載地址,才能在服務(wù)端代碼中做CC攻擊的過濾處理)
2. 判斷user_agent:
以Nginx為例,當(dāng)發(fā)現(xiàn)網(wǎng)站異常,CPU、內(nèi)存、數(shù)據(jù)庫等性能飆升時(shí),先看看網(wǎng)站的訪問日志:
cat /var/log/nginx/access.log | grep "verifying pingback from" > pingback_attack.log
一旦發(fā)現(xiàn)有大量此類日志,毫無疑問,你中招了。
看到這,您或許已經(jīng)在默默祈禱:這種事千萬別發(fā)生在我這才好。其實(shí)也不用過于憂慮,雖然這種變種的攻擊乍一看來勢洶洶,悄悄告訴你:它也有一個(gè)致命弱點(diǎn),那就是從肉雞發(fā)過來的攻擊請求有部分特征是固定的、并且不能被攻擊者偽造的。
這個(gè)東西就是User-Agent.它是一個(gè)特殊字符串頭,使得服務(wù)器能夠識別客戶使用的操作系統(tǒng)及版本、CPU 類型、瀏覽器及版本、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等。而這種pingbck反彈攻擊的致命弱點(diǎn)就是請求中的User-Agent必然包含pingback等關(guān)鍵詞。這是由WordPress本身決定的,惡意利用者也不能進(jìn)行偽造篡改。
if ($http_user_agent ~ (WordPress|pingback) {return 403;}
2. 把網(wǎng)站做成靜態(tài)頁面:大量事實(shí)證明,把網(wǎng)站盡可能做成靜態(tài)頁面,不僅能大大提高抗攻擊能力,而且還給駭客入侵帶來不少麻煩,至少到現(xiàn)在為止關(guān)于HTML的溢出還沒出現(xiàn),看看吧!新浪、搜狐、網(wǎng)易等門戶網(wǎng)站主要都是靜態(tài)頁面,若你非需要?jiǎng)討B(tài)腳本調(diào)用,那就把它弄到另外一臺單獨(dú)主機(jī)去,免的遭受攻擊時(shí)連累主服務(wù)器。
3. 增強(qiáng)操作系統(tǒng)的TCP/IP棧
Win2000和Win2003作為服務(wù)器操作系統(tǒng),本身就具備一定的抵抗DDOS攻擊的能力,只是默認(rèn)狀態(tài)下沒有開啟而已,若開啟的話可抵擋約10000個(gè)SYN攻擊包,若沒有開啟則僅能抵御數(shù)百個(gè),具體怎么開啟,自己去看微軟的文章吧!《強(qiáng)化 TCP/IP 堆棧安全》。也許有的人會(huì)問,那我用的是Linux和FreeBSD怎么辦?很簡單,按照這篇文章去做吧!《SYN Cookies》。
4. 在存在多站的服務(wù)器上,嚴(yán)格限制每一個(gè)站允許的IP連接數(shù)和CPU使用時(shí)間,這是一個(gè)很有效的方法。CC的防御要從代碼做起,其實(shí)一個(gè)好的頁面代碼都應(yīng)該注意這些東西,還有SQL注入,不光是一個(gè)入侵工具,更是一個(gè)DDOS缺口,大家都應(yīng)該在代碼中注意。舉個(gè)例子吧,某服務(wù)器,開動(dòng)了5000線的CC攻擊,沒有一點(diǎn)反應(yīng),因?yàn)樗械脑L問數(shù)據(jù)庫請求都必須一個(gè)隨機(jī)參數(shù)在Session里面,全是靜態(tài)頁面,沒有效果。突然發(fā)現(xiàn)它有一個(gè)請求會(huì)和外面的服務(wù)器聯(lián)系獲得,需要較長的時(shí)間,而且沒有什么認(rèn)證,開800線攻擊,服務(wù)器馬上滿負(fù)荷了。代碼層的防御需要從點(diǎn)點(diǎn)滴滴做起,一個(gè)腳本代碼的錯(cuò)誤,可能帶來的是整個(gè)站的影響,甚至是整個(gè)服務(wù)器的影響!
5. 服務(wù)器前端加CDN中轉(zhuǎn)(免費(fèi)的有百度云加速、360網(wǎng)站衛(wèi)士、加速樂、安全寶等),如果資金充裕的話,可以購買高防的盾機(jī),用于隱藏服務(wù)器真實(shí)IP,域名解析使用CDN的IP,所有解析的子域名都使用CDN的IP地址。此外,服務(wù)器上部署的其他域名也不能使用真實(shí)IP解析,全部都使用CDN來解析。
另外,防止服務(wù)器對外傳送信息泄漏IP地址,最常見的情況是,服務(wù)器不要使用發(fā)送郵件功能,因?yàn)猷]件頭會(huì)泄漏服務(wù)器的IP地址。如果非要發(fā)送郵件,可以通過第三方代理(例如sendcloud)發(fā)送,這樣對外顯示的IP是代理的IP地址。
總之,只要服務(wù)器的真實(shí)IP不泄露,10G以下小流量DDOS的預(yù)防花不了多少錢,免費(fèi)的CDN就可以應(yīng)付得了。如果攻擊流量超過20G,那么免費(fèi)的CDN可能就頂不住了,需要購買一個(gè)高防的盾機(jī)來應(yīng)付了,而服務(wù)器的真實(shí)IP同樣需要隱藏
廣告: