溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Nginx防御DDOS攻擊怎么配置

發(fā)布時間:2022-04-29 14:01:17 來源:億速云 閱讀:411 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要介紹“Nginx防御DDOS攻擊怎么配置”,在日常操作中,相信很多人在Nginx防御DDOS攻擊怎么配置問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Nginx防御DDOS攻擊怎么配置”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!

Nginx防御DDOS攻擊怎么配置

下面是配置方法:

一. 限制每秒請求數(shù)

ngx_http_limit_req_module模塊通過漏桶原理來限制單位時間內(nèi)的請求數(shù),一旦單位時間內(nèi)請求數(shù)超過限制,就會返回503錯誤。配置需要在兩個地方設(shè)置:

nginx.conf的http段內(nèi)定義觸發(fā)條件,可以有多個條件

在location內(nèi)定義達(dá)到觸發(fā)條件時nginx所要執(zhí)行的動作

例如:

http {
  limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; 
//觸發(fā)條件,所有訪問ip 限制每秒10個請求  ...  
server { 
  ...   
location ~ \.php$ {
    limit_req zone=one burst=5 nodelay; //執(zhí)行的動作,通過zone名字對應(yīng)    
 }   
 }  
 }

參數(shù)說明:

  • $binary_remote_addr 二進(jìn)制遠(yuǎn)程地址

  • zone=one:10m 定義zone名字叫one,并為這個zone分配10m內(nèi)存,用來存儲會話(二進(jìn)制遠(yuǎn)程地址),1m內(nèi)存可以保存16000會話

  • rate=10r/s; 限制頻率為每秒10個請求

  • burst=5 允許超過頻率限制的請求數(shù)不多于5個,假設(shè)1、2、3、4秒請求為每秒9個,那么第5秒內(nèi)請求15個是允許的,反之,如果第一秒內(nèi)請求15個,會將5個請求放到第二秒,第二秒內(nèi)超過10的請求直接503,類似多秒內(nèi)平均速率限制。

  • nodelay 超過的請求不被延遲處理,設(shè)置后15個請求在1秒內(nèi)處理。

二.限制ip連接數(shù)

ngx_http_limit_conn_module的配置方法和參數(shù)與http_limit_req模塊很像,參數(shù)少,要簡單很多

http {
  limit_conn_zone $binary_remote_addr zone=addr:10m; //觸發(fā)條件  ...  
server { 
  ...   
location /download/ { 
   limit_conn addr 1; // 限制同一時間內(nèi)1個連接,超出的連接返回503 
    } 
   } 
 }

三.白名單設(shè)置

http_limit_conn 和http_limit_req模塊限制了單ip單位時間內(nèi)的并發(fā)和請求數(shù),但是如果nginx前面有l(wèi)vs或者h(yuǎn)aproxy之類的負(fù)載均衡或者反向代 理,nginx獲取的都是來自負(fù)載均衡的連接或請求,這時不應(yīng)該限制負(fù)載均衡的連接和請求,就需要geo和map模塊設(shè)置白名單:

geo $whiteiplist {

 default 1; 10.11.15.161 0; 

} map $whiteiplist $limit {

 1 $binary_remote_addr; 0 ""; 

} 
limit_req_zone $limit zone=one:10m rate=10r/s;

limit_conn_zone $limit zone=addr:10m;

geo模塊定義了一個默認(rèn)值是1的變量whiteiplist,當(dāng)在ip在白名單中,變量whiteiplist的值為0,反之為1

如果在白名單中--> whiteiplist=0 --> $limit="" --> 不會存儲到10m的會話狀態(tài)(one或者addr)中 --> 不受限制

反之,不在白名單中 --> whiteiplist=1 --> $limit=二進(jìn)制遠(yuǎn)程地址 -->存儲進(jìn)10m的會話狀態(tài)中 --> 受到限制

四.測試

使用ab命令來模擬cc攻擊,http_limit_conn 和http_limit_req模塊要分開測試,同時注意http_limit_conn模塊只統(tǒng)計(jì)正在被處理的請求(這些請求的頭信息已被完全讀入)所 在的連接。如果請求已經(jīng)處理完,連接沒有被關(guān)閉時,是不會被統(tǒng)計(jì)的。這時用netstat看到連接數(shù)可以超過限定的數(shù)量,不會被阻止。

ab -n 請求數(shù) -c 并發(fā) http://10.11.15.174/i.php

如果被阻止前臺會返回503,同時在nginx的error_log中會看到如下錯誤日志:

被限制連接數(shù):

2015/01/28 14:20:26 [error] 4107#0: *65525 limiting connections by zone "addr", client: 10.11.15.161, server: , request: "get /i.php?=phpe9568f35-d428-11d2-a769-00aa001acf42 http/1.1", host: "10.11.15.174", referrer: "http://10.11.15.174/i.php"

被限制請求數(shù):

2015/01/28 14:18:59 [error] 4095#0: *65240 limiting requests, excess: 5.772 by zone "one", client: 10.11.15.161, server: , request: "get /i.php?=phpe9568f34-d428-11d2-a769-00aa001acf42 http/1.1", host: "10.11.15.174", referrer: ""

五.其它一些防cc的方法

1.nginx模塊 modsecurity、http_guard、ngx_lua_waf

  • modsecurity 應(yīng)用層waf,功能強(qiáng)大,能防御的攻擊多,配置復(fù)雜

  • ngx_lua_waf 基于ngx_lua的web應(yīng)用防火墻,使用簡單,高性能和輕量級

  • http_guard 基于openresty

2.軟件+iptables

  • fail2ban 通過分析日志來判斷是否使用iptables攔截

  • ddos deflate 通過netstat判斷ip連接數(shù),并使用iptables屏蔽

開頭說過抗ddos是一個系統(tǒng)工程,通過優(yōu)化系統(tǒng)和軟件配置,只能防御小規(guī)模的cc攻擊,對于大規(guī)模攻擊、四層流量攻擊、混合攻擊來說,基本上系統(tǒng)和應(yīng)用軟件沒掛,帶寬就打滿了。下面是我在工作中使用過的防御ddos的方式:

1、高防服務(wù)器和帶流量清洗的isp

      通常是美韓的服務(wù)器,部分isp骨干供應(yīng)商有流量清洗服務(wù),例如香港的pccw。通??梢苑烙?0g左右的小型攻擊

2、流量清洗服務(wù) 例如:akamai(prolexic),nexusguard 我們最大受到過80g流量的攻擊,成功被清洗,但是費(fèi)用非常貴

3、cdn 例如:藍(lán)訊 網(wǎng)宿 cloudflare

      等,cdn針對ddos的分布式特點(diǎn),將流量引流分散,同時對網(wǎng)站又有加速作用,效果好,成本相對低。

到此,關(guān)于“Nginx防御DDOS攻擊怎么配置”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注億速云網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI