NGINX防御CC攻擊教程


CC攻擊即http flood,以攻擊成本低(只需數台http代理服務器即可實現攻擊)、隱蔽性強(中小CC攻擊一般不會造成網絡瓶頸)、難防御(與正常訪問的請求很難區分開)、威力強大(造成和DDOS流量攻擊一樣的效果,網站長時間無法打開)等特點著稱。常規的http flood防御為JS彈回,二次請求驗證加入白名單 和 多層緩存(七層、四層共同緩存)實現防御體。 
 
 
CC攻擊,首先造成的后果往往是被攻擊服務器CPU爆滿、內存占用高、甚至磁盤IO高占用。通常服務器上有永遠處理不完的任務,所以,CC攻擊,也是以拒絕服務為目的的攻擊,屬於DDOS攻擊中的一種。 
 
 
那么CC攻擊應該如何防御呢? 
 
 
首先站長朋友需要冷靜下來,對手攻擊你的項目,目的就是要你自亂陣腳,冷靜下來,才好准備拔劍迎戰。 
 
 
分析量有多少: 

netstat -an | grep ':80 ' -c
 

這是判斷80端口的連接數,用這個數字與網站上第三方統計代碼相比對,如果差距懸殊,甚至服務器卡到統計不出來,那么就肯定是CC攻擊。 
如果資源占用太高甚至SSH命令執行都困難,先暫停一段時間的WEB服務(不要覺得失去什么,服務已經無法訪問,何必留着繼續耗資源?) 
 
 
1.新手必備:限制訪問速率 
使用http://tengine.taobao.org/document_cn/http_limit_req_cn.html中的CONF字段配置限制語句 #詳細后續編輯# 
 
 
2.擒賊擒王:找出攻擊共同特征 
按連接數排序 

netstat -nat|grep ":80"|awk '{print $5}' |awk -F: '{print $1}' | sort| uniq -c|sort -n
 

找出連接數最大的IP(假設是22.00.**.11),在日志中匹配 

cat /log/nginx/access.log | grep "22.00.**.11" | more
 

找出訪問日志中攻擊者所用工具的特征,然后嘗試在conf中封禁掉。 
 
 
 
3.報仇不留情:封禁 
 
 
假如攻擊者使用工具的UA包含“Bench”字段,那么可以在conf中屏蔽掉: 
 

location /{
    if ( $http_user_agent ~ "Bench" ) {
        return 444;
    }
}

  

 
 
 
 
 
附錄:常見防御CC攻擊算法 
 
 
日志分析 
將日志中訪問頻率過高的IP封禁 
將日志中不符合人的特征的IP封禁(同一URL訪問不合理次數等等) 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM