您当前的位置:首页 > 电脑百科 > 安全防护 > 服务器/网站

利用openresty+lua+redis 实现封杀频繁恶意访问IP地址

时间:2020-03-01 13:50:10  来源:  作者:

Nginx来限制访问控制的方法有多种,nginx主要有2个模块控制,但是那些不支持自定义,非常死,在大多数场景下并不实用。今天分享一个:利用openresty+lua+redis 实现封杀频繁恶意访问IP地址,当然这个方式也是有弊端的,那就是不断试用代理 IP之类的,但是作用还是有的,起码提高了恶意的成本。

nginx的版本有淘宝nginx,还有春哥的 openresty,但是openresty打包了 nginx 的时候,集成了很多的有用的扩展,特别是 lua,一个小巧的编程语言。本文就是:openresty最新稳定版本+lua Lua +redis最新稳定版本 。

具体环境我就不安装了,大家可以使用宝塔面板啥的安装openresty,如果你的原生态的nginx就需要手动安装,网上教程都是有的,也比较简单。

本文是防止别人破解用户登录界面的,只是以一个思路,供给大家进行探讨学习哈,实际生产环境,需要多重考虑各方面的因素。

先在 http 中加载lua 包和 lua 的 c 包

lua_package_path "/usr/local/openresty/lualib/?.lua;;";

lua_package_cpath "/usr/local/openresty/lualib/?.so;;";

