您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“怎么配置Nginx服務器防止Flood攻擊”,內容詳細,步驟清晰,細節處理妥當,希望這篇“怎么配置Nginx服務器防止Flood攻擊”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
測試
我會簡單的告訴你如何配置nginx的限制請求模塊并且它是如何保護你的網站,防止你被攻擊與ddos或是其他基于http的拒絕服務攻擊。
這個測試中,我將樣本頁在保存在blitz.io(現在是免費服務)命名為about.html,用于測試limit_req指令.
首先,我在blitz上使用下面的指令,用來發起1075個并發請求并且持續一分鐘,響應超時設置為2分鐘,區域為加州,同時設置了除掉狀態200以外的其他狀態全部為異常狀態,甚至是503都被認為是沒有成功.
-p 1-1075:60 --status 200 -t 2000 -r california http://kbeezie.com/about.html
還不算壞,對不對? 但如果這是一個php文檔. 很可能有用戶會造成php進程的502/504狀態,讓服務器一直崩潰或無響應. 尤其是你使用了沒有任何保護的vps或者其他廉價服務器,故障率會更高。(原文廣告,此處屏蔽)
當然你可以使用緩存或其他工具來提高服務器性能與響應能力, 就比如你使用wordpress你肯定要使用wordpress caching plugin. da for those type of people we can use the limit request module.
在nginx中我們創建一個區域http { },我叫他blitz設置每秒5次請求, 最大容納數據量為10mb.我使用$binary_remote_addr當作session變量 讓你自己比$remote_addr的正常訪客可以訪問大于10mb的空間.
復制代碼 代碼如下:
limit_req_zone $binary_remote_addr zone=blitz:10m rate=5r/s;
然周在服務器中定義上這些規則:
復制代碼 代碼如下:
location = /about.html {
limit_req zone=blitz nodelay;
}
然后重新載入nginx配置,看一下效果:
你會發現現在大于只有285人可以訪問到服務器,每秒請求數為4.75 ,沒有超過我們設置的5次每秒,檢查日志你會發現沒有訪問到的請求都是http 503,訪問到的都是http 200.
使用這樣的設置對于想限制地區訪問是很有幫助的,它也可以應用在所有的php請求上.
php 應用請求限制
如果你想限制所有的php應用限制,你可以這樣做:
復制代碼 代碼如下:
location ~ \.php {
limit_req zone=flood;
include php_params.conf;
fastcgi_pass unix:/tmp/php5-fpm.sock;
}
它可以幫你玩意些設置項像加速或減速,以應對突發或無延時需求. 配置項詳情,猛擊這里: httplimitreqmodule.
注:
你可能注意到上面的圖表測試了1075個用戶請求,這里有個誤導,因為所有的訪問請求都來自與位于加州的同一個ip(50.18.0.223).
我很難實現一個真實的高流量網絡或者ddos (分布式拒絕服務攻擊).這也就是為什么我們訪問成功的用戶的數量跟ip不是很大. 服務器負載也會影響測試用戶的訪問數或者地區. 使用免費版本你可以最多并發訪問到的用戶數是50個. 當然你可以花每天$49美刀讓1000個用戶訪問你的網站.
如果你有足夠的內存跟帶寬,用單一ip地址測試是很容易的. 用這個工具就可以實現: 高并發量, ab, openload等等. 只不過是在終端界面,沒有ui而已.
當然你要自己測試, 記住要使用status flag,因為blitz會在5秒左右后響應訪問請求.
更好的替換方案
這里不會深入講解更多細節, 如果你認真的想阻止攻擊你服務器的ddos或multi-service attack,還有其他很棒的軟件工具像 iptables (linux), pf (packet filter for bsd) , 或者你的服務器提供硬件的話,你可以使用你的硬件防火墻 . 上述的限制模塊只會阻止通過http請求過來的洪水攻擊,它不會阻止ping包洪水攻擊或者其他的漏洞,對于這些情況你可以關閉不需要的服務和不需要的端口,以防止別人的突破.
舉個例子,我的服務器對外網公開的端口只有http/https和ssh. 像mysql這些服務之綁定本地連接. 也可以將一些通用服務設置成不常用的端口上,這樣就不會被嗅探器(iptables/pf會對這種情況有幫助).
讀到這里,這篇“怎么配置Nginx服務器防止Flood攻擊”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。