Nginx 防止 DDOS 的作法

心得:

DDoS  是 distributed denial-of-service attack 的縮寫

中文應該叫分散式阻斷服務攻擊

就是不斷存取其提供的服務,讓其流量過大而導致Server停擺

可以說是最單純但也最難阻擋的攻擊

但個人認為從理論上不算是攻擊…算是一種資源戰爭吧 = =

關於Nginx的基本設定可以參考

Nginx 設定說明

CentOS 7 下 Nginx 與 Tomcat 整合

說明:

限制請求

limit_req_zone $binary_remote_addr zone=www_com:10m rate=10r/s;

server {
 location / {
 limit_req zone=www_com;
 }
}

說明:

$binary_remote_addr 是 Nginx 獲取 IP 的參數,官網也有提到不要使用 $remote_addr

另外,假如此 Nginx Server並非最前端,還必須記得改用能取得真實IP的參數

www_com 是 zone 的自定義名稱,後面10m則是大小值

10r/s 每秒10個請求或使用 100r/m 以分鐘為單位

限制連線數

limit_conn_zone $binary_remote_addr zone=www:10m;

server {
 location / {
 limit_conn www 10;
 }
}

說明:

$binary_remote_addr 一樣是 Nginx 獲取 IP 的參數

www 是 zone 的自定義名稱,後面10m則是大小值

limit_conn 結尾的數字則是要限制的連接數,此例子為10個

以上兩個是個人比較常用的方式,官方網站也有介紹其他作法

可以參考:

http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

https://www.nginx.com/blog/mitigating-ddos-attacks-with-nginx-and-nginx-plus/

 

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s