nginx + lua 防止扫描攻击

本文介绍了一种使用Lua脚本实现的防扫描机制,通过记录客户端请求并限制一定时间内请求次数来防御非法扫描行为。当请求超过设定阈值时,会触发相应的防御措施。

用于非法扫描漏洞的程序,根据用户返回代码,灵活设计,有效防御。

       lua_shared_dict dogs 10m;
        init_by_lua_block{
                dogs=ngx.shared.dogs
        }
 

                rewrite_by_lua_block
                {
                        local function deny_scan()
                                                ngx.ctx.check_ip=ngx.md5(ngx.var.host..ngx.var.binary_remote_addr..ngx.var.http_User_Agent)
                                if  dogs:get(ngx.ctx.check_ip) == nil then
                                        dogs:set(ngx.ctx.check_ip,0,60) --默认60秒可以加大
                                elseif dogs:get(ngx.ctx.check_ip) >10 then --允许10次
                                        dogs:flush_expired()
                                        ngx.exit(503)
                                end
                        end

                }


 

log_by_lua_block
{
if (dogs:get(ngx.ctx.check_ip) <11) and  ngx.status == 403  then
   dogs:incr(ngx.ctx.check_ip,1)
end
}
 

转载于:https://my.oschina.net/u/1176204/blog/974103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值