网上找了一段nginx防CC攻击的配置,有大牛能给大概说明一下么?

发布于 2022-09-04 11:59:14 字数 1366 浏览 18 评论 0

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....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

琉璃梦幻 2022-09-11 11:59:14

这个思路很粗糙,也并不合理。原理上类似于不输入账号密码就不让访问。
但是这个现实吗?
对于一个新用户来说,怎么可能知道自己的账号密码。除非预先分配,但是预先分配又如何能够避免分配给攻击者?
问题又回到了原点。
所以说这个东西并没有什么卵用,而且只是在一定程度上防止了CC,但不能防止DDOS
为什么说只是一定程度上呢?因为这个cookies总要是给用户的,cc攻击一样能拿到。

如果你真的要尝试的话,需要在安装nginx_lua模块,或者使用openresty.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文