聊聊如果遇到DDoS攻击,如何在 5 分钟内恢复业务

聊聊如果遇到DDoS攻击,如何在 5 分钟内恢复业务

0. 写在前面:为什么你需要“神器”而非“常用命令

大家好,老杨是老杨,干货满满的老杨

欢迎点击原文链接或直接访问vps.top365app.com,来看老杨的全球vps信息还有各种咱们用得着的信息实时收集分析项目.

帮老杨点赞、转发、在看以及打开小星标哦

攒今世之功德,修来世之福报

正文遇到 DDoS 的感觉很单刀直入:流量像水闸被打开。

但老杨也见过把核心服务在 5 分钟内拉回来的场景。关键在于准备和门控脚本。

今天就来聊聊遇到大规模DDoS 后该如何做

整体思路先把恶意流量挡在边缘。

再保护回源。

最后按灰度把业务放回。

先做 X,然后做 Y。

这样可以帮你在最短时间内保证用户可用。

5 分钟操作流程下面是老杨实际用过的 6 步流程。目标:300 秒内恢复关键接口。

0:00–0:30 确认攻击并定位指标异常观察带宽、连接数和 SYN 状态。

代码语言:javascript复制$ ss -s

Total: 123456 (kernel 78910)

TCP: 100000 (estab 8000, synrecv 12000, timewait 500)

UDP: 2300代码语言:javascript复制$ cat /proc/net/dev | grep eth0

eth0: 1234567890 0 0 0 0 0 0 0 9876543210 0 0 0 0 0 0 0输出说明:synrecv 或者网口 rx 突增,说明是流量型攻击。

我会立刻把事件标为高优先级并开始下一步。

0:30–1:30 启动边缘清洗 / CDN 严格模式如果你用阿里云、腾讯云或自建 CDN,先在控制台切到清洗/严格模式。

若有 API,运行预制脚本。

API 调用(不同厂商接口不同,按厂商文档替换):

代码语言:javascript复制$ curl -X POST "https://cdn-api.example.com/domains/api.example.com/enable_scrub" \

-H "Authorization: Bearer $TOKEN" -d '{"mode":"scrub"}'输出

代码语言:javascript复制{"status":"ok","message":"scrubbing enabled for api.example.com"}边缘清洗能在分钟级把大部分攻击丢掉。

没有边缘清洗,就切到下一步更激进的本地防护。

1:30–2:30 在边界机做快速封堵与速率限制(ipset + iptables + nginx)先用 ipset 做黑名单集合,再让 iptables 丢弃集合里的流量。

这样规则非常高效,能承受成千上万条黑名单。

代码语言:javascript复制$ sudo ipset create ddos-blacklist hash:ip family inet

$ sudo ipset add ddos-blacklist 203.0.113.45

$ sudo ipset add ddos-blacklist 198.51.100.23

$ sudo iptables -I INPUT -m set --match-set ddos-blacklist src -j DROP输出

代码语言:javascript复制$ sudo ipset list ddos-blacklist

Name: ddos-blacklist

Type: hash:ip

Members:

203.0.113.45

198.51.100.23

$ sudo iptables -L INPUT -n --line-numbers | grep ddos-blacklist

1 DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set ddos-blacklist src同时在 Nginx 层打开速率限制,防止单 IP 或单连接耗尽资源。

代码语言:javascript复制http {

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

server {

location / {

limit_req zone=one burst=20 nodelay;

proxy_pass http://backend;

}

}

}重载 Nginx:

代码语言:javascript复制$ sudo nginx -t

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

$ sudo nginx -s reload

# 无输出表示重载成功2:30–3:30 请求上游清洗或 BGP 黑洞(当边缘不足时)若攻击超过 CDN/自建清洗能力,就联系 ISP 或云清洗方。

常见做法是请求导流到清洗池或启用 RTBH(Remote Triggered Black Hole)。

我把联络信息和标准文本放在 runbook 里,复制粘贴能节约时间。

代码语言:javascript复制我们正在遭受 DDoS,目标 IP:A.B.C.D,开始时间:2025-08-XX 10:23,立即帮我们启用 RTBH 或导向清洗池,联系人:张三 +8613xxxx如果必须临时黑洞路由,本机用示意命令(风险高,慎用):

代码语言:javascript复制$ sudo ip route add blackhole 203.0.113.0/24输出

代码语言:javascript复制$ ip route show | grep 203.0.113.0

blackhole 203.0.113.0/24 proto static警告:黑洞会丢掉所有到该网段的合法流量。只在不得已时用。

3:30–4:30 保护 origin 与调整内核阈值把 origin 限为只接受 CDN 回源的 IP。

这样即便攻击打到 origin,也被拒绝掉。

Nginx 白名单示例:

