本文小編為大家詳細(xì)介紹“怎么配置Nginx服務(wù)器防止Flood攻擊”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“怎么配置Nginx服務(wù)器防止Flood攻擊”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿(mǎn)足客戶(hù)于互聯(lián)網(wǎng)時(shí)代的下陸網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
測(cè)試
我會(huì)簡(jiǎn)單的告訴你如何配置nginx的限制請(qǐng)求模塊并且它是如何保護(hù)你的網(wǎng)站,防止你被攻擊與ddos或是其他基于http的拒絕服務(wù)攻擊。
這個(gè)測(cè)試中,我將樣本頁(yè)在保存在blitz.io(現(xiàn)在是免費(fèi)服務(wù))命名為about.html,用于測(cè)試limit_req指令.
首先,我在blitz上使用下面的指令,用來(lái)發(fā)起1075個(gè)并發(fā)請(qǐng)求并且持續(xù)一分鐘,響應(yīng)超時(shí)設(shè)置為2分鐘,區(qū)域?yàn)榧又荩瑫r(shí)設(shè)置了除掉狀態(tài)200以外的其他狀態(tài)全部為異常狀態(tài),甚至是503都被認(rèn)為是沒(méi)有成功.
-p 1-1075:60 --status 200 -t 2000 -r california http://kbeezie.com/about.html
還不算壞,對(duì)不對(duì)? 但如果這是一個(gè)php文檔. 很可能有用戶(hù)會(huì)造成php進(jìn)程的502/504狀態(tài),讓服務(wù)器一直崩潰或無(wú)響應(yīng). 尤其是你使用了沒(méi)有任何保護(hù)的vps或者其他廉價(jià)服務(wù)器,故障率會(huì)更高。(原文廣告,此處屏蔽)
當(dāng)然你可以使用緩存或其他工具來(lái)提高服務(wù)器性能與響應(yīng)能力, 就比如你使用wordpress你肯定要使用wordpress caching plugin. da for those type of people we can use the limit request module.
在nginx中我們創(chuàng)建一個(gè)區(qū)域http { },我叫他blitz設(shè)置每秒5次請(qǐng)求, 最大容納數(shù)據(jù)量為10mb.我使用$binary_remote_addr當(dāng)作session變量 讓你自己比$remote_addr的正常訪客可以訪問(wèn)大于10mb的空間.
復(fù)制代碼 代碼如下:
limit_req_zone $binary_remote_addr zone=blitz:10m rate=5r/s;
然周在服務(wù)器中定義上這些規(guī)則:
復(fù)制代碼 代碼如下:
location = /about.html {
limit_req zone=blitz nodelay;
}
然后重新載入nginx配置,看一下效果:
你會(huì)發(fā)現(xiàn)現(xiàn)在大于只有285人可以訪問(wèn)到服務(wù)器,每秒請(qǐng)求數(shù)為4.75 ,沒(méi)有超過(guò)我們?cè)O(shè)置的5次每秒,檢查日志你會(huì)發(fā)現(xiàn)沒(méi)有訪問(wèn)到的請(qǐng)求都是http 503,訪問(wèn)到的都是http 200.
使用這樣的設(shè)置對(duì)于想限制地區(qū)訪問(wèn)是很有幫助的,它也可以應(yīng)用在所有的php請(qǐng)求上.
php 應(yīng)用請(qǐng)求限制
如果你想限制所有的php應(yīng)用限制,你可以這樣做:
復(fù)制代碼 代碼如下:
location ~ \.php {
limit_req zone=flood;
include php_params.conf;
fastcgi_pass unix:/tmp/php5-fpm.sock;
}
它可以幫你玩意些設(shè)置項(xiàng)像加速或減速,以應(yīng)對(duì)突發(fā)或無(wú)延時(shí)需求. 配置項(xiàng)詳情,猛擊這里: httplimitreqmodule.
注:
你可能注意到上面的圖表測(cè)試了1075個(gè)用戶(hù)請(qǐng)求,這里有個(gè)誤導(dǎo),因?yàn)樗械脑L問(wèn)請(qǐng)求都來(lái)自與位于加州的同一個(gè)ip(50.18.0.223).
我很難實(shí)現(xiàn)一個(gè)真實(shí)的高流量網(wǎng)絡(luò)或者ddos (分布式拒絕服務(wù)攻擊).這也就是為什么我們?cè)L問(wèn)成功的用戶(hù)的數(shù)量跟ip不是很大. 服務(wù)器負(fù)載也會(huì)影響測(cè)試用戶(hù)的訪問(wèn)數(shù)或者地區(qū). 使用免費(fèi)版本你可以最多并發(fā)訪問(wèn)到的用戶(hù)數(shù)是50個(gè). 當(dāng)然你可以花每天$49美刀讓1000個(gè)用戶(hù)訪問(wèn)你的網(wǎng)站.
如果你有足夠的內(nèi)存跟帶寬,用單一ip地址測(cè)試是很容易的. 用這個(gè)工具就可以實(shí)現(xiàn): 高并發(fā)量, ab, openload等等. 只不過(guò)是在終端界面,沒(méi)有ui而已.
當(dāng)然你要自己測(cè)試, 記住要使用status flag,因?yàn)閎litz會(huì)在5秒左右后響應(yīng)訪問(wèn)請(qǐng)求.
更好的替換方案
這里不會(huì)深入講解更多細(xì)節(jié), 如果你認(rèn)真的想阻止攻擊你服務(wù)器的ddos或multi-service attack,還有其他很棒的軟件工具像 iptables (linux), pf (packet filter for bsd) , 或者你的服務(wù)器提供硬件的話(huà),你可以使用你的硬件防火墻 . 上述的限制模塊只會(huì)阻止通過(guò)http請(qǐng)求過(guò)來(lái)的洪水攻擊,它不會(huì)阻止ping包洪水攻擊或者其他的漏洞,對(duì)于這些情況你可以關(guān)閉不需要的服務(wù)和不需要的端口,以防止別人的突破.
舉個(gè)例子,我的服務(wù)器對(duì)外網(wǎng)公開(kāi)的端口只有http/https和ssh. 像MySQL這些服務(wù)之綁定本地連接. 也可以將一些通用服務(wù)設(shè)置成不常用的端口上,這樣就不會(huì)被嗅探器(iptables/pf會(huì)對(duì)這種情況有幫助).
讀到這里,這篇“怎么配置Nginx服務(wù)器防止Flood攻擊”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前題目:怎么配置Nginx服務(wù)器防止Flood攻擊
瀏覽路徑:http://m.rwnh.cn/article30/ggdcso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開(kāi)發(fā)、網(wǎng)站收錄、Google、虛擬主機(jī)、搜索引擎優(yōu)化、外貿(mào)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)