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