2016年3月15日 星期二

nginx ddos攻擊測試Enter a post title

nginx ddos攻擊測試

Posted on 2014 年 05 月 17 日, 05:06:15 By Tony

使用的軟體是Http attack version 3.6 設定如圖

image

image

nginx.config的設定

image

修改網站預設的設定檔default如下

image

限制每個ip超過20個連線數,然後顯示503的錯誤畫面 測試壓測的情況查詢大約19xx連線

連線數

測試情況大量連線的ip會出現503的頁面,但另一個ip連線仍然是正常的

image

主要用到的是Nginx中提供的兩個limit模組:

ngx_http_limit_conn_module  

ngx_http_limit_req_module

一、白名單

首先這兩個模組是支援白名單的,就是可能有某些IP位址,我們是不需要進行限制的,比如可能會是搜尋引擎啦什麼的或者自己的IP,因此需要設置一個白名單,不需要的可跳過本步。具體方法:

在HTTP段中插入如下格式內容,聲明白名單IP

http{

.......

geo $limited{

default 1;

#公司    

119.123.5.0/24 0;

}

.........

}

geo指令定義了一個白名單$limited變數,預設值為1,如果用戶端IP在上面的範圍內,$limited的值為0。

然後緊跟在上面內容後使用map指令映射搜尋引擎用戶端的ip為空串,如果不是白名單IP就顯示本身真實的IP,這樣搜尋引擎iIP就不能存到limit模組的記憶體session中,所以不會限制白名單的IP訪問。

map $limited $limit {

1 $binary_remote_addr;

0 "";

}

二、訪問頻率限制

訪問頻率限制使用到的是ngx_http_limit_req_module,需要在兩個地方配置,首先在HTTP段中,聲明好這個模組一些參數,如果有設置白名單,設置如下

http{

...

limit_req_zone $limit zone=one:10m rate=20r/m; ##平均20r/m 每分鐘20個請求    

...

}

如果沒有配置白名單,所有來訪IP都會限制,配置如下

http{

...

limit_req_zone $binary_remote_addr zone=one:10m rate=20r/m; ##平均20r/m 每分鐘20個請求  

...

}

解釋一下上面的參數,第一個代表的是需要限制的ip群,這個很好理解,第二個zone=one表示這個limit_zone的名字叫做one,後面的使用中可以用這個one來進行指代,後面的15m,代表為這個zone分配10m的記憶體,1m可以保存16000的$binary_remote_addr。最後一個是頻率,如果要按秒來算可以設置20r/s這樣。

最後是配置到Nginx的php的解析段

location ~ \.php$ {

...

limit_req zone=one burst=5 nodelay;

...

}

指定了使用名字為one的zone,然後緩衝佇列為5,無延遲,如果不設置無延遲,訪問會卡住。

三、訪問連接限制

訪問連接限制使用到的是ngx_http_limit_conn_module,也是需要在兩個地方配置,首先在HTTP段中,聲明好這個模組一些參數,如果有設置白名單,設置如下

http{

...

limit_conn_zone $limit zone=addr:10m;

...

}

如果沒有配置白名單,所有來訪IP都會限制,配置如下

view sourceprint?http{

...

limit_conn_zone $binary_remote_addr zone=addr:10m;

...

}

參數的意思跟上面的差不多也就不多解釋了。後面的就是在server段中進行設置了,可以具體到某個目錄什麼的了

server {

location /download/ {

limit_conn addr 5;

}

大功告成,打完收工,記得要nginx -s reload一下

原文:http://netsecurity.51cto.com/art/201306/400210.htm

沒有留言: