安全与合规

DDoS 攻击如何防御:分层防护方案与被打时的处置步骤

DDoS 攻击没有一招见效的防法,能挡多大取决于你在哪一层花了钱:主机上的防火墙和内核参数只能应付小规模攻击,超过接入带宽就要靠机房清洗,再往上是高防 IP 和 CDN。被打时按“判断类型、切高防、联系机房、取证”的顺序处理。

作者 顶联产品团队发布于 5 分钟阅读

DDoS 攻击如何防御,取决于攻击规模落在哪一层:没有超过服务器接入带宽的小规模攻击(SYN 泛洪、连接数耗尽),主机上的内核参数和防火墙就能顶住;一旦流量超过服务器的接入带宽,主机上做什么都没用,只能靠机房的流量清洗或黑洞;再大的规模就要把业务放到高防 IP 或高防 CDN 后面,由它们的清洗中心吸收。应用层的 HTTP 泛洪则要靠限速、WAF 和人机验证。本文先给分层方案表,再给被打时的处置顺序。

分层防护方案:每一层能挡多大

层次 手段 能挡什么 大致上限 谁来做
主机 内核参数、iptables/nftables、关闭无用服务 SYN 泛洪、小规模连接耗尽、少量源的扫描 接入带宽与 CPU 决定,1 Gbps 端口被 2 Gbps 流量打满时全部失效 服务器管理员
机房 上联带宽冗余、旁路清洗设备、黑洞路由 UDP 泛洪、反射放大、SYN 泛洪等流量型攻击 以合同标称的清洗能力为准,通常为数十到数百 Gbps 量级;超过阈值走黑洞 机房/IDC 服务商
高防 IP / CDN 把攻击引到服务商的清洗中心,源站隐藏 大规模流量型攻击,部分产品也过滤应用层 以服务商标称的防护带宽为准,通常远高于单个机房的清洗能力 业务方购买并接入
应用层 Nginx 限速、WAF、验证码、缓存 HTTP 泛洪(CC)、慢速攻击、接口滥用 取决于后端处理能力,与带宽无关 应用/运维

这张表的重点是:下面一层挡不住的,上面一层才需要出手,而且每一层的上限都很硬。买了高防带宽不等于应用层安全,主机调优也替代不了机房清洗。下面按机房、高防、主机、应用四块分别说明该做什么。

机房侧:带宽冗余与流量清洗

机房侧的防护通常由三部分组成:

  1. 带宽冗余:上联带宽留有余量,攻击流量不至于立刻堵死整个机房出口;
  2. 流量清洗:通过 NetFlow/sFlow 检测异常,把被攻击 IP 的路由牵引到旁路清洗设备,过滤后再回注给服务器;
  3. 黑洞路由:攻击超过清洗能力或合同阈值时,上游把该 IP 路由到空接口,牺牲一个 IP 保住整个机房。

签约前要问清楚这几个数字:清洗触发阈值、黑洞阈值、黑洞后多久解封、清洗是否额外收费、被打时能否临时更换 IP。这些条款直接决定被攻击时你还有哪些选项。

高防 IP 与 CDN:把源站藏起来

高防 IP 的原理是让所有流量先经过服务商的清洗节点,再转发给源站。接入步骤:

  1. 在高防控制台添加转发规则:四层业务填端口转发(例如 TCP 443 → 源站 IP:443),七层业务填域名并上传证书;
  2. 把源站防火墙改成只允许高防回源 IP 段访问业务端口,其他来源一律丢弃;
  3. DNS 解析改到高防 IP,TTL 提前缩短到 300 秒以内,方便后续切换;
  4. 更换源站 IP:旧 IP 已经暴露,不换等于白做;
  5. 排查泄露渠道:历史 DNS 记录、邮件头里的发件服务器地址、未接入高防的子域名(证书透明度日志里能查到你签发过证书的所有域名)。

CDN 隐藏源站的思路相同,静态内容还能直接由边缘节点响应。无论哪种,源站防火墙那一条是关键,否则攻击者绕过高防直接打源站 IP。

主机侧:防火墙与内核参数

主机层只对小规模、未超过接入带宽的攻击有效,但它是零成本、马上能做的部分。以 Linux 为例,先调内核参数:

cat >> /etc/sysctl.conf <<'CONF'
# SYN Cookie:半连接队列满时仍能建立连接
net.ipv4.tcp_syncookies = 1
# 半连接与全连接队列长度
net.ipv4.tcp_max_syn_backlog = 65536
net.core.somaxconn = 65535
# 减少 SYN+ACK 重传次数,半连接更快超时
net.ipv4.tcp_synack_retries = 2
# 网卡收包队列
net.core.netdev_max_backlog = 262144
CONF
sysctl -p

再用 iptables 限制单个源的连接数和新建连接速率:

# 单个源 IP 到 80/443 的并发连接超过 50 即丢弃
iptables -A INPUT -p tcp -m multiport --dports 80,443 \
  -m connlimit --connlimit-above 50 --connlimit-mask 32 -j DROP
# 单个源 IP 每秒新建连接超过 30(突发 60)即丢弃
iptables -A INPUT -p tcp --syn -m hashlimit --hashlimit-name syn \
  --hashlimit-mode srcip --hashlimit-above 30/second --hashlimit-burst 60 -j DROP
