Cloudflare 之外,源站还要补哪些防护
很多站长把域名往 Cloudflare 一挂,看到 DNS 变橙云就安心了。真正的问题出现在源站 IP 被翻出来那天——攻击者不需要绕过 CDN,直接打你的真实 IP 就行。100M 带宽的独服,几 G 的流量就能把端口打满,Cloudflare 那边显示一切正常,用户却打不开页面。这篇文章聊的是 CDN 之外,源站自己该怎么补那几道锁。
先把源站 IP 藏住,回源只认 Cloudflare 的段
源站暴露的路径比想象中多。历史 DNS 记录、邮件头、子域名没走代理、SSL 证书的透明日志,都能把真实 IP 扒出来。我一般先做两件事:查一遍 crt.sh 之类证书日志里有没有裸露的子域,再把所有非 HTTP 端口关掉。
真正管用的是防火墙白名单。只放行 Cloudflare 官方公布的 IP 段访问 80 和 443,其他来源一律 drop。规则写起来不复杂,iptables 或云厂商安全组都能做。这样即使 IP 泄露,攻击者直接打源站也进不来,流量必须走 CDN 那一层。
代价是运维麻烦一点。Cloudflare 的段会更新,得定期同步;自己在家用宽带调试的时候也会被挡在外面,需要临时加白名单。省下这个麻烦的后果,就是源站裸奔。
限速和 WAF 规则,挡住七层的小规模骚扰
四层打不动之后,攻击往往转到七层。CC 攻击模拟正常请求,几万台肉鸡刷你的搜索页或者登录接口,CPU 和数据库连接数先扛不住。Cloudflare 免费版自带的基础防护挡不住这种精细化攻击,得自己写规则。
我常用的组合是这样:
- 对 /search、/login 这类动态接口单独设速率限制,比如同 IP 每分钟 20 次,超了先 challenge 再封
- WAF 自定义规则里拦掉异常 UA、空 Referer 的高频 POST,以及明显是脚本的特征
- 开 Bot Fight Mode,把已知的爬虫和自动化工具挡在缓存之外
规则别写太死。限速阈值卡太严,正常用户也会被误伤,尤其是手机端切换 IP 频繁的场景。我一般先放到观察模式跑两天,看日志里哪些是被误拦的流量,再决定要不要收紧。
流量超过源站带宽时,CDN 规则救不了你
这是最容易被忽略的一层。Cloudflare 再强,回源流量最终还是要打到你自己的机器上。如果你的服务器只有 100M 带宽,攻击者用 5G 的流量持续打,CDN 那层清洗完之后剩下的回源请求,照样能把你的上行塞满。
判断标准很简单:看攻击峰值有没有超过你源站的带宽上限。100M 独服大概能扛住几十 M 的持续回源,再往上就得靠高防机房在入口做清洗。美国西雅图这类机房的高防产品通常带 100M 独享加清洗能力,美国西雅图高防服务器49(Platinum-8168*2 / 64G / 100M / 月付 $469.00)就是给这种场景准备的。如果攻击规模再大,得上到带 G 口带宽的配置,把清洗和回源分开走。
换我我会先确认自己的真实攻击峰值。多数中小站的攻击量级在 10G 以内,100M 高防独服配合 CDN 白名单基本够用;如果你的业务本身是游戏、金融这类高价值目标,别省这个钱,直接上大带宽高防,比如 美国硅谷高防服务器 XLV(Gold-6133*2 / 64G / 100M / 月付 $429.00),带宽和清洗都在机房侧完成,源站只收干净流量。
说到底,Cloudflare 是盾,但盾后面的门得自己锁。源站白名单、七层限速、带宽兜底这三层配齐,才算把网站安全的基本盘搭起来。预算有限的话,前两层几乎零成本,先做;带宽兜底按攻击量级决定要不要上高防,别等被打瘫了再补。