当前位置: 首页 > news >正文

盐田区住房和建设局网站东莞网络营销型网站

盐田区住房和建设局网站,东莞网络营销型网站,羽毛球赛事规则与比赛规则,汽车网站建设开题报告需求 为了封禁某些爬虫或者恶意用户对服务器的请求#xff0c;我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP #xff0c;我们将拒绝提供服务。并且可以设置封禁失效时间 环境准备 linux version: centos7 / ubuntu 等 redis version: 5.0.5 nginx version: nginx…需求 为了封禁某些爬虫或者恶意用户对服务器的请求我们需要建立一个动态的 IP 黑名单。对于黑名单中的 IP 我们将拒绝提供服务。并且可以设置封禁失效时间 环境准备 linux version: centos7 / ubuntu 等 redis version: 5.0.5 nginx version: nginx-openresty 设计方案 实现 IP 黑名单的功能有很多途径 1、在操作系统层面配置 iptables来拦截指定 IP 的网络请求。 优点简单直接在服务器物理层面上进行拦截缺点每次需要手动上服务器修改配置文件操作繁琐且不灵活 2、在 Web 服务器层面通过 Nginx 自身的 deny 选项或者 lua 插件配置 IP 黑名单。 优点可动态实现封禁 ip通过设置封禁时间可以做到分布式封禁缺点需要了解 Lua 脚本和 Nginx 配置有一定的学习成本 3、在应用层面在处理请求之前检查客户端的 IP 地址是否在黑名单中。 优点通过编写代码来实现相对简单且易于维护。缺点代码可能会变得冗长而且在高并发情况下可能影响性能。 为了方便管理和共享黑名单通过 nginx lua redis 的架构实现 IP 黑名单的功能 配置 nginx.conf 在需要进行限制的 server 的 location 中添加如下配置 location / {# 如果该location 下存在静态资源文件可以做一个判断 #if ($request_uri ~ .*\.(html|htm|jpg|js|css)) {# access_by_lua_file /usr/local/lua/access_limit.lua; #}access_by_lua_file /usr/local/lua/access_limit.lua; # 加上了这条配置则会根据 access_limit.lua 的规则进行限流alias /usr/local/web/;index index.html index.htm; }配置 lua 脚本 /usr/local/lua/access_limit.lua -- 可以实现自动将访问频次过高的IP地址加入黑名单封禁一段时间--连接池超时回收毫秒 local pool_max_idle_time 10000 --连接池大小 local pool_size 100 --redis 连接超时时间 local redis_connection_timeout 100 --redis host local redis_host your redis host ip --redis port local redis_port your redis port --redis auth local redis_auth your redis authpassword; --封禁IP时间秒 local ip_block_time 120 --指定ip访问频率时间段秒 local ip_time_out 1 --指定ip访问频率计数最大值次 local ip_max_count 3-- 错误日志记录 local function errlog(msg, ex)ngx.log(ngx.ERR, msg, ex) end-- 释放连接池 local function close_redis(red)if not red thenreturnendlocal ok, err red:set_keepalive(pool_max_idle_time, pool_size)if not ok thenngx.say(redis connct err:,err)return red:close()end end--连接redis local redis require resty.redis local client redis:new() local ok, err client:connect(redis_host, redis_port) -- 连接失败返回服务器错误 if not ok thenclose_redis(client)ngx.exit(ngx.HTTP_INTERNAL_SERVER_ERROR) end --设置超时时间 client:set_timeout(redis_connection_timeout)-- 优化验证密码操作 代表连接在连接池使用的次数如果为0代表未使用不为0代表复用 在只有为0时才进行密码校验 local connCount, err client:get_reused_times() -- 新建连接需要认证密码 if 0 connCount thenlocal ok, err client:auth(redis_auth)if not ok thenerrlog(failed to auth: , err)returnend--从连接池中获取连接无需再次认证密码 elseif err thenerrlog(failed to get reused times: , err)return end-- 获取请求ip local function getIp()local clientIP ngx.req.get_headers()[X-Real-IP]if clientIP nil thenclientIP ngx.req.get_headers()[x_forwarded_for]endif clientIP nil thenclientIP ngx.var.remote_addrendreturn clientIP endlocal cliendIp getIp();local incrKey limit:count:..cliendIp local blockKey limit:block:..cliendIp--查询ip是否被禁止访问如果存在则返回403错误代码 local is_block,err client:get(blockKey) if tonumber(is_block) 1 thenngx.exit(ngx.HTTP_FORBIDDEN)close_redis(client) endlocal ip_count, err client:incr(incrKey) if tonumber(ip_count) 1 thenclient:expire(incrKey,ip_time_out) end --如果超过单位时间限制的访问次数则添加限制访问标识限制时间为ip_block_time if tonumber(ip_count) tonumber(ip_max_count) thenclient:set(blockKey,1)client:expire(blockKey,ip_block_time) endclose_redis(client)总结 以上便是 NginxLuaRedis 实现的 IP 黑名单功能具有如下优点 配置简单轻量对服务器性能影响小。多台服务器可以通过共享 Redis 实例共享黑名单。动态配置可以手工或者通过某种自动化的方式设置 Redis 中的黑名单 扩展 1、IP 黑名单的应用场景 IP 黑名单在实际应用中具有广泛的应用场景主要用于保护服务器和应用免受恶意攻击、爬虫或滥用行为的影响。下面列举几个常见的应用场景 防止恶意访问黑名单可以阻止那些试图通过暴力破解密码、SQL 注入、XSS 攻击等方式进行非法访问的 IP 地址。防止爬虫和数据滥用黑名单可以限制那些频繁访问网站并抓取大量数据的爬虫以减轻服务器负载和保护数据安全。防止 DDOS 攻击黑名单可以封禁那些发起大规模DDoS攻击的IP地址保护服务器的稳定性和安全性。限制访问频率黑名单可以限制某个IP在特定时间段内的访问次数防止恶意用户进行暴力破解、刷票等行为。 2、高级功能和改进 除了基本的 IP 黑名单功能外还可以进行一些高级功能和改进以提升安全性和用户体验 异常检测和自动封禁通过分析访问日志和行为模式可以实现异常检测功能并自动将异常行为的 IP 地址封禁提高安全性。白名单机制除了黑名单还可以引入白名单机制允许某些 IP 地址绕过黑名单限制确保合法用户的正常访问。验证码验证对于频繁访问或异常行为的 IP可以要求其进行验证码验证以进一步防止恶意行为。数据统计和分析将黑名单相关的数据进行统计和分析例如记录封禁 IP 的次数、持续时间等信息以便后续优化和调整策略。 通过不断改进和优化 IP 黑名单功能可以更好地保护服务器和应用的安全。
http://www.yutouwan.com/news/65471/

