最近幾天公司官網(wǎng)和業(yè)務(wù)系統(tǒng)的注冊(cè)頁(yè)面頻繁遭遇DDOS攻擊,導(dǎo)致IIS應(yīng)用程序池CPU占用率100%,訪問網(wǎng)站出現(xiàn)503錯(cuò)誤。下面總結(jié)一下應(yīng)對(duì)措施。
一、啟用IIS的CPU監(jiān)視功能
對(duì)于低頻率的DDOS可以采取這種方法。w3wp.exe是應(yīng)用程序池的關(guān)聯(lián)進(jìn)程,當(dāng)WEB訪問量大時(shí),w3wp.exe會(huì)占用大量的系統(tǒng)資源。在DDOS攻擊下,很明顯的現(xiàn)象就是w3wp.exe占用CPU達(dá)到100%,網(wǎng)站拒絕訪問,這個(gè)時(shí)候遠(yuǎn)程登錄服務(wù)器都很困難。針對(duì)這種情況,做如下優(yōu)化:
1、為IIS中的每個(gè)網(wǎng)站設(shè)置單獨(dú)的應(yīng)用程序池。
2、為每個(gè)應(yīng)用程序池設(shè)置CPU監(jiān)視功能:當(dāng)w3wp.exe的CPU超過50%或更高時(shí),自動(dòng)殺死w3wp.exe進(jìn)程,監(jiān)視頻率為1分鐘。只要有訪問請(qǐng)求進(jìn)來,w3wp.exe便會(huì)重新啟動(dòng),不影響用戶訪問。
二、流量清洗
當(dāng)黑客發(fā)現(xiàn)低層次的DDOS已經(jīng)不起作用時(shí),便會(huì)加大攻擊力度。一開始我們官網(wǎng)的平均并發(fā)數(shù)只有幾千,后來加大到了平均1萬6千個(gè)并發(fā),最高7萬個(gè)并發(fā),這樣上面的CPU監(jiān)視功能就沒有效果了,因?yàn)閣3wp.exe重啟后,會(huì)在極短時(shí)間內(nèi)CPU重新達(dá)到100%。
當(dāng)時(shí)監(jiān)控到的并發(fā)連接數(shù):
CPU使用率和流量(帶寬上限10M):
幸運(yùn)的是官網(wǎng)域名剛好在阿里云上做好了備案,我們遷移到阿里云上后,利用云盾的DDOS防護(hù)功能便會(huì)清洗掉大部分異常流量,CPU立馬正常,官網(wǎng)滿血復(fù)活了。
這里貼一下云服務(wù)器的參數(shù):
配置: CPU2核、內(nèi)存4GB 鏡像: Windows Server 2008 R2 標(biāo)準(zhǔn)版 SP1 64位中文版 存儲(chǔ): 1塊普通云盤(100GB) 網(wǎng)絡(luò): 帶寬10Mbps(經(jīng)典網(wǎng)絡(luò))
參數(shù)配置不高,但是能抵御高強(qiáng)度的DDOS攻擊,這得益于阿里強(qiáng)大的技術(shù)實(shí)力,偷偷做個(gè)廣告,嘿嘿。
三、Nginx反向代理
但是黑客還經(jīng)常攻擊我們業(yè)務(wù)系統(tǒng)的注冊(cè)頁(yè)面,這次就沒有這么幸運(yùn)了,因?yàn)闃I(yè)務(wù)系統(tǒng)是在我們實(shí)體機(jī)房,這就要靠我們自己了。
所以我們采取了前端Nginx反向代理、后端雙IIS做負(fù)載均衡,利用Nginx強(qiáng)大的性能和HttpLimitReqModul模塊限制某時(shí)間段內(nèi)同一ip訪問次數(shù)。Nginx的優(yōu)化這里不提,下面只貼出相關(guān)配置:
首先在nginx.conf的http配置段里增加如下內(nèi)容:
map $http_x_forwarded_for $clientRealIp { "" $remote_addr; ~^(?P<firstAddr>[0-9/.]+),?.*$ $firstAddr; } # 訪問受限制后返回599 limit_req_status 599; # 定義一個(gè)名為allips的limit_req_zone用來存儲(chǔ)session,大小是100M內(nèi)存, # 以$clientRealIp 為key,限制平均每秒的請(qǐng)求為100個(gè), limit_req_zone $clientRealIp zone=allips:100m rate=100r/s;
新聞熱點(diǎn)
疑難解答
圖片精選