server {    listen 80;    server_name _;    access_log /data/wwwlogs/access_nginx.log combined;    root /data/wwwroot/default;    index index.html index.htm index.php;    #例如我防止别人破解我的登录帐号,还有譬如你匹配你的验证码文件进行限制    location /login {       default_type 'text/html';    access_by_lua_file "/usr/local/openresty/nginx/lua/access_by_redis.lua";        content_by_lua_block {            ngx.say("ok: ")    }    }    location ~ [^/].php(/|$) {        #fastcgi_pass remote_php_ip:9000;        fastcgi_pass unix:/dev/shm/php-cgi.sock;        fastcgi_index index.php;        include fastcgi.conf;        }。。。。。#省略    }

access_by_redis.lua 具体代码如下(已包含详细注释):

ip_bind_time = 30  --封禁IP多长时间ip_time_out = 6    --指定统计ip访问频率时间范围connect_count = 10 --指定ip访问频率计数最大值--上面的意思就是6秒内访问超过10次,自动封 IP 30秒。--连接redislocal redis = require "resty.redis"local cache = redis.new()local ok , err = cache.connect(cache,"127.0.0.1","6379")cache:set_timeout(60000)--如果连接失败,跳转到脚本结尾if not ok then  goto Lastendend--查询ip是否在封禁段内,若在则返回403错误代码--因封禁时间会大于ip记录时间,故此处不对ip时间key和计数key做处理is_bind , err = cache:get("bind_"..ngx.var.remote_addr)if is_bind == '1' then  ngx.exit(ngx.HTTP_FORBIDDEN)  -- 或者 ngx.exit(403)  -- 当然,你也可以返回500错误啥的,搞一个500页面,提示,亲您访问太频繁啥的。  goto Lastendendstart_time , err = cache:get("time_"..ngx.var.remote_addr)ip_count , err = cache:get("count_"..ngx.var.remote_addr)--如果ip记录时间大于指定时间间隔或者记录时间或者不存在ip时间key则重置时间key和计数key--如果ip时间key小于时间间隔,则ip计数+1,且如果ip计数大于ip频率计数,则设置ip的封禁key为1--同时设置封禁key的过期时间为封禁ip的时间if start_time == ngx.null or os.time() - start_time > ip_time_out then  res , err = cache:set("time_"..ngx.var.remote_addr , os.time())  res , err = cache:set("count_"..ngx.var.remote_addr , 1)else  ip_count = ip_count + 1  res , err = cache:incr("count_"..ngx.var.remote_addr)  if ip_count >= connect_count then    res , err = cache:set("bind_"..ngx.var.remote_addr,1)    res , err = cache:expire("bind_"..ngx.var.remote_addr,ip_bind_time) --fix keys  endend--结尾标记::Lastend::local ok, err = cache:close()

最后的效果就是:http://xxxx/login 6秒内访问超过10次,自动封 IP 30秒 。。。这个具体,你也调嘛

 

利用openresty+lua+redis 实现封杀频繁恶意访问IP地址

 

本文是很早之前写在博客上的,分享出来希望对大家有用,觉得不错,记得关注,点赞,收藏哦。



Tags:恶意访问   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
Nginx来限制访问控制的方法有多种,nginx主要有2个模块控制,但是那些不支持自定义,非常死,在大多数场景下并不实用。今天分享一个:利用openresty+lua+redis 实现封杀频繁恶意访问I...【详细内容】
2020-03-01  Tags: 恶意访问  点击:(115)  评论:(0)  加入收藏
▌简易百科推荐
在最近的一波攻击中,黑客利用多个插件中未修补的漏洞攻击了 160 万个 WordPress 网站。 易受攻击的插件对 WordPress 网站产生了的巨大攻击数据。 Wordfence 最近发现 WordPr...【详细内容】
2021-12-16  蚁安    Tags:WordPress   点击:(9)  评论:(0)  加入收藏
事件起因从安全分析系统里面发现一条带有病毒的下载,然后针对这条记录展开了一系列的分析分析过程1.登录到被感染服务器,查看系统状况,hadoop 这个用户在 2020/6/18 20:32 从这...【详细内容】
2021-11-23  Z2990Lig    Tags:SSH   点击:(32)  评论:(0)  加入收藏
1、除了服务器需要用的一些正规软件,其它都不要安装。2、在用户中把administrator改名,这样做的目的是即使对方暴破了我们的密码用户名也不容易猜住,相当于又加了一道关卡。...【详细内容】
2021-11-01  IT小哥吧    Tags:服务器   点击:(37)  评论:(0)  加入收藏
账户安全(1)更名administrator本地用户并禁用guest账户步骤:点击“开始”,找到“管理工具”,点击里面的“计算机管理”,找到“本地用户和组” (2)设定账户锁定策略尝试5次失败...【详细内容】
2021-10-12  Kali与编程  今日头条  Tags:Windows主机   点击:(62)  评论:(0)  加入收藏
本文主要介绍以Microsoft的Windows Server 2019 ,版本:Datacenter(Domain Controller)安全加固保护.企业随着规模不断扩大,业务增多,信息安全建设是企业里一条只有重点没有终点...【详细内容】
2021-09-17  Vireshark    Tags:服务器安全   点击:(64)  评论:(0)  加入收藏
目录常见共享命令IPC$IPC$的利用条件1:开启了139、445端口2:目标主机开启了IPC$共享3:IPC连接报错IPC空连接空连接可以做什么?(毫无作用)IPC$非空连接IPC$非空连接可以做什么?di...【详细内容】
2021-09-16  网络说安全    Tags:系统安全   点击:(86)  评论:(0)  加入收藏
昨天一个老哥找到我,说他的服务器这几天一直被CC攻击,问我这边有没有什么解决的方法? 近年来,网络攻击事件越来越频繁,最常见的就是CC攻击和DDOS攻击,主要的区别就是针对的对象不...【详细内容】
2021-09-10  小蚁GDRAGON    Tags:cc攻击   点击:(58)  评论:(0)  加入收藏
网站页面上的登录操作,通常都是输入帐号密码,传输至网站后台验证。在网站页面、数据传输中,通过技术手段,都可以得到用户输入的信息,并可以修改,从而发起网络攻击。典型的如:使用自...【详细内容】
2021-08-30  修丹道的程序猿    Tags:登录方式   点击:(62)  评论:(0)  加入收藏
网络安全研究人员披露了一类影响主要 DNS 即服务 (DNSaaS) 提供商的新漏洞,这些漏洞可能允许攻击者从企业网络中窃取敏感信息。基础设施安全公司 Wiz 的研究人员 Shir Tamar...【详细内容】
2021-08-12  零日时代    Tags:漏洞   点击:(66)  评论:(0)  加入收藏
001暴力破解1. 指定用户名爆破密码传统型爆破思路,用户名可以通过猜测或者信息收集获得。猜测:admin、网站域名等信息收集:新闻发布人、whoami等2. 指定密码爆破用户名如果是后...【详细内容】
2021-07-23  KaliMa  今日头条  Tags:登陆框   点击:(85)  评论:(0)  加入收藏
相关文章
    无相关信息
最新更新
栏目热门
栏目头条