DDoS(分布式拒绝服务)是用海量流量把你的带宽或资源耗尽,让正常用户访问不了。它和 CC 的区别是:DDoS 靠流量规模,CC 靠请求精巧。
这篇讲 DDoS 的常见类型、怎么判断自己正在被打、能做什么防护。
抗 DDoS 很大程度上依赖服务商的网络能力。财富云计算 提供云服务器与网络防护;把源站放在 NAT 型(无独立公网 IP,价格比带独立 IP 机型省一半以上)后面并配合高防/CDN,能显著降低直接被打的风险。
一、DDoS 的几种类型
按攻击层次分
| 层次 | 类型 | 目标 | 典型规模 |
|---|---|---|---|
| 网络层(L3/L4) | SYN Flood、UDP Flood、ICMP Flood | 带宽、连接表 | 几十 Gbps 起 |
| 应用层(L7) | CC、HTTP Flood、慢速攻击 | CPU、内存、数据库 | 请求数计 |
| 放大攻击 | DNS/NTP/Memcached 反射 | 带宽 | 可放大几十倍 |
| 混合 | 多种组合 | 全面 | — |
常见手法
1)SYN Flood
发送海量 TCP 半连接请求,占满服务器的连接队列,正常连接进不来。
# 查看是否有大量 SYN_RECV
ss -ant | awk '{print $1}' | sort | uniq -c2)UDP Flood
发送大量 UDP 包,耗尽带宽和处理能力。游戏服务器(UDP 端口)常被打这个。
3)反射放大攻击
攻击者伪造你的 IP 向开放服务(DNS、NTP、Memcached)发请求,响应会放大几倍到几万倍后打到你这里。
- DNS 放大:约 50 倍
- NTP 放大:约 200 倍
- Memcached 放大:可达 5 万倍(所以 Memcached 绝不能对外)
4)HTTP Flood / CC
大量看似正常的 HTTP 请求,专门消耗应用资源。详见《网站被 CC 攻击怎么办》。
5)慢速攻击(Slowloris)
用极慢的速度发送请求头,占住连接不放,耗尽连接池。
二、怎么判断自己被打 DDoS 了
典型现象
| 现象 | 判断 |
|---|---|
| 带宽瞬间跑满 | 流量型攻击 |
| 服务器 CPU 不高但网络卡死 | 带宽被打满 |
| 大量 SYN_RECV 连接 | SYN Flood |
| 某个 UDP 端口流量异常 | UDP Flood(游戏服常见) |
| 网站完全打不开但服务器能 SSH(走内网) | 公网带宽被堵 |
| 云控制台流量图垂直飙升 | 最直观 |
快速确认
# ① 看带宽
iftop -i eth0
sar -n DEV 1
# ② 看连接状态
ss -s
ss -ant | awk '{print $1}' | sort | uniq -c
# ③ 看流量来源
iftop -i eth0 -n -P
# 按来源 IP 排序
# ④ 统计连接数最多的 IP
ss -tn | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
# ⑤ 看 CPU 和内存(区分是流量型还是资源型)
top关键区分:
- 带宽满 + CPU 不高 → 流量型 DDoS
- 带宽没满 + CPU/内存爆 → CC / 应用层攻击
云控制台
多数云厂商提供流量监控图,能看到流量突增的精确时间和规模,是最直接的证据。
三、个人能做的防护(系统层)
1)内核参数加固(防 SYN Flood)
nano /etc/sysctl.conf# 开启 SYN Cookie(最重要)
net.ipv4.tcp_syncookies = 1
# 增大 SYN 队列
net.ipv4.tcp_max_syn_backlog = 8192
# 减少 SYN+ACK 重试次数
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 2
# 开启 TIME_WAIT 复用
net.ipv4.tcp_tw_reuse = 1
# 增大文件句柄
fs.file-max = 1000000
# 增大连接跟踪表(有防火墙时重要)
net.netfilter.nf_conntrack_max = 1000000
# 缩短 FIN 超时
net.ipv4.tcp_fin_timeout = 15
# 防 IP 欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 不响应 ICMP 广播
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 忽略 ICMP 重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0sysctl -p2)iptables 限速(缓解,不能根治)
# 限制单 IP 的 SYN 速率
iptables -A INPUT -p tcp --syn -m limit --limit 10/s --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP
# 限制单 IP 并发连接数
iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 -j DROP
# 限制 ICMP
iptables -A INPUT -p icmp -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p icmp -j DROP
# 限制 UDP(游戏服慎用,会误伤)
iptables -A INPUT -p udp -m limit --limit 100/s -j ACCEPT3)Nginx 层防护(防慢速攻击和 CC)
# 超时设置(防慢速攻击)
client_body_timeout 10s;
client_header_timeout 10s;
send_timeout 10s;
keepalive_timeout 30s;
client_max_body_size 10m;
# 限制连接频率
limit_conn_zone $binary_remote_addr zone=perconn:10m;
limit_conn perconn 20;
limit_req_zone $binary_remote_addr zone=perip:10m rate=20r/s;
limit_req zone=perip burst=30 nodelay;4)关闭不必要的服务
ss -tulnp
# 关掉没用的端口,减少被利用的面特别是:
- Memcached 不要监听 0.0.0.0(会被用于放大攻击)
- DNS 服务器不要开放递归查询
- NTP 服务限制访问
# 检查自己有没有成为"帮凶"
ss -tuln | grep -E "0.0.0.0:(53|11211|123)"四、真正有效的防护(架构层)
说实话,系统层的防护对付真正的流量型 DDoS 基本没用——几十 G 的流量到你网卡时,服务器已经瘫了。有效方案在架构层:
1)高防 IP / 高防 CDN(最有效)
用户 → 高防节点(清洗流量) → 源站攻击流量在服务商的清洗中心就被过滤掉,只有正常流量到达你的服务器。
做法:
- 购买高防服务
- 把域名解析指向高防 IP(或 CNAME)
- 源站 IP 必须隐藏(防火墙只放行高防节点的 IP 段)
2)CDN 隐藏源站
用户 → CDN 边缘节点 → 源站攻击者只能打到 CDN 节点(CDN 厂商有强大的带宽和清洗能力),打不到你的源站。
关键配置:
# 防火墙只允许 CDN 的 IP 段访问
# 各 CDN 厂商会公布 IP 段# 或者用 Nginx 限制
allow CDN网段;
deny all;验证源站是否隐藏:
# 从外网直接 ping 源站域名,看是否解析到 CDN
dig example.com +short
# 检查是否有历史解析记录暴露了源站(DNS 历史库)
# 比如 securitytrails、dnsdb 等可以查到旧记录⚠️ 如果源站 IP 泄露(比如曾经直接解析过、或者邮件服务器暴露),防护就失效了。这种情况建议直接换 IP。
3)分布式部署 + 负载均衡
多台服务器在不同地区/运营商,攻击难以全部打瘫。
4)弹性扩容
云环境下自动扩容,攻击流量大了就加机器(但成本会很高,只适合短时攻击)。
5)游戏服务器的特殊防护
游戏服多走 UDP,容易成为目标:
- 用支持 UDP 防护的高防
- 隐藏真实 IP(用跳板/隧道)
- 限制单 IP 连接数
- 选择有游戏防护经验的服务商
五、被攻击时的应急流程
① 确认:看云控制台流量图,确认是攻击而非正常高峰
↓
② 报告:联系服务商,看是否有免费的基础防护可开启
↓
③ 缓解:
- 开启 CDN / 高防(如果已有,确认已生效)
- 系统层限流(iptables / Nginx)
- 临时封禁明显的攻击 IP 段
↓
④ 降级:
- 关闭非核心功能(搜索、评论、注册)
- 静态化关键页面
- 必要时临时关闭站点保住其他服务
↓
⑤ 防护:
- 长期方案:高防 / CDN + 隐藏源站
- 优化架构,减少单点
↓
⑥ 复盘:
- 分析攻击类型、规模、时间
- 完善预案六、预防胜于治疗
上线前
- [ ] 源站 IP 不直接暴露(用 CDN / 高防)
- [ ] 防火墙只放行必要端口
- [ ] Memcached、DNS、NTP 不对公网开放
- [ ] 系统内核参数已加固
- [ ] Nginx 层限流已配置
- [ ] 有监控告警(流量突增)
- [ ] 了解服务商提供的防护能力和开启方式
日常
- [ ] 定期检查端口暴露情况
- [ ] 关注漏洞公告(组件被利用可用于发起攻击)
- [ ] 备份完整,最坏情况能快速重建
- [ ] 准备应急预案文档(被打了找谁、做什么)
七、常见误区
| 误区 | 现实 |
|---|---|
| "我装了防火墙就不怕 DDoS" | 防火墙挡不住大流量,流量到网卡时已经晚了 |
| "加带宽就能扛" | 攻击流量可以是你带宽的几十倍,成本扛不住 |
| "封 IP 就行" | 分布式攻击有几万十几万个 IP,封不过来 |
| "小站不会被攻击" | 自动化扫描不分大小,勒索型 DDoS 专挑小站 |
| "重启服务器能解决" | 攻击还在,重启后马上又被打 |
| "交赎金就停" | 不保证停,且会被反复勒索 |
正确认知:DDoS 防护本质上是资源和带宽的比拼,个人站长能做的是"不让自己成为直接目标"(隐藏源站 + CDN),并依靠服务商的防护能力。
八、成本考量
| 方案 | 成本 | 防护能力 |
|---|---|---|
| 系统层加固 | 免费 | 只防小规模 |
| Nginx 限流 | 免费 | 只防小规模 CC |
| CDN(带基础防护) | 低~中 | 防中小规模 |
| 高防 IP | 高 | 防大规模 |
| 高防 CDN | 中~高 | 防大规模 + 加速 |
| 云厂商 DDoS 基础防护 | 通常免费 | 视厂商而定(有几 G 到几十 G 不等) |
建议:
- 小站:CDN(隐藏源站)+ 云厂商基础防护,成本可控
- 有商业价值的业务:高防 CDN
- 游戏服:选带游戏防护的服务商
先问清楚服务商提供多少免费防护额度,很多云厂商有免费的基础 DDoS 防护(比如 5G 以内),超出才需要买高防。
九、相关法律规定
重要提示:发起 DDoS 攻击是违法犯罪行为。在中国,《刑法》第 285、286 条明确规定了破坏计算机信息系统罪,可判处有期徒刑。即便是"压力测试",未经授权对他人系统发起攻击同样违法。
只对自己拥有/授权的系统做压测,且要控制规模避免影响服务商网络。
抗 DDoS 靠的是网络层面的能力,选服务商时要问清楚防护额度。财富云计算 提供云服务器与网络防护能力;架构上建议把源站放在 NAT 型(无独立公网 IP,价格比带独立 IP 机型省一半以上)之后,通过 CDN 或映射对外暴露,减少被直接攻击的面,同时降低成本。
相关阅读:
- 《网站被 CC 攻击怎么办》
- 《Linux 防火墙配置:ufw / firewalld / iptables》
- 《服务器安全基线检查清单》
- 《Web 日志分析实战》
延伸阅读
- 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
- 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
- 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
- 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
- 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
- RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
- 短链接服务搭建:Shlink 自托管,链接数据自己掌握
- 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道

[...]# ^."(Baiduspider|Googlebot|bingbot|Sogou|360Spider)."$防误伤三原则:搜索引擎 UA 加白(影响 SEO 的大事)自己的办公 IP 加白(fail2ban 的 ignoreip)封禁阈值别太狠(404 阈值 20/分钟比较稳,5 太激进)搜索引擎友好性见网站 SEO 基础优化指南。七、被扫描时的日常心态说句实话:被扫是常[...]
2026-10-15 回复
[...]netsh advfirewall firewall add rule name="GameRange" dir=in action=allow protocol=UDP localport=26901-26903完整的 Windows 环境准备(远程桌面连接、运行库安装、SteamCMD 用法、开机自启、8 个常见坑)见:《Windows 云服务器开服通用前置教程》→ htt[...]
2026-10-18 回复