带宽打满、CPU 拉满、正常用户打不开——CC 攻击的处理顺序很关键。这篇给出从确认攻击类型到上防护的完整步骤,附止损优先级。
第一步:先分清是 CC 还是流量型 DDoS
看两个指标:如果带宽跑满但 CPU 不高,偏向流量型;如果带宽不高但 PHP 进程打满、响应时间飙到十几秒,就是 CC。
命令上可以直接看:top 看 CPU 与负载,ss -s 看连接数,nginx 日志里按秒统计 IP 请求数。一个 IP 每秒几十上百次请求就是典型 CC 特征。
第二步:先止血,再分析
止血三条:把攻击特征 IP 段临时封掉;给动态页面加一层限速;开启 CDN 的防护模式。这三条能在几分钟内把站点从打不开恢复到能打开。
Nginx 层面的最小配置:limit_req_zone 按 IP 限速,配合 limit_conn 限制并发。对搜索页、登录页这类高开销入口单独收紧,比如每分钟 10 次。
不要一上来就封整段 C 段,很容易误伤真实用户。先封单 IP,观察再扩大。
第三步:找出被打的是哪个入口
统计日志里请求量最大的 URL。多数 CC 打的是搜索接口、登录接口、带参数的列表页——这些页面每次请求都要查库,成本最高。
对策是把这些入口做成静态或半静态:搜索结果页做短缓存、列表页做页面缓存、登录接口加验证码与频率限制。攻击成本一旦上升,效果就下来了。
第四步:上 CDN,隐藏源站
源站 IP 暴露是根本问题。上 CDN 之后,源站只允许 CDN 回源段访问,其余直连全部拒绝。这一步做完,大部分攻击就到不了你的服务器。
配置要点:源站防火墙只放行 CDN 的回源 IP 段;回源加自定义头部校验;开启 CDN 的 CC 防护与频率限制。
第五步:事后加固与复盘
复盘要看三个数:攻击持续时长、峰值 QPS、造成的实际损失(是否被打超流量、是否产生额外费用)。
加固清单:数据库连接池上限、PHP-FPM 进程数上限、静态资源分离到对象存储、关键接口加验证、日志保留以便追源。
平时就应该把「被打时怎么切 CDN」「怎么临时封 IP」写成一张操作卡片,出事时按卡片执行,比现场想快得多。
常见问题
被 CC 攻击要报警吗?
造成实际损失可以报案并保留日志证据。技术层面先做止损,别等。
免费 CDN 能挡 CC 吗?
能挡一部分低强度攻击,高强度的需要付费防护。关键是先隐藏源站 IP。
限速会不会影响正常用户?
合理设置阈值影响很小。建议对静态资源不限速,只对动态入口收紧。
—— 本文由 耗叔网站收录网 编辑整理,转载请注明出处。
苏公网安备32038202001011号