相关文章:

  • 互联网公司怎么找网站建设客户阿里云apache重写wordpress
  • 泗洪网站建设怎样免费个人网站建设
  • 网站建设方案书阿里云备案找能做网站的
  • 电商网站前端制作分工东莞在哪里学网站建设
  • dz整站网站建设百度关键词搜索排行
  • 建设门户网站需要注意什么建立企业网站流程
  • 体检营销型网站福州建设招聘信息网站
  • 成都网站制作推来客网站系统情侣手表网站
  • qq上网站做我女朋友记事本做网站表格
  • 股权分配系统建设网站wordpress 4 下载
  • 德育工作网站建设方案太仓网站建设
  • 陕西做网站的公司在哪郑州网站建设九零后
  • 自己做网站开发如何找客户wordpress不能mp4
  • 做兼职那个网站比较好廊坊seo整站优化
  • seo营销排名seo优化网站快速排名
  • 如何通过cpa网站做推广网站上传权限
  • 什么网站做软件任务挣钱wordpress内容
  • 单一产品网站如何做seo大连优化公司
  • 网站建设功能怎么写网站与网站链接怎么做
  • 网站开发用到什么技术怎么做最火的视频网站
  • 网站建设代码怎么导入图片建设信用卡个人网站
  • dede网站模板客网站做网络营销
  • 莆田网站建设解决方案菏泽网站建设公司官网
  • 免费做免费做人爱视频的网站网站备案号不存在
  • 玉溪哪有网站建设开发我想做app推广代理
  • 电子商务网站建设 百度文库电脑当服务器做网站
  • 网站注册时间查询住房城乡建设网站藁城
  • dede免费网站模板下载蒙狼科技建设网站好不好
  • 电脑在哪网站接做扇子单网站建设企业的未来发展计划
  • 国外以紫色为背景的网站网站制作策划建设大纲