华为云WAF CC攻击防护规则配置完全指南:从基础到实战
1. CC攻击:概念、原理与危害
CC(Challenge Collapsar)攻击是一种针对Web服务器或应用程序的应用层DDoS攻击手段。攻击者利用标准的GET、POST请求,大量访问那些涉及数据库操作或其他消耗系统资源的URI(统一资源标识符),不停地向目标服务器发送大量协议看似正常的数据包,最终造成服务器资源耗尽,无法响应正常用户的合法请求。
与传统的网络层DDoS攻击不同,CC攻击的请求报文在协议层面是完全合法的HTTP/HTTPS请求,这使得传统的防火墙和网络层防护设备难以有效识别和拦截。攻击者往往利用大量被控制的傀儡机(肉鸡)或者代理IP,以远超正常用户的请求频率持续对目标发起攻击。CC攻击防护正是通过对满足限速条件的源端(IP、Cookie、Header、Referer)或目的端(策略、域名、URL)进行限速,来精准识别并有效缓解CC攻击。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. CC防护规则配置前置条件
在开始配置CC攻击防护规则之前,需要确保满足以下前置条件:
2.1 网站已接入WAF
这是配置任何WAF防护规则的基础前提。您需要先将防护网站成功接入到WAF中。华为云WAF支持三种接入模式:云模式-CNAME接入、云模式-ELB接入和独享模式。云模式-CNAME接入适用于华为云、非华为云或云下的Web业务;云模式-ELB接入适用于已使用华为云独享型ELB进行流量转发的网站;独享模式则适用于对性能和隔离性有更高要求的大型企业网站。
2.2 独享引擎版本要求
如果使用独享WAF模式,需要确保独享引擎已升级到最新版本。具体操作请参考华为云官方文档中关于升级独享引擎实例的指引。
2.3 账号权限准备
操作账号需要具备WAF的管理权限。华为云WAF提供了三种系统角色:WAF Administrator(管理员权限,依赖Tenant Guest和Server Administrator角色)、WAF FullAccess(所有权限)、WAF ReadOnlyAccess(只读访问权限)。配置防护规则需要至少具备WAF Administrator或WAF FullAccess权限。
3. CC攻击防护规则配置完整流程
网站接入WAF后,CC攻击防护默认是不生效的。当网站突然遭遇大量异常流量攻击时,需要手动配置CC攻击防护规则来防御。以下是完整的配置步骤:
步骤一:登录Web应用防火墙控制台
登录华为云管理控制台,在控制台页面中选择“安全与合规” > “Web应用防火墙 WAF”,进入Web应用防火墙控制台。
步骤二:选择区域与项目
在控制台左上角单击图标,选择对应的区域或项目。如果已开通企业项目,可在左上角单击“按企业项目筛选”下拉框,选择所在的企业项目。
步骤三:进入防护策略页面
在左侧导航栏中单击“防护策略”。在防护策略列表中,单击目标策略名称,进入目标策略的防护规则配置页面。您也可以在“网站设置”页面,单击目标域名“防护策略”列的“已开启防护项”后的数字,快速进入网站绑定的防护策略的规则配置页面。
步骤四:开启CC攻击防护
单击“CC攻击防护”配置框,确认CC攻击防护规则已开启(显示为开启状态)。
步骤五:添加CC防护规则
在“CC攻击防护”规则配置列表左上方,单击“添加规则”。在弹出的“添加CC防护规则”面板中,根据业务需求配置各项参数。
步骤六:等待规则生效
添加或修改防护规则后,规则生效需要等待几分钟。规则生效后,可以在“防护事件”页面查询防护详情。
4. CC防护规则核心参数详解
在“添加CC防护规则”面板中,需要配置多个关键参数。正确理解每个参数的含义是制定有效防护策略的基础。
4.1 规则名称与描述
规则名称用于标识该条CC防护规则,建议采用有意义的命名以便后续管理。规则描述为可选参数,用于设置该规则的备注信息。
4.2 限速模式
限速模式决定了WAF如何区分单个Web访问者:
“IP限速”:根据IP地址区分单个Web访问者。这是最常用的模式,适用于WAF与访问者之间没有代理设备的情况。在大规模CC攻击中,单台傀儡机发包速率远超正常用户,直接对源IP设置限速是最有效的办法。
“用户限速”:根据Cookie键值或Header区分单个Web访问者。适用于需要通过业务逻辑识别用户(如登录后的用户ID)的场景。例如,根据Cookie中标识用户ID的字段来限速,可以防止同一账号在不同IP间切换发起恶意请求。
“其他”:根据Referer(自定义请求访问的来源)字段区分单个Web访问者。选择此模式时,“Referer”对应的“内容”填写为包含域名的完整URL链接,仅支持前缀匹配和精准匹配。
4.3 限速条件
限速条件用于配置防护规则要匹配的请求特征。请求一旦命中该特征,WAF则按照配置的规则处置该请求。至少需要配置一项条件规则才能生效;配置多个条件时,需同时满足所有条件规则才生效。最多可添加30个条件。
条件字段包括:路径(URL)、IP、Cookie、Header、Params、Method、Response Code、Response Length、Response Time等。当“条件”字段配置为“Method”时,“内容”不支持配置为“TRACE”和“CONNECT”,否则会导致解析报错。
4.4 限速频率
限速频率是单个Web访问者在限速周期内可以正常访问的次数。如果超过该访问次数,WAF将根据配置的防护动作来处理。例如,“限速频率”设置为“10次/60秒”,“防护动作”设置为“阻断”,则表示60秒内只能有10次访问请求,一旦超过10次,WAF就直接阻断该Web访问者。
限速频率的单位为次,范围为1~2147483647。限速周期的单位为秒,范围为1~3600。
4.5 防护动作
当访问请求频率超过限速频率时,WAF可执行以下防护动作:
“人机验证”:弹出验证码进行人机验证,完成验证后请求将不受访问限制。目前人机验证支持英文。需要特别注意的是,云模式-ELB接入不支持该防护动作。
“阻断”:直接阻断超过限速频率的请求。可设置阻断时间(lock_time),范围为0~65535秒。
“动态阻断”:上一个限速周期内请求频率超过“限速频率”被阻断后,在下一个限速周期内,拦截阈值将动态调整为“放行频率”。选择此动作时,除了配置“限速频率”外,还需要配置“放行频率”。
“仅记录”:仅记录超过限速频率的请求,不进行阻断。
4.6 放行频率(动态阻断专用)
放行频率仅在防护动作为“动态阻断”时生效。放行频率和限速频率的限速周期一致。放行频率小于等于限速频率,且可为0。当放行频率为0时,表示上个周期发生拦截后,下一个周期所有满足规则条件的请求都会被拦截。
这一机制的实际效果是:当攻击者在一个周期内触发了限速阈值被拦截后,WAF会在下一个周期以更严格的标准(放行频率)进行判断,从而实现动态收紧防护力度的效果。
4.7 阻断时间
当“防护动作”选择“阻断”时,可设置阻断后恢复正常访问页面的时间,单位为秒,范围为0~65535。
5. 标准模式与高级模式
CC防护规则支持两种工作模式:标准模式和高级模式。
5.1 标准模式(mode=0)
标准模式只支持对域名的防护路径做限制。在标准模式下,限速条件相对简单,仅能基于URL路径进行频率限制。这种模式适用于防护需求较为简单的场景。
5.2 高级模式(mode=1)
高级模式支持对路径、IP、Cookie、Header、Params等多个字段做限制。在高级模式下,可以配置conditions数组,定义更精细的限速条件。华为云WAF现在只支持创建高级CC规则防护模式。
高级模式的优势在于灵活性:可以根据业务场景组合多种条件。例如,可以同时针对特定URL路径和特定Cookie值进行限速,实现更精准的防护。
6. 实战配置场景与示例
6.1 场景一:基于IP限速拦截大流量高频攻击
这是最基础的CC防护配置,适用于一般中小型站点的预防性配置。您可以配置以下CC规则:当一个IP在30秒内访问当前域名下任意路径的次数超过1000次,则封禁该IP的请求10个小时。
配置参数建议:限速模式选择“IP限速”;限速频率设置为“1000次/30秒”;防护动作选择“阻断”;阻断时间设置为“36000秒”(10小时)。
6.2 场景二:基于Cookie的用户限速(防止同一账号多IP切换攻击)
在抢购、下载等场景中,恶意用户可能通过切换IP或终端来绕过IP限速。此时应使用“用户限速”模式,根据Cookie键值区分用户。
配置步骤:限速模式选择“用户限速”;用户标识选择“Cookie”,Cookie键值配置为标识用户ID的字段(如name、userid等);限速条件中“字段”选择“路径”,“逻辑”和“内容”根据实际情况配置;其他参数(限速频率、防护动作等)根据业务实际情况配置。
6.3 场景三:基于路径的精细化防护
对于登录接口、支付接口等敏感路径,需要设置比普通页面更严格的限速策略。例如,为了预防登录接口受到恶意高频撞库攻击,可以配置路径匹配规则。
配置时,在限速条件中“字段”选择“路径”,“逻辑”选择“前缀为”,“内容”设置为“/login.php”。这样只有访问登录路径的请求才会受到该CC规则的限制。
6.4 场景四:使用HWWAFSESID进行CC限速
HWWAFSESID是WAF在客户请求Cookie中插入的会话ID,用于WAF统计安全特性。在CC防护规则中可以使用该字段进行用户计数。
配置时:限速模式选择“用户限速”;用户标识选择“Cookie”,Cookie键值设置为“HWWAFSESID”;其他参数根据业务实际情况配置。
6.5 场景五:域名聚合统计与全局计数
“域名聚合统计”开启后,泛域名对应的所有子域名的请求次数合并限速(不区分访问IP)。例如,配置的泛域名为“*.a.com”,会将所有子域名(b.a.com、c.a.com等)的请求一起聚合统计。
“全局计数”仅云模式支持配置。默认为每WAF节点单独计数,开启后本区域所有节点合并计数。云模式-ELB接入不支持该功能。独享模式接入在华东-上海一、华北-乌兰察布一地域可提交工单申请开通。
7. 通过API调用创建CC防护规则
除了通过控制台界面配置,华为云WAF也提供了完整的API接口,支持通过编程方式创建和管理CC防护规则。
7.1 API接口概述
创建CC规则的API接口为:POST /v1/{project_id}/waf/policy/{policy_id}/cc。其中project_id为项目ID,policy_id为防护策略ID。
请求头中需要包含X-Auth-Token(用户Token)和Content-Type。
7.2 核心请求参数
name:规则名称
mode:防护模式,0为标准模式,1为高级模式
conditions:限速条件数组,高级模式下必填
action:防护动作
tag_type:限速模式,可选值为ip(IP限速)、cookie(用户限速-Cookie)、header(用户限速-Header)、other(Referer限速)、policy(策略限速)、domain(域名限速)、url(URL限速)
tag_index:用户标识,当限速模式为cookie或header时需要传递
limit_num:限制频率,单位为次
limit_period:限速周期,单位为秒
unlock_num:放行频率,仅防护动作为dynamic_block时需要传递
lock_time:阻断时间,防护动作为阻断时可设置
7.3 Java SDK代码示例
// 引入华为云WAF SDK依赖
// 创建CC防护规则
public void createCcRule() {
// 认证配置
ICredential credential = new BasicCredentials()
.withAk(System.getenv("HUAWEICLOUD_SDK_AK"))
.withSk(System.getenv("HUAWEICLOUD_SDK_SK"));
// 创建客户端
WafClient client = WafClient.newBuilder()
.withCredential(credential)
.withRegion(WafRegion.valueOf("cn-north-4"))
.build();
// 构建限速条件
List<CcCondition> conditions = new ArrayList<>();
CcCondition condition = new CcCondition();
condition.setCategory("url");
condition.setLogicOperation("equal");
List<String> contents = new ArrayList<>();
contents.add("/api/login");
condition.setContents(contents);
conditions.add(condition);
// 构建防护动作
CreateCcRuleRequestBody.Action action = new CreateCcRuleRequestBody.Action();
action.setCategory("block"); // block、captcha、dynamic_block、log
// 构建请求体
CreateCcRuleRequestBody requestBody = new CreateCcRuleRequestBody();
requestBody.setName("api-login-cc-rule");
requestBody.setMode(1); // 高级模式
requestBody.setConditions(conditions);
requestBody.setAction(action);
requestBody.setTagType("ip");
requestBody.setLimitNum(100);
requestBody.setLimitPeriod(60);
requestBody.setLockTime(600);
// 发送请求
CreateCcRuleRequest request = new CreateCcRuleRequest();
request.setPolicyId("your_policy_id");
request.setBody(requestBody);
CreateCcRuleResponse response = client.createCcRule(request);
System.out.println("规则创建成功,规则ID:" + response.getId());
}7.4 Python SDK代码示例
# 引入华为云WAF SDK
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkwaf.v1.region.waf_region import WafRegion
from huaweicloudsdkwaf.v1 import *
def create_cc_rule():
# 认证配置
credentials = BasicCredentials(
ak=os.getenv("HUAWEICLOUD_SDK_AK"),
sk=os.getenv("HUAWEICLOUD_SDK_SK")
)
# 创建客户端
client = WafClient.new_builder() \
.with_credentials(credentials) \
.with_region(WafRegion.value_of("cn-north-4")) \
.build()
# 构建限速条件
condition = CcCondition(
category="url",
logic_operation="equal",
contents=["/api/login"]
)
# 构建防护动作
action = Action(
category="block" # block、captcha、dynamic_block、log
)
# 构建请求体
request_body = CreateCcRuleRequestBody(
name="api-login-cc-rule",
mode=1, # 高级模式
conditions=[condition],
action=action,
tag_type="ip",
limit_num=100,
limit_period=60,
lock_time=600
)
# 发送请求
request = CreateCcRuleRequest()
request.policy_id = "your_policy_id"
request.body = request_body
response = client.create_cc_rule(request)
print(f"规则创建成功,规则ID:{response.id}")8. 不同接入模式的差异与注意事项
8.1 云模式-CNAME接入
这是最通用的接入方式,支持防护部署在华为云、非华为云或云下的Web业务。在CC防护方面,云模式-CNAME接入支持全局计数功能。
8.2 云模式-ELB接入
适用于已使用华为云独享型ELB进行流量转发的网站。该方式下WAF是旁路检测,不参与流量转发。需要注意:云模式-ELB接入不支持“人机验证”防护动作;不支持全局计数功能。
8.3 独享模式
适用于大型企业网站,对业务稳定性有较高安全防护需求。独享模式支持Response相关条件字段(Response Code、Response Length、Response Time、Response Header、Response Body)。全局计数功能在部分区域可提交工单申请开通。
8.4 引用表的约束
引用表功能仅云模式专业版、企业版支持,云模式入门版、标准版不支持。当“逻辑”关系选择“包含任意一个”、“不包含任意一个”、“等于任意一个”、“不等于任意一个”、“前缀为任意一个”、“前缀不为任意一个”、“后缀为任意一个”或“后缀不为任意一个”时,需要选择引用表。
9. 防护效果验证
配置完CC防护规则后,建议进行防护效果验证以确认规则是否按预期工作。
9.1 模拟攻击测试
以“基于IP限速”规则为例:假如已添加域名“www.example.com”,且已配置CC防护规则(限速频率1000次/30秒,防护动作阻断,阻断时间10小时)。清理浏览器缓存后,持续在30秒内访问域名“www.example.com/login.php”1000次。正常情况下,在第1001次访问该页面时,WAF会返回自定义的拦截页面。10小时后刷新目标页面,页面访问恢复正常。
9.2 查看防护事件
返回Web应用防火墙控制界面,在左侧导航栏单击“防护事件”,进入“防护事件”页面查看域名防护详情。在防护事件日志中,可以查看被CC规则拦截的请求详情,包括来源IP、请求URL、命中规则等信息。
10. 常见问题与最佳实践建议
10.1 限速频率的设置原则
限速频率的设置需要在防护效果和用户体验之间取得平衡。设置过低可能导致正常用户被误拦截;设置过高则可能无法有效防御攻击。建议先分析业务正常访问的流量特征(如峰值QPS、平均访问间隔等),在此基础上设置合理的限速阈值。
10.2 多规则协同防护
CC防护规则可以与其他WAF防护规则(如精准访问防护、黑白名单、Web基础防护等)协同工作,形成多层防护体系。例如,可以先通过IP黑白名单拦截已知的恶意IP,再通过CC防护规则限制异常高频访问。
10.3 自定义拦截页面
华为云WAF支持拦截页面自定义。当请求被CC规则阻断时,可以返回自定义的拦截页面,向用户展示友好的提示信息,提升用户体验。
10.4 规则生效时间
添加或修改防护规则后,规则生效需要等待几分钟。在规则生效前,新的防护配置不会对流量产生影响。因此在进行紧急防护配置时,需要预留足够的生效时间。
10.5 监控与告警
建议结合华为云的监控和告警服务,对WAF的防护事件进行实时监控。当检测到大量CC攻击拦截事件时,及时收到告警通知,以便快速响应。
11. 问与答
问1:CC攻击防护规则配置后多久生效?
添加或修改CC防护规则后,规则生效需要等待几分钟。规则生效后,可以在“防护事件”页面查询防护详情。
问2:“限速频率”和“放行频率”有什么区别?
“限速频率”是单个Web访问者在限速周期内可以正常访问的次数上限。“放行频率”仅在防护动作为“动态阻断”时使用,当上一个周期触发拦截后,下一个周期的拦截阈值会动态调整为“放行频率”。放行频率小于等于限速频率,且可为0。
问3:云模式-ELB接入为什么不支持“人机验证”防护动作?
云模式-ELB接入是旁路检测模式,WAF不参与流量转发。人机验证需要WAF在请求链路中插入验证码交互页面,而ELB接入模式下WAF无法在请求路径中插入交互内容。
问4:标准模式和高级模式有什么区别?
标准模式(mode=0)只支持对域名的防护路径做限制。高级模式(mode=1)支持对路径、IP、Cookie、Header、Params等多个字段做限制。华为云WAF现在只支持创建高级CC规则防护模式。
问5:如何防止CC防护规则误拦截正常用户?
首先,合理设置限速频率,建议基于业务正常访问流量特征进行分析后确定阈值。其次,对于登录、支付等敏感业务场景,可以使用“用户限速”模式(基于Cookie或Header)而非“IP限速”,避免同一办公室或同一NAT出口下的多个用户被误判。最后,可以通过“仅记录”模式先进行观察,确认规则效果后再切换为“阻断”或“人机验证”。
问6:CC防护规则可以防护所有路径吗?
可以。在配置限速条件时,如果“字段”选择“路径”,“逻辑”选择“前缀为”,“内容”设置为“/”,则可以对域名下的所有路径生效。也可以针对特定路径(如/login.php)进行精细化防护。


