nginx怎麼防ddos攻擊

2019-10-14   科技i關注

防禦DDOS是一個系統工程,攻擊花樣多,防禦的成本高瓶頸多,防禦起來即被動又無奈。DDOS的特點是分布式,針對帶寬和服務攻擊,也就 是四層流量攻擊和七層應用攻擊,相應的防禦瓶頸四層在帶寬,七層的多在架構的吞吐量。對於七層的應用攻擊,我們還是可以做一些配置來防禦的。

例如前端是Nginx,主要使用nginx的http_limit_conn和http_limit_req模塊來防禦。 ngx_http_limit_conn_module 可以限制單個IP的連接數,ngx_http_limit_req_module可以限制單個IP每秒請求數,通過限制連接數和請求數能相對有效的防禦CC攻擊。

下面是配置方法:

限制每秒請求數

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

nginx.conf的http段內定義觸發條件,可以有多個條件

在location內定義達到觸發條件時nginx所要執行的動作

例如:

http {

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s; //觸發條件,所有訪問ip 限制每秒10個請求 ...

server { ...

location ~ \\.php$ {

limit_req zone=one burst=5 nodelay; //執行的動作,通過zone名字對應

}

}

}

參數說明:

$binary_remote_addr 二進位遠程地址

zone=one:10m 定義zone名字叫one,並為這個zone分配10M內存,用來存儲會話(二進位遠程地址),1m內存可以保存16000會話

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

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

nodelay 超過的請求不被延遲處理,設置後15個請求在1秒內處理。

限制IP連接數

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

http {

limit_conn_zone $binary_remote_addr zone=addr:10m; //觸發條件 ...

server { ...

location /download/ {

limit_conn addr 1; // 限制同一時間內1個連接,超出的連接返回503

}

}

}

更多Nginx相關技術文章,請訪問Nginx使用教程欄目進行學習!

以上就是nginx怎麼防ddos攻擊的詳細內容,更多請關注其它相關文章!

更多技巧請《轉發 + 關注》哦!