nginx扩展 OpenResty 实现防cc攻击教程

简介: 使用OpenResty实现CC攻击防护,包括两个主要步骤:限制请求速度和JS验证。首先,安装依赖(RHEL/CentOS需安装readline-devel, pcre-devel, openssl-devel,Ubuntu需安装libreadline-dev等)。然后,安装Luajit和OpenResty。在Nginx配置中,创建`lua`共享字典并设置`content_by_lua_file`调用lua脚本。lua脚本检查请求频率,超过限制则返回503,否则增加计数。同时,通过JS验证,生成随机码并重定向用户,用户需携带正确验证码请求才能访问。

使用openresty来实现防cc攻击的功能。openresty官网http://openresty.org/cn/index.html。下面是防cc攻击的流程图。 根据流程图,我们知道防cc攻击主要包括两部分,一是限制请求速度,二是给用户发送js跳转代码进行验证请求是否合法。

安装依赖

RHEL/Centos:

yum install readline-devel pcre-devel openssl-devel

ubuntu:

apt-get install libreadline-dev libncurses5-dev libpcre3-dev libssl-dev perl

luajit安装

cd /tmp/

git clone http://luajit.org/git/luajit-2.0.git

cd luajit-2.0/

make && make install

ln -sf luajit-2.0.0-beta10 /usr/local/bin/luajit

ln -sf /usr/local/lib/libluajit-5.1.so.2 /usr/lib/

openresty安装

cd /tmp

get http://agentzh.org/misc/nginx/ngx_openresty-1.2.4.13.tar.gz

tar xzf ngx_openresty-1.2.4.13.tar.gz

cd ngx_openresty-1.2.4.13/

./configure --prefix=/usr/local/openresty --with-luajit

make && make install

Nginx配置

nginx.conf:

   http{

   [......]

   lua_shared_dict limit 10m;

   lua_shared_dict jsjump 10m;

   

       server {

  #lua_code_cache off;

           listen       80;

           server_name  www.centos.bz;

   

           location / {

   default_type  text/html;

   content_by_lua_file "/usr/local/openresty/nginx/conf/lua";

           }

           location @cc {

               internal;

               root   html;

               index  index.html index.htm;

           }

       }

   }

/usr/local/openresty/nginx/conf/lua文件:

   local ip = ngx.var.binary_remote_addr

   local limit = ngx.shared.limit

   local req,_=limit:get(ip)

   if req then

           if req > 20 then

                   ngx.exit(503)

           else

                   limit:incr(ip,1)

           end

   else

           limit:set(ip,1,10)

   end

   

   local jsjump = ngx.shared.jsjump

   local uri = ngx.var.request_uri

   local jspara,flags=jsjump:get(ip)

   local args = ngx.req.get_uri_args()

   if jspara then

       if flags then

           ngx.exec("@cc")

       else

                   local p_jskey=''

                   if args["jskey"] and type(args["jskey"])=='table' then

                            p_jskey=args["jskey"][table.getn(args["jskey"])]

                   else

                            p_jskey=args["jskey"]

                   end

           if p_jskey and p_jskey==tostring(jspara) then

                           jsjump:set(ip,jspara,3600,1)

                           ngx.exec("@cc")

           else

                           local url=''

                           if ngx.var.args then

                                  url=ngx.var.scheme.."://"..ngx.var.host..uri.."&jskey="..jspara

                           else

                                  url=ngx.var.scheme.."://"..ngx.var.host..uri.."?jskey="..jspara

                           end

                           local jscode="window.location.href='"..url.."';"

                           ngx.say(jscode)

           end

       end

   else

   math.randomseed( os.time() );

       local random=math.random(100000,999999)

       jsjump:set(ip,random,60)

       local url=''

       if ngx.var.args then

           url=ngx.var.scheme.."://"..ngx.var.host..uri.."&jskey="..random

       else

           url=ngx.var.scheme.."://"..ngx.var.host..uri.."?jskey="..random

       end

       local jscode="window.location.href='"..url.."';"

       ngx.say(jscode)

   end

最后

lua代码部分解释

1、1-12行是限速功能实现,第5和第10行表示10秒钟内容最多只能请求20次。

2、14-48行是验证部分,24行中的3600表示验证通过后,白名单时间为3600秒,即1小时。

