本文介绍了常见的CC攻击场景,并结合阿里云Web应用防火墙(Web Application Firewall,简称WAF)的相关功能给出具体的防护策略和配置,帮助您有针对性地防御CC攻击。

概述

您可以从以下不同的CC攻击防护场景中选择贴近您自身实际需求的场景,了解相关的防护设置:

大流量高频CC攻击

在大规模CC攻击中,单台傀儡机发包的速率往往远超过正常用户的请求频率。针对这种场景,直接对请求源设置限速规则是最有效的办法。推荐您使用WAF自定义防护策略功能的频率设置,配置限速策略,具体操作,请参见设置自定义防护策略

配置示例:您可以配置以下规则,当一个IP在30秒内访问当前域名下任意路径的次数超过1000次,则封禁该IP的请求10个小时。该规则可以作为一般中小型站点的预防性配置。配置示例:自定义防护策略-限速设置
在实际场景中,您需要根据自身业务需求调整防护路径和触发防护的阈值,并选择合适的处置动作,以达到更有针对性、更精细化的防护效果。例如,为了预防登录接口受到恶意高频撞库攻击的影响,您可以配置登录接口的地址(示例:使用前缀匹配逻辑符,将匹配内容设置为/login.php),并设置60秒内超过20次请求则进行封禁。限速规则示例
在使用CC防护时,请注意以下内容:
  • 处置动作中的滑块严格滑块验证用于校验请求是否来自于真实浏览器(而非自动化工具脚本),适用范围仅限于网页或H5,不适用于原生App、API等环境。针对原生App、API等环境,请将处置动作设置为阻断
  • 针对有可能被CC攻击防护策略误伤的接口或IP,您可以通过访问控制/限流白名单功能将其统一加白。具体操作,请参见设置访问控制/限流白名单
  • 请勿对App、API环境开启CC安全防护防护-紧急模式。
如果您开通了旗舰版的WAF实例,则您可以在频率设置中使用除IP和Session外的自定义统计对象字段,设置更细粒度、更多维度的限速功能。例如,由于针对IP的封禁会影响NAT出口,您可以使用cookie或者业务中自带的用户级别参数作为统计对象。下图配置针对业务中标记用户的cookie(假设cookie格式为uid=12345)进行统计,并使用滑块作为处置动作,避免误拦截。cookie统计

攻击源来自海外或公有云

CC攻击中经常出现很大比例的攻击来源于海外IP、公有云IP、IDC机房IP的情形。

对于面向中国用户的站点,在遭受攻击时可以通过封禁海外访问来缓解攻击压力。推荐您使用WAF的地域级IP黑名单功能,封禁中国境外IP地址的访问,具体操作,请参见设置IP黑名单地域级IP黑名单
如果您已经开启了WAF的Bot管理模块,则您可以使用爬虫威胁情报功能,封禁常见IDC IP库的爬虫IP,例如阿里云、腾讯云、IDC机房的IP段。
说明 许多爬虫程序选择部署在云服务器上,而正常用户很少通过公有云和IDC的源IP访问您的业务。
配置示例:您可以开启以下爬虫威胁情报规则,封禁腾讯云爬虫IP的访问。具体操作,请参见设置爬虫威胁情报规则爬虫威胁情报规则-腾讯云

请求特征畸形或不合理

由于很多CC攻击请求是攻击者随意构造的,在仔细观察日志后,往往会发现这些请求有很多与正常请求不相符的畸形报文特征。常见的畸形报文特征包括:
  • user-agent异常或畸形:例如,包含Python等自动化工具特征、明显格式错乱的UA(例如Mozilla///)、明显不合理的UA(例如www.example.com)。如果存在以上请求特征,可以直接封禁请求。
  • user-agent不合理:例如,对于微信推广的H5页面,正常用户都应该通过微信发起访问,如果UA来自于Windows桌面浏览器(例如MSIE 6.0),则明显是不合理的。如果存在以上请求特征,可以直接封禁请求。
  • referer异常:例如,不带referer或referer固定且来自于非法站点,则可以封禁这种请求(访问网站首页或第一次访问页面的情形除外)。针对只能通过某个站内地址跳转访问的URL,您可以从referer角度分析行为异常,决定是否封禁。
  • cookie异常:正常用户往往会在请求中带上属于网站本身业务集的一些cookie(第一次访问页面的情形除外)。很多情况下,CC攻击的报文不会携带任何cookie。您可以从这个角度出发,封禁不带cookie的访问请求。
  • 缺少某些HTTP header:例如,针对一些业务中需要的认证头等,正常用户的请求会携带,而攻击报文则不会。
  • 不正确的请求方法:例如,本来只有POST请求的接口被大量GET请求攻击,则可以直接封禁GET请求。

对于上述异常的请求特征,您都可以在特征分析的基础上,使用WAF自定义防护策略ACL访问控制规则设置对应的封禁策略。具体操作,请参见设置自定义防护策略

配置示例:
  • 拦截不带cookie的请求。拦截不带cookie
  • 拦截不带authorization头的请求。拦截不带authorization

滥刷接口(登录、注册、短信、投票等)

对于网页环境(包括H5)中的一些关键接口,例如登录、注册、投票、短信验证码等,推荐您使用数据风控功能进行防护。

数据风控在关键接口页面中插入JS代码,采集用户在页面上的操作行为和环境信息,综合判断发送至关键接口的请求是否来自于真实的用户(而不是自动化工具脚本)。数据风控判定的依据主要来自于人机识别的结果,跟发送请求的频率、来源IP没有关系,针对一些低频、分散的攻击请求有很好的效果。

注意 数据风控的判定依赖于开启防护后在正常请求中附带的验证参数,该功能不适用于不能执行JS的环境(例如API、Native App等)。为避免误拦截,建议您在启用数据风控前先在测试环境进行测试,或是先开启观察模式并跟云盾工程师确认后,再开启防护模式。

具体操作,请参见设置数据风控

恶意扫描

大规模的扫描行为会给服务器带来很大压力,除了限制访问请求频率外,您还可以使用扫描防护功能来加强防护效果。扫描防护支持以下设置:
  • 高频Web攻击封禁:自动封禁连续触发Web防护规则的客户端IP。
  • 目录遍历防护:自动封禁在短时间内进行多次目录遍历攻击的客户端IP。
  • 扫描工具封禁:自动封禁来自常见扫描工具或阿里云恶意扫描攻击IP库中IP的访问请求。
  • 协同防御:自动阻断阿里云全球恶意扫描攻击IP库中IP的访问请求。

具体操作,请参见设置扫描防护

扫描防护

App攻击

针对App攻击,除上述频率设置、地域级IP黑名单、ACL访问控制等手段,您也可以接入云盾SDK进行防护。

SDK方案通过将SDK集成到App中,对请求进行安全签名和校验,并结合各种硬件信息,综合识别请求是否来自于合法的App。只要不是来自于官方App的合法请求,一概拦截。这是一种“白名单”思路,只放行合法的请求,而不用去分析非法请求的特征。

SDK防护需要开启App防护模块后才可以使用。具体操作,请参见设置App防护

恶意爬取

对于很多资讯类网站(例如征信、租房、机票、小说等),大量的爬虫往往会造成带宽增大、负载飙升等异常,以及数据泄露等问题。针对爬虫问题,如果上述手段不能起到很好的防御效果,推荐您开启并使用Bot管理模块,更有针对性地防御爬虫。具体操作,请参见设置Bot管理白名单