首頁  >  問答  >  主體

ddos - 網路上找了一段nginx防CC攻擊的配置,有大牛能給大概說明一下麼?

http{
     ...
     limit_req_zone $cookie_token zone=session_limit:3m rate=1r/s;
     limit_req_zone $binary_remote_addr $uri zone=auth_limit:3m rate=1r/m;
}
location /{
     limit_req zone=session_limit burst=5;
     rewrite_by_lua '
     local random = ngx.var.cookie_random
     if (random == nil) then
         return ngx.redirect("/auth?url=" .. ngx.var.request_uri)
     end
     local token = ngx.md5("opencdn" .. ngx.var.remote_addr .. random)
     if (ngx.var.cookie_token ~= token) then
         return ngx.redirect("/auth?url=".. ngx.var.request_uri)
     end
    ';
}
location /auth {
     limit_req zone=auth_limit burst=1;
     if ($arg_url = "") {
         return403;
     }
     access_by_lua '
         local random = math.random(9999)
         local token = ngx.md5("opencdn" .. ngx.var.remote_addr .. random)
         if (ngx.var.cookie_token ~= token) then
             ngx.header["Set-Cookie"] = {"token=" .. token, "random=" .. random}
             return ngx.redirect(ngx.var.arg_url)
         end
     ';
}

程式碼中的 limit_req_zone $binary_remote_addr $uri zone=auth_limit:3m rate=1r/m;這條語句是正確的嗎,確定要加入$uri? (更新 limit_req_zone 支援多個變數 所以$binary_remote_addr $uri是正確的)
如果想要應用到我的nginx中除了這段程式碼還要做哪些工作?
附上不知道是不是原文的原文網址:http://www.92csz.com/30/1255....

世界只因有你世界只因有你2714 天前793

全部回覆(1)我來回復

  • PHP中文网

    PHP中文网2017-05-16 17:12:02

    這個思路很粗糙,也不合理。原理上類似不輸入帳號密碼就不讓存取。
    但是這個現實嗎?
    對於一個新用戶來說,怎麼可能知道自己的帳號密碼。除非預先分配,但是預先分配又如何能夠避免分配給攻擊者?
    問題又回到了原點。
    所以說這個東西並沒有什麼卵用,而且只是在一定程度上防止了CC,但不能防止DDOS
    為什麼說只是某種程度上呢?因為這個cookies總是要是給用戶的,cc攻擊一樣能拿到。

    如果真的要嘗試的話,需要在安裝nginx_lua模块,或者使用openresty.

    回覆
    0
  • 取消回覆