目录
相关文章
|
11天前
|
云安全 安全 BI
CC攻击该怎么防护更好
随着互联网发展,CC攻击成为严峻的网络安全问题。这种DDoS攻击通过操纵大量主机,向目标服务器发送大量请求,导致服务器资源耗尽。应对CC攻击,可以采取以下策略:部署高防IP或SCDN服务,限制请求频率,以及使用验证码验证。德迅云安全提供一站式安全加速解决方案,包括Web应用防火墙、CDN加速和抗DDoS防护,利用AI检测、智能语义解析等技术,有效防御各种网络攻击,同时保证网站内容的快速稳定访问。通过实时数据统计和安全可视化工具,便于监控和应对安全威胁。综合运用这些方法能有效降低CC攻击影响,保障Web应用程序的安全稳定运行。
|
19天前
|
存储 缓存 负载均衡
CC攻击解析与防御策略
CC攻击是DDoS的一种,利用代理服务器向目标发送大量合法请求,消耗服务器资源。识别特征包括命令行大量"SYN_RECEIVED"连接、IP批量异常连接和日志中异常访问模式。防御策略包括提升服务器性能、数据缓存优化、页面静态化、请求速率限制、IP访问限制及使用CDN。专业高防产品提供智能识别和响应,帮助企业构建全面防御体系。
212 2
|
1月前
|
域名解析 安全 网络安全
全面了解CC攻击和防范策略
CC攻击是一种针对Web服务的攻击,模仿正常用户请求耗尽服务器资源。攻击类型包括直接、肉鸡、僵尸和代理攻击。目标包括网站、API、登录页面、基础设施组件、云服务、金融机构等。影响包括服务中断、性能下降、经济损失、品牌受损及法律问题。判断CC攻击可通过观察CPU上升、网站响应慢或检查系统日志。防护措施包括IP封禁、人机验证、使用安全加速服务、静态化页面、更改端口、完善日志和域名解析策略。CC与DDoS攻击主要区别在于攻击原理、对象、危害、门槛和所需流量。综合运用多种防御策略能有效抵御CC攻击。
|
21天前
|
存储 安全 应用服务中间件
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
26 0
|
25天前
|
Ubuntu 应用服务中间件 Linux
蓝易云 - Linux学习之Ubuntu20中OpenResty的nginx目录里内容和配置文件
你可以根据你的需要修改这个配置文件,例如增加新的服务器块,位置块,修改监听的端口等。修改完配置文件后,你需要重载Nginx配置,可以使用 `/usr/local/openresty/nginx/sbin/nginx -s reload`命令来实现。
26 0
|
27天前
|
缓存 安全 应用服务中间件
蓝易云 - Nginx的HTTPS部署与安全性能优化教程
以上就是在Nginx上部署HTTPS并进行安全性能优化的基本步骤。需要注意的是,这些步骤可能会根据您的具体需求和环境有所不同。
30 0
|
1月前
|
缓存 负载均衡 安全
每天一技:全面了解CC攻击和防范策略
CC攻击是一种模拟真实用户请求,导致服务器资源耗尽的网络攻击。攻击者利用工具生成木马,控制大量“肉鸡”对目标网站发起恶意请求,使服务器CPU过载,网站无法正常服务。特点是请求有效、IP分散、数据包真实、针对网页。常见类型包括直接攻击、肉鸡攻击、僵尸攻击和代理攻击。判断CC攻击可通过观察CPU usage飙升和系统日志异常。大型网站如某度、Google因代码规范、硬件配置高、缓存策略、严格防火墙和负载均衡等技术能有效防御。防御措施包括IP封禁、人机验证、静态化页面、更改Web端口、日志分析等,或使用SCDN产品提供全面防护,包括Web攻击防护、DDoS防护、合规性保障、流量管理和安全可视化功能。
Adobe XD CC 55.2.12.2 是一款非常专业的矢量图形规划软件Adobe XD 2023版本软件下载安装教程(内含所有版本)
Adobe XD CC 55.2.12.2 是一款非常专业的矢量图形规划软件,全新的桌面端UX原型工具,这是新一代网页与移动应用的UX设计工具。xd能够帮助设计者快速有效的设计图形、建立手机APP以及网站原型等等设计制作,支持设备的尺寸多样。集原型、设计和交互等功能于一体,从网站和移动应用程序到语音交互都可轻松实现,Adobe XD CC带来了响应调整大小、自动动画、语音原型、插件和应用程序集成等新功能,
Adobe Photoshop CC 2019下载中文永久安装和破解教程
Adobe Photoshop CC 2019下载中文永久安装和破解教程
49719 0
Animate CC 2019免费下载丨Adobe Animate CC 2019下载中文完整版永久安装教程
Adobe 提供了一整套可互相配合使用的动画应用程序,助您实现所有创意。使用 Animate CC 创建适用于游戏、应用程序和 Web 的交互式矢量动画。利用 Character Animator CC 将人物实时制成动画。
8302 0