防御DDOS是一個系統工程,攻擊花樣多,防御的成本高瓶頸多,防御起來即被動又無奈,下面這篇文章主要給大家介紹了關于如何利用nginx處理DDOS進行系統優化的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
前言
眾所周知DDoS很常見,甚至被稱為黑客圈子的準入技能;DDoS又很兇猛,搞起事來幾乎壓垮一方網絡。
DDOS的特點是分布式,針對帶寬和服務攻擊,也就 是四層流量攻擊和七層應用攻擊,相應的防御瓶頸四層在帶寬,七層的多在架構的吞吐量。對于七層的應用攻擊,我們還是可以做一些配置來防御的,例如前端是 Nginx,主要使用nginx的http_limit_conn和http_limit_req 嬰兒起名http://www.bbqmw.net/qm_yeqm模塊來防御。
什么是分布式拒絕服務DDoS(Distributed Denial of Service)意為分布式拒絕服務攻擊,攻擊者利用大量“肉雞”對攻擊目標發動大量的正常或非正常請求,耗盡目標主機資源或網絡資源,從而使被攻擊者不能為合法用戶提供服務。通常情況下,攻擊者會嘗試使擁有這么多連接的系統飽和,并要求它不再能夠接受新的流量,或者變得非常緩慢以至于無法使用。
換句話說老張的飯店(被攻擊目標)可接待100個顧客同時就餐,隔壁老王(攻擊者)雇傭了200個人(肉雞),進飯店霸占位置卻不吃不喝(非正常請求),飯店被擠得滿滿當當(資源耗盡),而真正要吃飯的顧客卻進不來,飯店無法正常營業(DDoS攻擊達成)。那么問題來了,老張該怎么辦?
當然是,轟出去!
通常情況下,攻擊者會嘗試使擁有這么多連接的系統飽和,并要求它不再能夠接受新的流量,或者變得非常緩慢以至于無法使用。
應用層DDoS攻擊特性
應用層(第7層/ HTTP)DDoS攻擊由軟件程序(機器人)執行,該軟件程序可以定制為最佳利用特定系統的漏洞。例如,對于不能很好地處理大量并發連接的系統,僅通過周期性地發送少量流量打開大量連接并保持活動狀態,可能會耗盡系統的新連接容量。其他攻擊可以采取發送大量請求或非常大的請求的形式。由于這些攻擊是由僵尸程序而不是實際用戶執行的,因此攻擊者可以輕松地打開大量連接并非常快速地發送大量請求。
DDoS攻擊的特征可以用來幫助減輕這些攻擊,包括以下內容(這并不意味著是一個詳盡的列表):
-流量通常來自一組固定的IP地址,屬于用于執行攻擊的機器。因此,每個IP地址負責的連接和請求數量遠遠超出您對真實用戶的期望。
注意:不要認為此流量模式總是代表DDoS攻擊。轉發代理的使用也可以創建這種模式,因為轉發代理服務器的IP地址被用作來自它所服務的所有真實客戶端的請求的客戶端地址。但是,來自轉發代理的連接數和請求數通常遠低于DDoS攻擊。
-由于流量是由機器人生成的,并且意味著壓倒服務器,因此流量速率遠高于人類用戶可以生成的流量。
User-Agent報頭被設置有時到非標準值。
-該 Referer頭有時設為您可以與攻擊相關聯的值。
使用NGINX和NGINX Plus來抵御DDoS攻擊
NGINX和NGINX Plus具有許多功能,與上述的DDoS攻擊特性相結合,可以使它們成為DDoS攻擊緩解解決方案的重要組成部分。這些功能通過調節傳入流量并通過控制流量代理后端服務器來解決DDoS攻擊。
NGINX事件驅動架構的內在保護
NGINX旨在成為您的網站或應用程序的“減震器”。它具有非阻塞的事件驅動架構,可以應對大量請求,而不會明顯增加資源利用率。
來自網絡的新請求不會中斷NGINX處理正在進行的請求,這意味著NGINX可以利用下面描述的技術來保護您的站點或應用免受攻擊。