DDoS/CC 攻击防护方案全解析:云清洗与源站加固双层防御实战

很多站长第一次遇到攻击时的反应都是相似的:服务器 CPU 瞬间拉满、带宽被打穿、网站直接打不开,重启之后过几分钟又挂。如果没有提前做好 DDoS/CC 攻击防护方案,攻击一来就是宕机、流量费暴增、搜索引擎降权,损失远超想象。本文从攻击原理出发,给出一套”云端清洗 + 源站加固”的双层防御落地方案,每一条配置都可以直接照着做。

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

虽然经常被一起提起,但 DDoS 和 CC 是两种完全不同的攻击,防御手段也完全不同:

  • DDoS(分布式拒绝服务):流量型攻击,通过大量肉鸡或僵尸网络发起 UDP Flood、SYN Flood、ICMP Flood 等,目标是打满服务器带宽或耗尽连接资源,让正常用户无法访问;
  • CC(Challenge Collapsar):应用层攻击,模拟正常用户发起高频请求,消耗服务器的 CPU、数据库连接和业务逻辑处理能力,特点是流量不大但”精准打击”。

一句话总结:DDoS 靠”量”,CC 靠”精”。前者需要大带宽清洗来消化,后者需要规则限速来压制。搞清楚这一点,下面的方案才看得懂。

二、第一层防线:云高防清洗,把攻击流量挡在源头

单靠一台服务器的带宽去硬扛流量型 DDoS 是不现实的,正确做法是把防护前置到云端的清洗机房:网站流量先经过高防节点过滤,攻击流量在云端被清洗掉,只有干净流量才回源到服务器。选云防护服务时重点看四点:

  1. 清洗能力:防护峰值要覆盖业务可能遭遇的最大攻击量,比如 100G、300G、500G 等档位;
  2. CC 防护策略:是否支持频率限制、人机校验、IP 黑白名单等应用层防护;
  3. 回源 IP 隐藏:攻击者一旦拿到真实服务器 IP,可以直接绕过云端打源站,所以回源地址必须严格保密;
  4. 接入速度:能否在攻击发生时分钟级切换接入,减少业务中断时间。

速度网络的 DDoS 高防与 CC 防护服务正是按这个思路设计:多线 BGP 高防机房、防护峰值可弹性升级、支持自定义 CC 防护策略,接入后建议同时开启源站白名单,只放行高防节点的回源 IP,把源站彻底藏起来。

三、第二层防线:源站 Nginx 加固,纵深防御

即使有云清洗在前面挡着,源站也要做纵深防御,防止单点失守。第一段配置是连接数与请求频率限制:

http {
    # 单 IP 连接数限制
    limit_conn_zone $binary_remote_addr zone=perip:10m;
    # 单 IP 请求频率限制
    limit_req_zone $binary_remote_addr zone=req_perip:10m rate=30r/m;

    server {
        limit_conn perip 50;
        limit_req zone=req_perip burst=60 nodelay;

        # 超时控制,防止慢速连接攻击
        client_body_timeout 10s;
        client_header_timeout 10s;
        send_timeout 10s;
        # 限制请求体大小,防止超大请求拖垮内存
        client_max_body_size 10m;
    }
}

第二段配置是过滤扫描器和攻击工具的特征 UA,命中直接断开连接(Nginx 的 444 状态码表示不返回任何内容,比 403 更省资源):

# 拦截常见攻击工具的 User-Agent
if ($http_user_agent ~* (sqlmap|masscan|python-requests)) {
    return 444;
}

四、第三层防线:Linux 内核参数优化

系统层面也有几个性价比极高的优化点,特别是防 SYN Flood 攻击,修改内核参数即可生效:

# 开启 SYN Cookie,抵御 SYN Flood
sysctl -w net.ipv4.tcp_syncookies=1
# 减少 SYN 重试次数,缩短无效连接占用时间
sysctl -w net.ipv4.tcp_synack_retries=1
sysctl -w net.ipv4.tcp_syn_retries=1
# 提高连接队列上限
sysctl -w net.core.somaxconn=65535
# 放宽本地端口范围,支撑更多并发连接
sysctl -w net.ipv4.ip_local_port_range="1024 65535"

# 立即生效
sysctl -p

这些参数改完无需重启,能明显提升服务器在异常流量下的存活能力。注意生产环境修改前先备份 /etc/sysctl.conf,并逐项验证业务无影响。

五、自动化封禁:fail2ban 实现 IP 自动拉黑

对于频繁触发异常规则的 IP,用 fail2ban 自动封禁最省心。先安装:

# Debian/Ubuntu
apt install fail2ban -y
# CentOS/RHEL
yum install fail2ban -y

然后创建配置文件 /etc/fail2ban/jail.local

[nginx-cc]
enabled = true
filter = nginx-cc
action = iptables-multiport[name=nginx-cc, port="80,443"]
logpath = /www/wwwlogs/站点域名.log
maxretry = 60
findtime = 60
bantime = 3600

再创建对应的过滤器 /etc/fail2ban/filter.d/nginx-cc.conf

[Definition]
failregex = ^ .* "(GET|POST) .*" (404|444)

最后启动服务:systemctl restart fail2ban。逻辑是:60 秒内出现 60 次 404/444 响应的 IP,自动封禁 1 小时,全程无需人工干预。

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

防护方案再完善,也可能遇到新变种攻击,关键时刻按下面流程处置:

  1. 判断攻击类型:看带宽监控图,流量打满是 DDoS;CPU 和数据库连接异常是 CC;
  2. 立即接入云防护:把域名解析切换到高防节点,让清洗先顶上;
  3. 临时开启人机校验:全站或对关键接口启用验证码,过滤掉大部分自动化流量;
  4. 事后复盘:分析攻击日志,补充黑名单规则和限速阈值,更新到防护配置里。

总结

DDoS/CC 攻击防护没有银弹,靠的是”云端清洗 + 源站加固 + 系统优化 + 自动封禁”层层叠加。对个人站长来说,先把 Nginx 限速、内核参数、fail2ban 这三板斧做好;对业务重要的站点,建议直接接入速度网络的 DDoS 高防和 CC 防护服务,让专业清洗能力在前面挡大流量,源站按本文方案做纵深防御,双管齐下才能睡得着觉。

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