上周三凌晨两点,一个做跨境电商的哥们给我发消息:他的美国服务器上的Shopify独立站被CC打了,nginx直接502,后台CPU飙到98%,客户下单全部超时。他用的那台月付12刀的VPS,没有任何CC防护,裸奔了整整8个月。
这事在IDC圈太常见了。美国机房带宽便宜、IP多,拿来建站确实香,但CC攻击(学名叫HTTP Flood)专挑这种"看着便宜但没人管"的机器下手。攻击者用代理池发大量合法HTTP请求,你的nginx一个一个处理,CPU和内存直接被吃干抹净。好消息是,现在不少美国服务器商家已经把免费CC防护做成标配了——但"免费"两个字里面的水分,得你自己拧干。
免费CC防护到底防了个啥
先说清楚,CC防护不是一个东西,它是一整套分层拦截的逻辑。市面上号称"免费CC防护"的美国建站服务器,实际给你的东西差别巨大:
- 最底层:limit_req 速率限制。nginx内置模块,按IP限制每秒请求数。比如设成 rate=10r/s,单个IP每秒最多10个请求,超了直接返回503。这玩意儿成本为零,但只能挡最蠢的攻击。
- 中间层:WAF规则匹配。检查User-Agent、Referer、请求频率分布,把明显不是真人的请求拦掉。比如同一IP 5秒内请求了200次同一个URL,正常用户不会这么干。
- 最外层:流量清洗。攻击流量先过一遍清洗中心,把恶意包剔掉,干净流量再回源。这层才是真正能扛住大流量CC的东西,但成本也最高。
所谓"免费",大部分商家给的就是第一层,顶多到第二层。第三层?要么加钱,要么根本没有。所以选机器的时候,别光看"免费CC防护"四个字,得问清楚到底给到哪一层。
说到选机器,如果你正在对比不同美国服务器的防护配置,StrataServer那边是把limit_req和基础WAF打包进标配的,不用额外掏钱开防护套餐,对中小站点来说算是省了一笔。但大流量业务还是得看有没有清洗能力,这个后面表格里会拆。
3家美国机房防护参数实测对比
我拿手上3台不同商家的美国服务器(洛杉矶机房),用wrk跑了个简单的HTTP Flood模拟,看看各家"免费防护"到底能扛多少:
| 对比项 | 商家A($12/月VPS) | 商家B($35/月云主机) | 商家C($89/月独立服务器) |
|---|---|---|---|
| 免费CC防护层级 | 仅iptables基础规则 | limit_req + 简易WAF | WAF + 上游清洗(5Gbps) |
| 扛住QPS(单IP) | 约200就502 | 1500左右开始丢包 | 8000+仍正常响应 |
| 误伤正常用户概率 | 不存在(因为没防) | 中等,burst没调好就误伤 | 低,有行为分析保底 |
| 被打后恢复时间 | 手动重启,10-30分钟 | 自动封IP,3-5分钟 | 清洗切换,30秒内 |
| 适合的业务量级 | 个人博客、测试环境 | 日UV 5000以下的企业站 | 电商、SaaS、日UV 5万+ |
(注:测试环境为2核4G配置,攻击模拟使用wrk -t4 -c500 -d60s,数据仅供参考,实际表现跟机房网络和业务类型关系很大。)
这3个坑踩了等于白花钱
坑一:带宽超售。美国机房带宽便宜不假,但有些商家一台母机塞30个VPS,共享1Gbps口。平时没事,一被CC打,所有VPS一起卡死。你买的"100Mbps独享",实际上可能跟隔壁29个邻居抢。选之前一定问清楚是独享还是共享,独享带宽写没写进合同。
坑二:防护阈值虚标。销售跟你说"免费防10G CC",你信了。结果真被打了,2G就把你机器干趴了。为啥?因为那个10G是机房入口的总清洗能力,分到你那台VPS上的可能就500Mbps。一定要问:分配到单机的防护带宽是多少,别听总量。
坑三:没有告警。被CC打了你根本不知道,直到客户投诉"网站打不开"。靠谱的服务商应该有流量异常告警(邮件/短信/webhook),发现QPS突然飙了3倍就通知你。没这功能的,等于蒙着眼睛挨揍。
另外说句得罪人的话:如果你的业务是面向中国大陆用户的电商或内容站,美国服务器的物理延迟(通常180-250ms)会让页面加载慢到用户直接关浏览器。这种情况下免费CC防护再香也白搭,用户根本等不到页面渲染出来。老老实实选国内备案机器或者走CN2回国的香港机器,别跟物理定律较劲。
排障的时候,这条命令能帮你快速判断是不是正在被CC:
# 查看当前80/443端口的ESTABLISHED连接,按来源IP统计TOP20
ss -nt state established '( dport = :80 or dport = :443 )' | \
awk 'NR>1{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20
如果某个IP出现几百上千条连接,大概率就是CC攻击源
临时封掉(iptables):
iptables -I INPUT -s 可疑IP -j DROP
补充一嘴:CC攻击的底层原理是利用Rate Limiting(速率限制)缺失的漏洞,通过大量合法HTTP请求耗尽服务器资源。而再往底层看,比如TCP SYN Cookie,是在内核层面处理半连接队列溢出,防的是SYN Flood而不是CC,但很多商家把这两个混在一起吹。你选机器的时候得分清楚,CC防护和DDoS防护是两码事,别被"免费防100G DDoS"的口号忽悠了,那跟CC防护压根不是一个层面的东西。
关于作者:老周,前深圳某二线IDC的L7防护运维,干了8年专门给跨境客户擦CC攻击的屁股。现在自己接点小活,帮小团队选机器、调nginx、写WAF规则。脾气不好,看到limit_req不设burst的配置会骂人。
你的站要是还没上任何CC防护,今晚就去把nginx的limit_req配上,哪怕先用最保守的参数。同时看看你现在用的美国服务器有没有自带防护层,没有的话趁早换。被打了再找方案,数据丢了、客户跑了,那可不是几百块服务器钱能补回来的。