阿里云web防火墙配置防护CC 攻击的方法

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
日志服务 SLS,月写入数据量 50GB 1个月
简介:


CC攻击是网络上很常见的一种大规模攻击方案。流量超大,攻击很猛,一般的网站根本无法抵御。


什么是 CC 攻击


CC(Challenge Collapsar)该攻击与我们常见的 DDOS(网络层分布式拒绝服务攻击)不同之处在于,CC 攻击只会导致 WEB服务或者只是 WEB 服务中的某一接口或单一页面无法服务,相比网络层的拒绝服务攻击,其优势在于能够使用相对较少的资源对更为精确的目标进行攻击。


攻击方式


主要的攻击方式分为快速和慢速两种:


快速 CC 攻击是指快速请求服务器处理消耗较大的页面或者接口,这种方式是通过大量占用服务器的 CPU、IO 等资源,致使服务器无法正常响应其它用户的请求。
慢速 CC 攻击是指是通过与服务器建立连接后,以最慢的速度发送请求/读取响应,通过占用服务器的进程、线程、网络套接字等资源,达到导致服务器无法继续服务的目的,这种攻击一般针对 Apache、httpd 这类 thread-base 架构的服务器。
防护手段


点我领取阿里云2000元代金券,(阿里云优惠券的作用:购买阿里云产品,最后支付结算的时候,阿里云优惠券可抵扣一部分费用。

针对两种不同类型的攻击防护方式分别是:


快速攻击: 限制单一源IP的请求速率、限制并发连接数
慢速攻击: 限制单一请求的超时时间
Nginx 和 Apache 都有相应的模块来解决这类问题,只要配置得当能够抵挡住大多数的 CC 攻击,以下我们以 Nginx 为例看看具体的配置。


限制单一源 IP 的请求速率,平均每秒不超过 1 个请求,并且突发不超过 5 个请求:


http {


limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
...
server {
...
location /limit_req/ {
    limit_req zone=one burst=5;
}</code></pre>

}


限制并发连接数,单一源 IP 最大并发数是 100,总的连接数不超过 1000:


http {


limit_conn_zone $binary_remote_addr zone=one:10m;
limit_conn_zone $server_name zone=perserver:10m;
...
server {
...
limit_conn  one  100;                                              
limit_conn perserver 1000;
...</code></pre>

}


限制单个请求的超时时间:


http {


...
server {
...
client_header_timeout 60s; //等待客户端发送请求头的超时时间,将这个值改小可以应对慢速发送请求头的CC攻击;
client_body_timeout   60s; //读取客户端发送请求体的超时时间,将这个值改小可以应对慢速发送请求体的CC攻击;
keepalive_timeout     75s; //与客户端的连接超时时间,如果连接大量被占用,可以将其改小一些,释放被占用的连接,减轻服务器压力;
...</code></pre>

}


阿里云的Web应用防火墙对网站或者APP的业务流量进行恶意特征识别及防护,将正常、安全的流量回源到服务器。避免网站服务器被恶意入侵,保障业务的核心数据安全,解决因恶意攻击导致的服务器性能异常问题。
更多参阅阿里云web防火墙配置文档


点我领取阿里云2000元代金券,(阿里云优惠券的作用:购买阿里云产品,最后支付结算的时候,阿里云优惠券可抵扣一部分费用。

CC防护攻击紧急模式
当网站遇到CC攻击的时候,我们一般想到的是第一时间的恢复网站的业务,但这个时候我们可以直接在web应用防火墙上开启CC防护攻击紧急模式。开启之后,能够有效的对客户端校验。
image


这个模式有一个注意的点就是他这个模式只能对Web应用、网站应用及H5页面有效。对于API以及Native的App会造成大量的误杀,所以这两个应用场景下是不支持攻击紧急模式的。这种情况,我们建议的方案是使用CC自定义防护进行防御。
CC自定义防护
那么随着自定义的一个防御怎么来配置呢?有两个步骤,一是先要从攻击的日志中分析找到攻击的特征。然后使用工具或者对应的功能对我们发现的特征进行封禁,从而达到保护的目的。


特征分析
我们先来看一下CC攻击有哪些特征,一般情况下面最主要最明显的特征是某个URL的请求异常的集中。另外一方面,他请求的源IP异常的集中。第三点,他请求的Refer或者user-agent异常的集中。有了这几个概念之后,我们就可以根据这几个概念去分析日志,获取对应的特征。


我们可以以下面这个网站为例,可以看一下对应的时间段。
image
从这个日志的一个趋势来看,其实是被打得挺厉害的,峰值时间最高的时候有13万的QPS。那我们怎么来对这种攻击进行分析呢?我们采用了SLS的日志服务,快捷的自动化地进行分析分析的过程。


request URL分析
image


我们通过对request URL进行分析,可以看到他99%的请求全都请求了//index.php的路径。这个请求占这么大的量绝对是有问题的,正常情况下面对比相同时间段,其实不会有这么大的量出现。那么我们要做的事情就是把恶意的请求给他分辨出来,然后把它拦截表对他进行自定义的CC防护。


规则配置
image
配置规则的时候,对这个URL进行完全匹配,然后配置我们检测的周期是十秒或者五秒,然后对他进行的检测的次数,在这个时间范围内他访问的次数十次或5次。然后对应的主端动作是可以是封禁,也可以是人机识别。最后是他封禁的时间,可以封禁他三十分钟甚至更长。我的配置是采用封禁的策略,在十秒内访问五次就直接对他进行封禁的一个动作,从而达到对网站业务的一个防护。


这里可以看到还有一个是人机识别的阻断类型,人机识别它是对客户端的请求进行一个脚印的一个过程,它会返回给客户端一串特殊的代码,可以理解为JS的代码,让客户端去执行。


点我领取阿里云2000元代金券,(阿里云优惠券的作用:购买阿里云产品,最后支付结算的时候,阿里云优惠券可抵扣一部分费用。

如果能够正常的执行成功,那么说明这个客户端是一个真实的客户端。校验成功过后,我们对他进行加白,让他能够正常访问。如果不能执行,那么这个客户端我们不认为他是一个正常的客户端,会把他拉黑一段时间。这个时间就是我们配置上配的那个时间。


需要注意,在WAF前面如果有高防或者CDN的场景下,我们不建议使用封禁的策略,建议使用人机识别的策略。


经过这段配置,其实我们的网站业务能够得到一定的缓解,如果不能缓解的话,可以根据我们上面配置的一个策略进行调整。由松到紧配置仅一点达到缓解业务的一个效果。


IP分析
得到一定缓解之后,我们继续分析一只去分析更加精确的攻击特征加以保护,提高我们防护的效果。


先看一下源IP分布没有什么特征,没有在几个段里面,然后去查市里面。其实各个市都有,也没有市和省的维度,那这两个不能作为一个明显的一个特征去做防护。


refer或者user-agent分析
那么第三个去通过refer或者user-agent去看,通过refer去看的时候,这边就不说了,因为没有特别明显的特征,但是再去看user-agent的时候,发现99%的请求都是来自于microsoft和Firefox浏览器的请求。


这个访问比例与我们请求的request,index.php的请求比例是非常接近的,然后我们拿着这个user-agent去对比前一天相同时间段的请求,是否有这个user-agent。


前一天的相同时间段下没有出现过类似这样的一个UA。那么我们认为当前时间段出现这个UA的请求是异常的,是恶意的。那么我们针对这个UA进行防护的时候,我们使用WAF的精准防护,控制精准的对这个UA进行配置阻断。


WAF的精准防护配置
image
配置方式是为了更加准确而使用两个条件,一个是user-agent,让它包含Firefox,另外一个是URL包含上述所说的index.php,同时满足这两个条件的,那我们同时对他进行阻断的操作。


通过这种方式能够有效的将所有恶意的请求排除在外。真正回到原站的请求都是我们判断是可信的一个请求,从而达到防护的效果。
更多参阅阿里云web防火墙配置文档


点我领取阿里云2000元代金券,(阿里云优惠券的作用:购买阿里云产品,最后支付结算的时候,阿里云优惠券可抵扣一部分费用。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
6天前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
22 4
|
2月前
|
监控 安全 数据挖掘
网络游戏服务器如何有效防护DDoS与CC攻击
随着网络游戏行业的蓬勃发展,其背后的服务器架构日益复杂,同时也面临着前所未有的网络安全威胁。其中,分布式拒绝服务(DDoS)和CC(Challenge Collapsar,一种针对网页的攻击方式)攻击尤为突出,它们通过大量伪造请求或恶意流量,使服务器资源耗尽,导致服务中断或响应缓慢。因此,保障网络游戏服务器的安全,有效防护DDoS与CC攻击,已成为游戏行业亟待解决的问题。
|
9天前
|
网络协议 Ubuntu 网络安全
|
2天前
|
搜索推荐 安全 网络安全
Discuz! X3.5自带参数防御CC攻击以及原理、开启防CC攻击后不影响搜索引擎收录的方法
Discuz! X3.5自带参数防御CC攻击以及原理、开启防CC攻击后不影响搜索引擎收录的方法
10 2
|
1月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
1月前
|
监控 Apache
HAProxy的高级配置选项-Web服务器状态监测
这篇文章介绍了HAProxy的高级配置选项,特别是如何进行Web服务器状态监测,包括基于四层传输端口监测、基于指定URI监测和基于指定URI的request请求头部内容监测三种方式,并通过实战案例展示了配置过程和效果。
74 8
HAProxy的高级配置选项-Web服务器状态监测
|
9天前
|
监控 Java Maven
springboot学习二:springboot 初创建 web 项目、修改banner、热部署插件、切换运行环境、springboot参数配置,打包项目并测试成功
这篇文章介绍了如何快速创建Spring Boot项目,包括项目的初始化、结构、打包部署、修改启动Banner、热部署、环境切换和参数配置等基础操作。
44 0
|
11天前
|
NoSQL Java 数据库连接
springBoot:整合其他框架&condition&切换web配置 (五)
本文档介绍了如何在Spring Boot项目中整合JUnit、Redis和MyBatis等框架,并提供了相应的依赖配置示例。同时,还展示了如何通过条件注解实现Bean的条件创建,以及如何切换Web服务器配置,从默认的Tomcat切换到Jetty。
|
1月前
|
运维 监控 安全
网络管理:防火墙和安全组配置详解
网络管理:防火墙和安全组配置详解
49 1
|
2月前
|
前端开发 开发者 Apache
揭秘Apache Wicket项目结构:如何打造Web应用的钢铁长城,告别混乱代码!
【8月更文挑战第31天】Apache Wicket凭借其组件化设计深受Java Web开发者青睐。本文详细解析了Wicket项目结构,帮助你构建可维护的大型Web应用。通过示例展示了如何使用Maven管理依赖,并组织页面、组件及业务逻辑,确保代码清晰易懂。Wicket提供的页面继承、组件重用等功能进一步增强了项目的可维护性和扩展性。掌握这些技巧,能够显著提升开发效率,构建更稳定的Web应用。
89 0