代码语言:javascript复制server {

allow 203.0.113.0/24; # CDN 回源段示意

deny all;

location / { proxy_pass http://backend; }

}重载并验证:

代码语言:javascript复制$ sudo nginx -t && sudo nginx -s reload

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful同时放宽内核队列,防止 SYN 暂存溢出:

代码语言:javascript复制$ sudo sysctl -w net.core.somaxconn=4096

net.core.somaxconn = 4096

$ sudo sysctl -w net.ipv4.tcp_max_syn_backlog=4096

net.ipv4.tcp_max_syn_backlog = 4096检查 conntrack 计数:

代码语言:javascript复制$ sudo conntrack -C

124567如果 conntrack 快满,可短期清表(谨慎,可能影响合法会话)。

4:30–5:00 验证关键接口并逐步放流确认健康接口返回 200。再逐步灰度放流。

代码语言:javascript复制$ curl -sS -o /dev/null -w "%{http_code}\n" https://api.example.com/health

200测试下单接口:

代码语言:javascript复制$ curl -sS -X POST https://api.example.com/order -d '{"sku":"1001","qty":1}' -H "Content-Type: application/json" -w "\n%{http_code}\n"

{"orderId":"ord-20250810-001","status":"accepted"}

201结果正常后,按 5%、10%、30% 的步进放流。每步观测 1–2 分钟。

薅就一个字硅基流动是一个非常不错的国内AI调度平台.老杨近期token消耗量非常大,好多业务和项目在建,部分token就是用这里的模型.还是非常流畅的.想玩玩的可以用老杨的链接注册一个试试.

用老杨的链接注册就送2000万token.心动不如行动,跟老杨一起玩起来.自己独立注册的没有哈

https://cloud.siliconflow.cn/i/03Nnp0e8

图片一键应急脚本示例把常用动作打包。值班时一键运行。下例为示例,需在测试环境验证后再用。

代码语言:javascript复制#!/usr/bin/env bash

set -euo pipefail

echo"[1/4] reload nginx limits"

sudo nginx -t && sudo nginx -s reload

echo"[2/4] update ipset"

sudo ipset create ddos-blacklist hash:ip -exist

if [[ -f /opt/ddos/blacklist.txt ]]; then

whileread -r ip; dosudo ipset add ddos-blacklist "$ip" -exist; done < /opt/ddos/blacklist.txt

fi

sudo iptables -C INPUT -m set --match-set ddos-blacklist src -j DROP 2>/dev/null || \

sudo iptables -I INPUT -m set --match-set ddos-blacklist src -j DROP

echo"[3/4] request CDN scrubbing (pseudo API)"

curl -s -X POST "https://cdn-api.example.com/domains/api.example.com/enable_scrub" \

-H "Authorization: Bearer $TOKEN" -d '{"mode":"scrub"}' || true

echo"[4/4] check health"

curl -sS -o /dev/null -w "health_code:%{http_code}\n" https://api.example.com/health执行反馈

代码语言:javascript复制$ sudo ./ddos_mitigate.sh

[1/4] reload nginx limits

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok

nginx: configuration file /etc/nginx/nginx.conf test is successful

[2/4] update ipset

[3/4] request CDN scrubbing (pseudo API)

{"status":"ok","message":"scrubbing enabled"}

[4/4] check health

health_code:200脚本要和你的环境绑定。把各家 CDN 的 API、token、回源段写成可配置文件。

恢复后必须做的事1. 保存攻击样本:pcap、nginx accesslogs、CDN 日志。2. 与 CDN / ISP 做事件回溯,确认流量特征与拦截时序。3. 把高频恶意 IP 加入长期策略或自动化模型。4. 做无责复盘并生成行动项(谁、做什么、多久完成)。5. 根据需要提升长期清洗带宽或启用 Anycast。老杨每次处理完都往工单里贴证据。这样和业务、法务沟通时有凭据。

Q&A• 单机能顶住 100 Gbps 吗?

不能。单机不是防御层。边缘清洗和 ISP 才能处理这种规模。• 黑洞会造成误伤吗?

会。黑洞会丢弃该网段的所有合法流量。只在万不得已时使用。• CDN 一定能挡住吗?

不能保证。CDN 有能力分散和清洗流量,但前提是你已把域名接入并测试过“清洗模式”。• 如何保证 5 分钟成功?

把操作脚本化并演练。把联系人信息和控制台路径写在单页上。事后再优化流程。老杨把经验压缩成这些步骤。各位小伙伴加油吧!

老杨时间这里老杨先声明一下,日常生活中大家都叫老杨波哥,跟辈分没关系,主要是岁数大了.就一个代称而已.

老杨的00后小同事老杨喊都是带哥的.张哥,李哥的.

但是这个称呼呀,在线下参加一些活动时.金主爸爸也这么叫就显的不太合适.

比如上次某集团策划总监,公司开大会来一句:“今个咱高兴!有请IT运维技术圈的波哥讲两句“

这个氛围配这个称呼在互联网这行来讲就有点对不齐!

每次遇到这个情况老杨就想这么接话: “遇到各位是缘分,承蒙厚爱,啥也别说了,都在酒里了.老杨干了,你们随意!”

所以以后咱们改叫老杨,即市井又低调.还挺亲切,老杨觉得挺好.

运维X档案系列文章:

从告警到CTO:一个P0故障的11小时生死时速

企业级 Kubernetes 集群安全加固全攻略( 附带一键检查脚本)

看完别走.修行在于点赞、转发、在看.攒今世之功德,修来世之福报

点击阅读原文或打开地址实时收集分析全球vps的项目

vps.top365app.com

老杨AI的号: 98dev

相关推荐

怎么找网站开发者选项
365bet娱乐登录

怎么找网站开发者选项

📅 11-15 👁️ 2321
联通定向流量包括哪些软件?
bt365如何

联通定向流量包括哪些软件?

📅 11-20 👁️ 3148
浙江省台州市路桥区峰江街道白枫岙村
bt365如何

浙江省台州市路桥区峰江街道白枫岙村

📅 11-05 👁️ 2796