本文介绍了判断是否遭受CC攻击的方法,并结合阿里云的相关功能给出具体的防护策略,帮助您有针对性地防御CC攻击。
什么是CC攻击
CC攻击( Challenge Collapsar 攻击)是DDoS攻击的一种常见形式,是专门针对于应用层的攻击,一般的DDoS攻击(例如SYN Flood、UDP Flood、ICMP Flood等)是针对于网络层的攻击。攻击者通过控制僵尸主机(俗称“肉鸡”)或代理服务器,向目标网站或服务发送大量伪装成合法用户的请求(如频繁访问网页或调用 API接口)。这些请求会持续消耗服务器的计算资源、连接数或带宽,最终导致服务器过载,无法响应正常用户的请求。
其典型影响包括网站响应迟缓、服务中断甚至完全瘫痪,表现为用户无法登录、交易失败、业务停滞等。这不仅会造成直接的经济损失,还可能严重损害企业的品牌形象。
判断是否遭到了CC攻击
CC攻击通常表现出与DDoS攻击类似的特征,例如服务器QPS升高、带宽占用增加以及系统资源耗尽等现象。高频CC攻击的峰值流量可能超过DDoS基础防护的黑洞阈值,导致云产品实例进入黑洞状态。而低频CC攻击的峰值流量虽未达到DDoS基础防护的黑洞阈值,不会引发黑洞机制,但由于持续消耗服务器计算资源或数据库连接能力,可能导致业务响应延迟、页面加载缓慢。
您可以通过如下方式判断是否遭受了CC攻击:
ECS实例监控
当遭受CC攻击时,ECS实例的公网带宽和同时连接数将高于正常业务阶段,Web进程和数据库相关进程所占用的CPU使用率也会上升。您可以根据这些监控指标进行判断。具体操作,请参见查看实例监控信息。
WAF侧日志分析
如果您已经将云资源接入了WAF,您可以先通过WAF的防护数据总览,查看是否存在高频的攻击源IP以及它们的地域来源,查看是否有共同的攻击UA特征或针对某特定URI/目录的频繁攻击。具体操作,请参见查看防护数据分析。
如果开启了日志服务且为防护对象开启了日志投递,还可以对日志进行分析。您可以使用下列查询语句进行查询,您需要将语句中的防护对象替换为您实际的防护对象名称,具体操作,请参见日志查询。
综合上述查询,如果发现某时段出现了异于正常业务时段的流量,说明可能遭受了CC攻击。
业务访问日志
部分应用程序会记录访问日志,您也可以通过分析这些日志进行排查,例如Linux系统的Nginx服务在默认配置下,访问日志位于/var/log/nginx/access.log
文件中,其中记录了用户的请求时间、请求路径、请求源IP等信息,可以结合awk
命令进一步做访问频率分析。
防御CC攻击
本文列举了如下防御CC攻击的方式,请根据具体业务场景进行选择:
防御方式 | 适用场景及特点 |
使用安全组、服务器系统防火墙等免费防护功能,或为云资源升配,防护效果有限。 | |
适用于网页或H5页面,可在被攻击时进行紧急业务恢复。 | |
只适用于静态页面。 | |
针对高频访问的IP或目录,需要了解正常业务时段的请求频率。 | |
适用于用户地域确定的情况。 | |
适用于爬虫、机器流量较多的情况,需要了解正常与异常访问业务用户的User-Agent。 | |
针对高频CC攻击,针对抵御流量型和资源耗尽型DDoS攻击。 |
不使用安全防护产品(不推荐)
当遭到CC攻击时,不借助防护产品进行防御较为低效,可以尝试为云资源升配,例如升级ECS实例的规格与带宽来承接攻击流量,也可以尝试排查出异常的访问源IP,将其加入ECS实例安全组或实例系统防火墙拦截名单中。
使用WAF防御CC攻击
对于按量付费版WAF建议开启流量计费保护功能。流量计费保护功能默认给按量付费实例设定一个QPS流量的阈值,当一小时内的峰值QPS流量超过该阈值时,WAF实例将进入沙箱,并且该小时不会出账(流量费和功能费会正常统计),实际总费用为0,从而避免因QPS暴涨而产生超高账单。更多信息,请参见流量计费保护。
按量付费版WAF在添加如下防护配置时会产生费用,详细信息,请参见计费说明。
对于高频CC攻击,其峰值流量可能超过DDoS基础防护的黑洞阈值,超过后WAF也会进入黑洞,无法进行防御,此时建议使用DDoS高防防御CC攻击。
使用CC防护模块
可以设置CC防护规则。如果您的网站无明显流量异常,将规则动作设为防护即可,避免误拦截。如果您发现存在此防护模式无法拦截的CC攻击,并出现网站响应缓慢,流量、CPU、内存等指标异常时,可以应用防护-紧急模式,并使用白名单防护模块加白信任的IP或URI,该防护策略会使用多条严格规则,适用于紧急业务恢复场景。
由于紧急模式可能会造成较多的误拦截,所以当攻击趋势减缓后建议调整规则动作为防护。
防护-紧急模式适用于网页或H5页面,但不适用于API或Native App业务,因为会造成大量误拦截。
使用自定义规则-JS验证
针对静态页面,可以通过配置自定义规则防护模块的方式,以下图为例,假设您的API接口都以.js
为URI后缀,可以将匹配字段设为不包含任一值:.js
,将防护类型设为访问控制,并将规则动作设为JS验证或滑块。表示只对除了您API接口的静态资源进行JS验证或滑块验证。
JS验证与滑块验证只适用于静态页面,您需要根据您实际的业务情况,调整对应的URI匹配内容。
使用自定义规则-频率控制
您可以通过配置自定义规则防护模块的方式实现频率控制,通过对比正常时段的访问频率,判断出一个合适的访问频率基线,并使用白名单防护模块加白信任的IP或URI。
设置合适的访问频率阈值是重要的,不恰当的阈值可能会导致正常业务被拦截,或无法有效抵御攻击。合适的访问频率阈值应根据实际业务请求量进行观察和判断。例如,静态网页可能每几分钟才接收到一次请求,API端点则可能每秒接收多次请求都是正常的。但如果某个单一IP地址突然以每秒数十次甚至数百次的频率向服务器发送请求,并且这种高频率的请求持续了一段时间,则可能表明存在潜在的攻击行为。
使用区域封禁
当您确定某地域或国家的用户不需要访问您的业务时,可以设置区域封禁,例如您的用户均位于中国境内,但发现频繁存在来自中国境外的IP访问,便可以封禁所有国际地区。
使用自定义规则匹配User-Agent
如果您分析日志发现存在较多的Bot流量,可以配置自定义规则防护模块,将匹配字段设置为User-Agent,匹配并拦截带有bot
的UA,具体的匹配内容需要根据实际的日志进行分析,更多信息,请参见通过自定义防护功能抵御异常UA攻击。
同理,如果正常请求您的业务时必然携带某Cookie或使用特定的Http_Method,也可以相应的对匹配字段进行设置。
使用DDoS高防防御CC攻击
针对高频CC攻击,其峰值流量可能超过DDoS基础防护的黑洞阈值,超过后WAF也会进入黑洞无法访问,此时您需要使用DDoS高防防御CC攻击,更多信息,请参见设置CC安全防护。