欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IIS防御小規(guī)模DDOS攻擊實(shí)例(反向代理)

 更新時(shí)間:2015年10月15日 17:37:43   投稿:mdxy-dxy  
最近幾天公司官網(wǎng)和業(yè)務(wù)系統(tǒng)的注冊(cè)頁(yè)面頻繁遭遇DDOS攻擊,導(dǎo)致IIS應(yīng)用程序池CPU占用率100%,訪問(wèn)網(wǎng)站出現(xiàn)503錯(cuò)誤。下面總結(jié)一下應(yīng)對(duì)措施

    最近幾天公司官網(wǎng)和業(yè)務(wù)系統(tǒng)的注冊(cè)頁(yè)面頻繁遭遇DDOS攻擊,導(dǎo)致IIS應(yīng)用程序池CPU占用率100%,訪問(wèn)網(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訪問(wèn)量大時(shí),w3wp.exe會(huì)占用大量的系統(tǒng)資源。在DDOS攻擊下,很明顯的現(xiàn)象就是w3wp.exe占用CPU達(dá)到100%,網(wǎng)站拒絕訪問(wèn),這個(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超過(guò)50%或更高時(shí),自動(dòng)殺死w3wp.exe進(jìn)程,監(jiān)視頻率為1分鐘。只要有訪問(wèn)請(qǐng)求進(jìn)來(lái),w3wp.exe便會(huì)重新啟動(dòng),不影響用戶訪問(wèn)。

    wKiom1W7fHChy4F0AAEABkiOB5U152.jpg

二、流量清洗

    當(dāng)黑客發(fā)現(xiàn)低層次的DDOS已經(jīng)不起作用時(shí),便會(huì)加大攻擊力度。一開(kāi)始我們官網(wǎng)的平均并發(fā)數(shù)只有幾千,后來(lái)加大到了平均1萬(wàn)6千個(gè)并發(fā),最高7萬(wàn)個(gè)并發(fā),這樣上面的CPU監(jiān)視功能就沒(méi)有效果了,因?yàn)閣3wp.exe重啟后,會(huì)在極短時(shí)間內(nèi)CPU重新達(dá)到100%。

    當(dāng)時(shí)監(jiān)控到的并發(fā)連接數(shù):

wKioL1W7hfrgZNSwAABAcrtJhKA428.jpg

    CPU使用率和流量(帶寬上限10M):

wKiom1W7lmmw_BfQAAE48-oKKhU940.jpg

    幸運(yùn)的是官網(wǎng)域名剛好在阿里云上做好了備案,我們遷移到阿里云上后,利用云盾的DDOS防護(hù)功能便會(huì)清洗掉大部分異常流量,CPU立馬正常,官網(wǎng)滿血復(fù)活了。wKiom1W7gxHTfRXDAAIOAxyzP9A303.jpg

    這里貼一下云服務(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è)面,這次就沒(méi)有這么幸運(yùn)了,因?yàn)闃I(yè)務(wù)系統(tǒng)是在我們實(shí)體機(jī)房,這就要靠我們自己了。

    所以我們采取了前端Nginx反向代理、后端雙IIS做負(fù)載均衡,利用Nginx強(qiáng)大的性能和HttpLimitReqModul模塊限制某時(shí)間段內(nèi)同一ip訪問(wèn)次數(shù)。Nginx的優(yōu)化這里不提,下面只貼出相關(guān)配置:

    首先在nginx.conf的http配置段里增加如下內(nèi)容:

map $http_x_forwarded_for $clientRealIp { 
  "" $remote_addr; 
  ~^(?P<firstAddr>[0-9\.]+),?.*$ $firstAddr; 
  } 
  # 訪問(wèn)受限制后返回599 
  limit_req_status 599; 
  # 定義一個(gè)名為allips的limit_req_zone用來(lái)存儲(chǔ)session,大小是100M內(nèi)存, 
  # 以$clientRealIp 為key,限制平均每秒的請(qǐng)求為100個(gè), 
  limit_req_zone $clientRealIp zone=allips:100m rate=100r/s; 

    這里限制了同一IP每秒的請(qǐng)求數(shù)不超過(guò)100個(gè),否則多余的請(qǐng)求會(huì)直接返回599錯(cuò)誤。限制頻率要根據(jù)實(shí)際情況進(jìn)行配置,配置過(guò)低會(huì)影響正常的訪問(wèn),出現(xiàn)頁(yè)面顯示不全等問(wèn)題。

    然后編輯/etc/nginx/conf.d/upstream.conf:

server { 
 listen    1334; 
 server_name _; 
 
 # 添加如下一行 
 limit_req zone=allips burst=5 nodelay; 
 
 location / { 
  # 反向代理 
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  proxy_pass http://wskh_IIS; 
 } 
  
 # 開(kāi)啟stub_status模塊監(jiān)控 
 location /nginx_status{ 
  stub_status on; 
  access_log off; 
  allow 127.0.0.1; 
  # 允許內(nèi)網(wǎng)某IP查看nginx status 
  allow 192.168.1.100; 
  deny all; 
 } 
} 
 
# 后端web服務(wù)器 
upstream wskh_IIS { 
 server 192.168.1.39:1334; 
 server 192.168.1.40:1334; 
 ip_hash; 
}

    好了,簡(jiǎn)單配置完成。

    下面貼一個(gè)統(tǒng)計(jì)Nginx訪問(wèn)日志access.log里IP請(qǐng)求頻率的小腳本:

#!/bin/bash 
# 
# Filename:  count_req.sh 
# Revision:  1.0 
# Author:   Qicheng 
# Website:   http://qicheng0211.blog.51cto.com 
# Description: 統(tǒng)計(jì)Nginx日志里IP訪問(wèn)頻率 
 
NGINXLOG="./access.log"
start_time=$(head -n1 "$NGINXLOG" | grep -o " \[.*\] ") 
stop_time=$(tail -n1 "$NGINXLOG" | grep -o " \[.*\] ") 
echo -e "start:\t\e[92m$start_time\033[0m"
echo -e "stop:\t\e[92m$stop_time\033[0m"
echo '所有的請(qǐng)求TOP50-->>'
# 所有的請(qǐng)求 
cat "$NGINXLOG" | awk '{++S[$1]} END {for(a in S) print S[a],"\t", a}' | sort -rn -k1 | head -n 50 
echo '--------------------------------------------------'
echo '成功的請(qǐng)求TOP50-->>'
# 成功的請(qǐng)求 
grep ' 200 ' "$NGINXLOG" | awk '{++S[$1]} END {for(a in S) print S[a],"\t", a}' | sort -rn -k1 | head -n 50 

    把腳本放到和access.log同一目錄下執(zhí)行即可。部分輸出如下:

    wKioL1W-4HfBKXxLAALlg5so0eo148.jpg

    過(guò)濾出這些攻擊源IP后,加到iptables里:

iptables -I INPUT -s {ip} -j DROP;

本文出自 “啟程的Linux博客” 博客,謝絕轉(zhuǎn)載!

相關(guān)文章

最新評(píng)論