DDoS和CC攻击防护方案详解:服务器加固+高防CDN多层防御实战

网站流量突然暴涨、CPU瞬间跑满、打开网页转圈几分钟——这是典型的DDoS/CC攻击现场。DDoS靠海量流量打爆带宽,CC靠大量慢请求拖垮应用,两者叠加足以让没有防护的站点直接瘫痪数小时。本文给出一套完整可落地的DDoS/CC攻击防护方案:从服务器内核参数、Nginx限流到高防CDN接入,分层部署,即使单点被击穿,整体防御仍然在线。

一、先分清攻击类型:DDoS和CC的区别

防御方案的第一步是搞清楚对手出的是什么牌:

  • DDoS(分布式拒绝服务):攻击者控制海量肉鸡(僵尸网络)向目标IP/域名发起超大流量攻击,常见类型有SYN Flood、UDP Flood、ICMP Flood。特征是带宽或连接数被打满,服务器可能还没处理请求就先断网了。
  • CC攻击(Challenge Collapsar):模拟真实用户,高频请求消耗CPU、数据库、PHP进程等资源。特征是流量不大但连接数和并发极高,日志里能看到大量集中攻击某个URL的请求。

判断方法很简单:攻击时看「带宽占用」还是「CPU/连接数」异常。带宽被打满优先查DDoS,服务器资源被拖垮优先查CC。

二、服务器端防护:内核参数与Nginx限流

源站先做基础加固,能挡掉大部分小规模攻击。先优化Linux内核网络参数,提升抗SYN洪水能力:

# /etc/sysctl.conf 追加以下参数后 sysctl -p 生效
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_syn_retries = 2
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_tw_reuse = 1
net.core.somaxconn = 4096
net.ipv4.icmp_echo_ignore_all = 0  # 生产环境可改为1忽略ICMP

再用Nginx做连接与请求双重限流,这是对付CC攻击最有效的一招:

# nginx.conf 的 http 块定义限流区
limit_req_zone $binary_remote_addr zone=cc_limit:10m rate=5r/s;
limit_conn_zone $binary_remote_addr zone=conn_limit:10m;

# server 块内应用到动态请求
location ~ \.php$ {
    limit_req zone=cc_limit burst=10 nodelay;
    limit_conn conn_limit 20;
    limit_rate_after 512k;
    limit_rate 1024k;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    include fastcgi_params;
}

同时建议用防火墙封禁攻击特征端口和扫描行为:

# iptables 防御 SYN Flood:每秒超过20个新连接的同IP直接丢弃
iptables -A INPUT -p tcp --syn -m limit --limit 20/s -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# 封禁已确认的攻击IP段
iptables -A INPUT -s 1.2.3.0/24 -j DROP

三、规模化防护:高防CDN与高防IP接入

服务器端规则最多扛住小流量攻击,一旦攻击流量超过机房带宽(常见清洗阈值在几G到几十G),再多的Nginx规则也无济于事,因为流量在到达服务器之前就已经把线路堵死了。此时必须引入云端清洗:

  • 高防CDN:将域名解析到高防CDN节点,攻击流量在边缘节点被识别和丢弃,只有合法流量回源,适合Web站点。
  • 高防IP:把源站IP隐藏在高防IP后面,适合游戏、APP等非HTTP业务。

以速度网络云防护为例,接入流程三步即可完成:控制台添加域名/业务 → 获取分配的CNAME或高防IP → 到DNS服务商处修改解析。开启DDoS清洗与CC防护后,控制台可以实时看到攻击流量趋势、攻击类型分布和拦截次数。选择服务商时重点看三件事:清洗能力(带宽上限)回源协议是否支持HTTPS是否提供CC阈值自定义,三者缺一不可。

四、攻击发生时的应急响应流程

攻击不会挑工作时间,提前把应急流程写下来,被打时才能冷静操作:

  1. 判断攻击类型:登录服务器执行 netstat -antp | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head -20,看连接来自哪些IP,是分布式的还是集中的。
  2. 先止损再分析:立即把域名切到高防CDN或高防IP,源站放行云端回源IP段,通过安全组/防火墙把其他来源全部拒绝。
  3. 临时封禁与限流:对集中攻击源用iptables批量封禁;对CC攻击立即调低Nginx限流速率。
  4. 记录证据:保存攻击日志、流量截图、攻击时间窗口,用于后续防护策略调优。
  5. 复盘调优:攻击结束后把清洗阈值、封禁策略、源站规则整体复查一遍,补上被绕过的缺口。

总结

DDoS/CC攻击防护没有银弹,靠的是「服务器加固 + 云端清洗 + 应急流程」三层配合。小流量靠sysctl参数、Nginx限流和iptables就能解决;大流量必须借助高防CDN/高防IP在云端清洗,源站做好回源白名单即可。建议每个站点都把本文的应急流程打印出来贴在运维文档里,攻击来临时不慌不乱,才是最好的防御。

给TA打赏
共{{data.count}}人
人已打赏
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
在线客服
在线客服
热线电话
QQ客服
电子邮箱
suduwangluo