小游戏后端遭遇 CC 攻击时,最稳妥的办法是尽快将流量牵引到云厂商的高防 IP 或 WAF 服务,同时隐藏源站真实 IP。
核心结论:不要试图在源站硬抗,优先通过云端防护清洗流量,确保业务连续性。
- 判断:确认是流量型攻击还是请求型 CC 攻击
- 动作:接入云防护服务并修改 DNS 解析
- 验证:观察业务日志和防护报表确认攻击拦截
接入流程与配置
CC 防护通常需要在云控制台操作,以下是主流云厂商的紧急接入路径:
1. 阿里云:控制台 > 云安全 > Web 应用防火墙 > 网站配置 > 添加域名。
2. 腾讯云:控制台 > 云产品 > 网络安全 > Web 应用防火墙 > 域名接入。
3. 配置 HTTPS 证书:在 WAF 控制台上传 SSL 证书私钥和公钥。若未上传,WAF 无法终止 SSL 连接,会导致用户访问出现证书错误或握手失败。
4. 获取 CNAME:配置完成后,控制台会分配一个 CNAME 地址(如 xxx.waf.com)。
修改 DNS 解析
登录域名 DNS 控制台,添加或修改解析记录:
- 记录类型:CNAME
- 主机记录:@ 或 www
- 记录值:填写 WAF 分配的 CNAME 地址
- TTL:切换前建议调低至 600 秒,以便出错时快速回滚
切换期间密切监控业务状态,确认解析生效后流量经过 WAF。
源站安全加固
接入 WAF 后,必须限制源站只允许 WAF 回源 IP 访问,否则攻击者可直接扫描源 IP 绕过防护。
方法一:安全组配置(推荐)
在云服务器安全组添加入站规则:
- 协议:TCP
- 端口:80/443 或游戏业务端口
- 授权对象:填写云厂商提供的 WAF 回源 IP 段(需在控制台查询最新段)
- 策略:允许
同时添加一条优先级最低的规则,拒绝所有其他 IP 访问 80/443 端口。
方法二:Nginx 配置限制
http {
# 定义 WAF IP 段
geo $waf_ip {
default 0;
1.1.1.0/24 1; # 替换为实际 WAF 回源段
2.2.2.0/24 1;
}
server {
listen 80;
server_name game.example.com;
# 非 WAF IP 直接拒绝
if ($waf_ip = 0) {
return 403;
}
location / {
proxy_pass http://backend;
}
}
}注意:IP 段需从云厂商文档获取并定期更新,配置错误可能导致所有流量被阻断。
验证与故障排查
1. 验证防护生效:
查看 WAF 控制台报表,确认是否有拦截计数。观察源站负载,CPU 和带宽应回落到正常水平。
2. 验证客户端访问:
使用正常客户端测试游戏登录和数据交互,确保无误报拦截。检查日志,确认来源 IP 多为防护节点 IP 而非真实用户 IP。
curl -I https://game.example.com检查响应头中是否包含 WAF 特征字段(如 Server 字段变化)。
3. 常见故障排查:
- SSL 握手失败:检查 WAF 端证书是否过期或未正确上传。
- 源站无法访问:检查安全组白名单是否遗漏 WAF IP 段,或 Nginx 配置逻辑错误。
- 真实用户被拦截:调整 WAF 频率限制阈值,避免策略过严。
- WebSocket 中断:确认防护服务是否支持 WebSocket 协议,小游戏常用此协议需单独开启。