你的网站是不是突然访问变慢,服务器 CPU 飙升,日志里一堆 GET 请求,却看不到任何用户留言、下单、交互?
这很可能是遇到了CC攻击(Challenge Collapsar),一种最常见但又让小型网站最头疼的应用层攻击。
它不像DDoS那样直接“打瘫”网络,而是模拟真实用户高频访问网页,压垮你的应用和服务器负载。
与其天天清理垃圾日志、重启服务,不如学会如何通过Nginx限速 + 免费WAF防护,从源头阻断攻击路径。
一、什么是CC攻击?怎么判断网站被攻击了?
✅ 特征表现:
- 日志中出现大量相似路径请求,如: bash复制编辑
GET /index.php?id=1234 HTTP/1.1 GET /product.php?id=abc HTTP/1.1
- 同一个 IP 发出上千请求
- CPU占用飙升,MySQL 查询过多
- 网站间歇性卡顿,但能打开
✅ 简单判断方式:
bashtail -n 5000 /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -nr | head
如果出现某个 IP 请求数上千,就是典型的 CC 攻击。
二、用 Nginx 限速限制恶意访问频率
Nginx 内置 limit_req_zone
和 limit_conn_zone
可实现 请求频率限制 和 连接并发限制,非常适合对付 CC 攻击。
✅ 步骤 1:在 http 块中定义限速区域
nginxhttp {
limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
...
}
说明:
- 每个 IP 每秒只能请求1次(可调)
- 每个 IP 同时最多2个连接
✅ 步骤 2:在 server 或 location 中开启限速策略
nginxserver {
location / {
limit_req zone=req_limit_per_ip burst=5 nodelay;
limit_conn conn_limit_per_ip 2;
proxy_pass http://127.0.0.1:8080;
}
}
参数说明:
burst=5
表示最多允许突发5次nodelay
表示超过不排队,直接拒绝- 配置后若触发限制会返回 503 状态码
三、接入免费 Web 应用防火墙(WAF)加强识别能力
限速只能防住“高频简单攻击”,想要识别更复杂的攻击行为(如 UA 模拟、Refer 跳转伪造、参数注入等),还需要 WAF。
✅ 方案一:接入 Cloudflare 免费版
- 支持基础的 L7 防护、IP信誉库、速率限制、Bot防护
- 免费版本即可开启浏览器挑战、五秒盾、地理封锁等功能
- 配合 DNS 代理模式实现隐藏真实服务器IP
使用建议:
- 设置“Under Attack”模式临时屏蔽攻击
- 自定义规则封锁 User-Agent / Cookie 攻击特征
- 启用 JS挑战或验证码验证
✅ 方案二:使用开源 WAF 模块(如 OpenResty + LuaWAF)
- 自定义规则丰富,适合企业或有开发能力用户
- 支持正则匹配、请求频率分析、日志记录、自定义拦截页
- 可配合 Redis 做攻击源记录+封禁
四、补充防护策略建议
防护策略 | 工具/方式 |
---|---|
屏蔽高频IP | fail2ban + nginx日志规则 |
关闭空User-Agent | Nginx条件过滤或Cloudflare规则拦截 |
分布式攻击识别 | 需要WAF或接入日志分析系统(ELK等) |
IP白名单保护后台接口 | Nginx location中配置 allow/deny |
启用CDN静态缓存 | Cloudflare、阿里云CDN、腾讯云CDN等 |
日志监控和预警 | 使用GoAccess或Uptime Kuma告警配置 |
五、建议的组合策略搭配
你的网站情况 | 推荐防护策略组合 |
---|---|
WordPress站点常被刷 | Cloudflare + Nginx限速 + UA限制 |
低带宽轻量服务器 | 只用 Nginx 限速 + 屏蔽 Refer 参数 |
多站部署/API服务 | Nginx限速 + 免费WAF + Uptime监控 |
业务型电商系统 | 企业级WAF(如AWS WAF)+ CDN全球防护 |
做好防护不意味着就永远高枕无忧,但至少能在攻击来临时,不让网站第一时间瘫掉。
真正实战的安全,不在“封得住”,而在于“扛得住 + 拉得回”。
提前配置好Nginx限速机制,再借助Cloudflare等WAF做行为识别,能有效缓解绝大多数 CC 场景。
如果你的网站已经被打了几次,现在就开始部署,不要等下一次才后悔。