防火墙里刚加完一长串 deny,后台看着清清爽爽,结果点开首页转半天,图片加载一半,客户那边说表单提交直接 502——CC攻击封禁IP后网站反而更不对劲,这几乎是每个被 CC 摸过的站都会踩的一脚。封禁这动作太顺手了,顺手到很多人把它当成止血带用,可它更像一把没开刃的刀,砍不到最疼的地方,还容易划着自己的手。

cc攻击封禁ip后网站反而更不对劲,先去日志里找答案
别急着往规则表里再加一行。把 access.log 拉下来,把被封的那批 IP 单独筛出来,看三列就够了:UA、请求的 URL、返回码。CC 的典型特征是短时间内大量请求集中在搜索、登录、下单这类吃数据库的动态地址上,UA 随便伪造,所以光看 IP 判断身份很不靠谱。要是被误封的名单里混着 Bytespider、Googlebot 或者一堆看起来正常的浏览器 UA,那不是攻击绕过了你,是闸门开得太大。
还有一种更隐蔽的情况:站前面挂了 CDN 或者反向代理,日志里刷屏的那一片 IP 压根不是访客,是回源节点。真实来源 IP 藏在 X-Forwarded-For 头里,拿不到或者没配 real_ip 模块,一封就等于把整个加速层挡在门外。表现出来往往是一部分地区能打开、另一部分地区一直转圈,很多人第一反应是线路出问题了,来回折腾半天。
封错人的概率,比想象中高
蜘蛛被封这事,说小也小,说大能让人头疼几个月。爬虫一天来几十次,撞上你限速最狠的那几分钟被拦住,它不会跟你申诉,只会默默降低抓取频率。等你发现收录不动,往往已经过去好几周。所以白名单这一步别省,主流搜索引擎的 IP 段以官方页面公布的为准,写成 allow 放到 deny 前面。
除了蜘蛛,容易被误伤的还有几类:监控探针,被挡住了以后你看到的所有告警都是假的;负载均衡的健康检查地址,封掉它,后端会被判定为不可用而自动摘掉,表现出来就是网站时好时坏;还有自己办公室的出口 IP 和运维跳板机,一封,后台进不去,第一感觉就是站点彻底废了。这些坑我踩过不止一次,后来干脆在封禁脚本开头先把白名单文件 source 进来,省心。
规则越堆越多,机器自己先扛不住
iptables 的 deny 是逐条匹配的。列表涨到几千条以后,每个进来的包都要从第一条走到最后一条,CPU 软中断肉眼可见地往上爬,小配置的机器直接被打满——这就有点意思了,攻击没把站打趴,自己的防火墙先把机器拖垮了。真想堆黑名单,用 ipset 打包成哈希查,一条规则就够,加 IP 只是往集合里塞,不用重载。
nginx 这边也有类似的坑。deny 写在 http 块还是 server 块,规则顺序对不对,加完有没有 reload,每一步都能出岔子。见过最冤的一种:规则全改对了,忘了 nginx -s reload,守着一份没生效的配置研究一晚上。另外 403 这个返回码给真人看不太友好,搜索引擎爬到一片 403 也会不高兴,拦截页尽量做得像回事,别让正常访客以为自己被拉黑了。
攻击没停,只是换了个马甲
代理池、秒拨 IP、被感染的肉鸡,这三样凑一块,IP 就是一次性消耗品。你封一个段,对面转头换个出口继续。所以单靠封 IP 想彻底解决 CC,基本是做梦。
更要命的是 CC 属于应用层的东西。请求已经打到 PHP 或者 Java 进程里,SQL 已经跑了,内存已经吃了,这时候才在网卡层把它拦住,前面的机器早累趴了。真正的瓶颈常常在后端:数据库连接池打满、Redis 超时、php-fpm 进程数被占死。封 IP 只是把源头捏小一点,程序内部那堆账还得单独算。
限速、缓存、人机校验,往往比封禁见效快
与其一个个封 IP,不如先把请求速率管起来。nginx 的 limit_req、limit_conn 配好,按 IP 或者按 URI 做令牌桶,超了就返回 429 或者排队,正常访客基本没感觉,脚本刷子立刻难受。搜索接口、登录接口这种最招 CC 的地方,前面挂个人机校验,成本很低,见效却快。
再往上一层,让动态请求变少。列表页、详情页能静态化就静态化,热点数据塞进对象缓存,数据库的压力能降一大截。前置 CDN 打开 CC 防护,让清洗发生在离源站远一点的地方,源站只接干净流量。这些手段叠起来,比在服务器上跟攻击者拼黑名单效率高得多,也省得每天盯着规则表加行。
一份可以照着走的检查清单
事后复盘我一般按这个顺序走一遍:一、白名单有没有覆盖蜘蛛、监控、CDN 回源段、自家出口 IP;二、黑名单是不是用 ipset 或者网段聚合,规则数是不是还在可控范围;三、日志里返回码的分布,403 和 502 的比例有没有异常;四、后端进程数、数据库连接数、慢查询是不是同时抬头;五、限速、缓存、人机校验这三层到底开没开;六、拦截页面对真人和对蜘蛛是不是都还算友好。六条走完,八成能判断是封错了对象,还是压根没封到正经地方。
封禁不是不能用,它只是最后一公里的手段,不是第一反应。真要下手,先确认封的是不是人,再确认机器扛不扛得住这么多规则,最后想想有没有比封更快见效的办法。攻击者会不会再来——大概率会,做站的都懂,防护这事没有收工那天,只有下次被摸之前准备得够不够。眼下先把白名单和限速补上,比什么都实在。
【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!