Typecho 自身不带 WAF 功能,防止 CC 攻击需在服务器层部署 Nginx 限流模块或接入第三方 WAF 服务。推荐优先使用云厂商 WAF 或自建雷池等反向代理 WAF,避免直接修改 Typecho 核心代码。
先说结论:Typecho 防 CC 攻击不能靠插件,必须在外层网关或 WAF 上配置频率限制。
- 适合:使用 Nginx/Apache 托管或已接入云 WAF 的 Typecho 站点
- 优先做:配置 URI 访问频率限制,重点防护/admin 和/action 接口
- 再验证:查看 WAF 拦截日志并确保管理员后台可正常登录
命令速用版
如果使用 Nginx 自建防护,可在配置文件中添加限流规则。以下配置限制单个 IP 每秒请求数,超出部分延迟处理:
http {
limit_req_zone $binary_remote_addr zone=cc:10m rate=10r/s;
server {
location / {
limit_req zone=cc burst=20 nodelay;
}
}
}若使用云 WAF 或自建 WAF 面板,需在控制台添加 CC 防护规则,设置触发频率和阻断动作。
为什么会这样
CC 攻击消耗的是 PHP 解析和数据库查询资源,而非单纯带宽。Typecho 动态页面频繁请求会导致服务器 CPU 飙升,正常用户无法打开网页。传统防火墙工作在网络层,无法识别合法的 HTTP 请求洪水,因此必须在应用层通过 WAF 识别异常频率。
分步处理
第一步:选择防护层级
云服务器用户直接开通云 WAF 服务,如华为云、腾讯云或阿里云 WAF。自建服务器可部署雷池社区版等反向代理 WAF,无需编译 Nginx 内核,通过 Docker 即可启动。
第二步:配置 CC 防护规则
在 WAF 控制台添加 CC 防护规则,识别模式选择 IP 或 SESSION。访问频次建议设置为正常访问速度的 3 到 10 倍,例如正常用户每分钟 20 次,可配置为 60 到 200 次每分钟。执行动作先选“观察”,确认无误后改为“阻断”。
第三步:针对 Typecho 路径优化
重点防护 Typecho 的后台和接口路径,如/admin、/action、/index.php。对这些高消耗 URI 设置更严格的限流规则,静态资源路径如/usr/themes 可放宽限制。
怎么验证是否生效
登录 WAF 控制台查看“防护事件”或“拦截日志”,确认是否有 IP 因触发频率限制被记录。使用压测工具模拟高频请求,观察服务器 CPU 占用率是否稳定,同时尝试正常访问博客页面和后台,确保未被误拦截。
常见坑
开启严格限流可能导致管理员后台无法登录,尤其是办公网出口 IP 固定时。建议将管理员 IP 加入白名单,或基于 Cookie/Session 维度进行防护,避免同一出口 IP 的正常用户被误伤。若 WAF 前使用了 CDN,需确保 WAF 能获取真实用户 IP,否则限流会针对 CDN 节点 IP 生效。
常见问题
Typecho 有防 CC 攻击插件吗?
不建议使用插件防御 CC 攻击。插件运行在 PHP 层,攻击流量到达插件时已消耗了服务器资源,应在 Web 服务器或网关层拦截。
云 WAF 和自建 WAF 怎么选?
云 WAF 配置简单且具备全球节点清洗能力,适合大多数站长。自建 WAF 成本低但需维护服务器,适合有运维能力的用户。
配置后网站打不开怎么办?
检查 WAF 日志是否误拦截正常 IP,暂时将规则改为“仅记录”模式,调整频率阈值后再开启阻断。
参考来源
- 华为云 WAF CC 攻击防护规则配置完全指南:从基础到实战
- 实战:Nginx 搭博客遇恶意攻击,免费 WAF 半小时筑牢防护墙 - MonkeyCode - 博客园
- 虚拟商城接口防护方案:独立公网搭配 WAF 抵御 CC 盗刷爬虫
- 配置 CC 攻击防护规则防御 CC 攻击
- CC 防护设置