# 丢弃连接状态无效的包
iptables -A INPUT -m conntrack --ctstate INVALID -j DROP

同时检查服务器有没有对外开放可被利用的反射源:DNS 递归、NTP 的 monlist、SSDP、memcached 的 11211 端口。这些服务开着,你的服务器就会成为别人攻击的放大器,机房也可能因此把你的端口关掉。

应用层:限速与人机验证

流量不大、带宽不满、但网站打不开,问题多半在应用层。Nginx 里按来源 IP 限制请求速率和并发连接:

http {
    limit_req_zone  $binary_remote_addr zone=req_per_ip:10m rate=20r/s;
    limit_conn_zone $binary_remote_addr zone=conn_per_ip:10m;

    server {
        location / {
            limit_req  zone=req_per_ip burst=40 nodelay;
            limit_conn conn_per_ip 30;
        }
    }
}

阈值按业务调:静态站可以严一些,API 接口要考虑同一出口 NAT 后面的大量用户。再往上是 WAF 的规则过滤、对可疑来源弹 JavaScript 验证或验证码,以及把能缓存的页面缓存起来,让攻击请求打不到数据库。

服务器被 DDoS 攻击怎么办:处置顺序

被打时不要先改配置,先按顺序做下面几步。

1. 判断是不是攻击、是哪一种

看三个指标就能分清:

# 连接状态汇总:SYN-RECV 数量异常高说明是 SYN 泛洪
ss -s
ss -ant state syn-recv | wc -l
# 已建立连接按来源统计:少数 IP 占大头说明是连接型或应用层攻击
ss -ant state established | awk 'NR>1{split($4,a,":");print a[1]}' | sort | uniq -c | sort -rn | head
  • 监控图上入向带宽打满、包速率暴涨 → 流量型攻击(UDP 泛洪、反射放大),主机上无解,直接进入第 2 步;
  • 带宽不高、半连接数暴涨 → SYN 泛洪,主机侧的内核参数能顶一阵;
  • 带宽正常、请求数和后端 CPU 暴涨 → 应用层攻击,按应用层的限速与人机验证处理。

2. 流量型攻击:联系机房,切高防

  • 立刻联系机房值班,确认 IP 是否已进黑洞、清洗是否已触发、什么时候能解封;
  • 如果已有高防 IP 或 CDN,把 DNS 切过去;提前把 TTL 缩短过的话,切换只需几分钟;
  • 如果没有高防,考虑临时申请一个新 IP 承接核心业务,同时把旧 IP 留在黑洞里;
  • 主机层能做的只有关闭非必要端口、临时缩紧连接数,不要指望封 IP 见效,因为源地址大多是伪造的。

3. 通知相关方

给受影响的客户发公告,说明影响范围和预计恢复时间;涉及多个客户的 IDC 要同步通知销售和客服,避免工单堆积在一线。

4. 取证

攻击期间保存证据,事后才谈得上追责或报案:

# 抓取 1 万个包留样,不要长时间抓包拖垮服务器
tcpdump -i eth0 -c 10000 -w /tmp/ddos-$(date +%F-%H%M).pcap

再加上监控系统的流量图截图、机房或高防服务商出具的攻击报告、勒索邮件或聊天记录。

5. 事后复盘

  • 换掉暴露的源站 IP,并确认新 IP 只对高防回源段开放;
  • 检查监控告警阈值,攻击开始到有人知道的时间差就是要缩短的目标;
  • 评估这次攻击规模与现有防护上限的差距,决定是否升级机房清洗套餐或购买高防;
  • 把 DNS TTL、高防转发规则、机房联系方式写成一页应急手册,下次不用现找。

IDC 运营方:不让一台机器拖垮一排

对 IDC 来说,一台服务器被攻击往往连带同一交换机、同一上联线路上的其他客户。Toplink DCIM 的带宽自动限速按最近一段时间的平均带宽判断,超过阈值就自动把交换机端口限到设定速率,流量回落并持续稳定后再恢复,把影响圈在一个端口以内。客户也可以在自助端查看自己服务器的流量与被攻击事件记录,不必等运维回复才知道发生了什么。

常见问题

服务器被打进黑洞了多久能恢复?

由机房或上游运营商的策略决定,常见是攻击停止后固定时长自动解封,具体以你的服务商为准。黑洞期间该 IP 的所有流量都会被丢弃,包括正常访问。

换 IP 能解决 DDoS 吗?

只能解一时之急。如果新 IP 仍然直接暴露在 DNS 里,攻击者很快就能拿到。换 IP 的同时要把源站藏到高防 IP 或 CDN 后面,并且只允许高防回源地址访问源站。

高防 IP 和高防 CDN 该选哪个?

看业务协议。游戏、TCP 长连接这类非 HTTP 业务只能用高防 IP 做四层端口转发;网站和 API 优先高防 CDN 或七层高防,它们能在边缘缓存静态内容、按请求特征过滤,四层高防做不到这些。两者可以叠加使用。

想看看在你的机房里怎么用?

从一次产品演示开始,梳理你的业务链路。

查看价格
服务热线 400-112-2951

让我们聊聊你的 IDC 业务

扫码添加企业微信,预约产品演示或申请试用。

Toplink 企业微信二维码

长按保存或使用企业微信 / 微信扫描

也可致电
400-112-2951
Telegram
@TopLink88