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

浏览:50日期:2022-07-25

问题描述

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

问题解答

回答1:

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

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

相关文章: