4966892030
拍板:不预购高防/CDN,接受极端容量攻击黑洞期风险;应急走 runbook (判定→CC 处置→高防/CDN 切换→黑洞预案,DNS TTL 平时保持 ≤600s)。 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
106 lines
8.1 KiB
HTML
106 lines
8.1 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>DDoS / 爬取洪峰应急 Runbook — 酒库管理系统</title>
|
||
<style>
|
||
:root{
|
||
--primary:#2563AC; --primary-dark:#154072; --danger:#D14343; --danger-bg:#FDECEC;
|
||
--success:#2E8B57; --success-bg:#E6F3EC; --warn:#B45309; --warn-bg:#FFF4E5; --accent:#8B2331;
|
||
--ink:#232934; --muted:#6E7888; --border:#DCE2EB; --paper:#F5F7FA; --head:#F0F4FF;
|
||
}
|
||
*{box-sizing:border-box;font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;}
|
||
body{margin:0;background:var(--paper);color:var(--ink);padding:28px;line-height:1.65;}
|
||
h1{font-size:22px;margin:0 0 4px;}
|
||
h2{font-size:17px;margin:30px 0 12px;color:var(--primary-dark);border-bottom:2px solid var(--head);padding-bottom:6px;}
|
||
h3{font-size:14px;margin:18px 0 8px;color:var(--accent);}
|
||
.sub{color:var(--muted);font-size:13px;margin-bottom:18px;}
|
||
.card{background:#fff;border:1px solid var(--border);border-radius:10px;padding:16px 20px;margin:14px 0;}
|
||
.lead{font-size:13.5px;color:var(--ink);}
|
||
table{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0;}
|
||
th{background:var(--head);color:var(--primary-dark);font-weight:600;font-size:12px;text-align:left;padding:9px 10px;border-bottom:1px solid var(--border);}
|
||
td{padding:8px 10px;border-bottom:1px solid #EEF1F5;vertical-align:top;}
|
||
.mono{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;}
|
||
code{font-family:ui-monospace,Menlo,monospace;font-size:12px;background:#EEF2F8;padding:1px 5px;border-radius:4px;color:var(--primary-dark);}
|
||
pre{background:#1E2430;color:#D8E0EC;border-radius:8px;padding:12px 14px;overflow:auto;font-size:12px;line-height:1.55;}
|
||
pre .c{color:#7A8699;}
|
||
.tag{display:inline-block;font-size:11px;padding:1px 8px;border-radius:10px;font-weight:600;}
|
||
.tag.risk{background:var(--danger-bg);color:var(--danger);}
|
||
.tag.ok{background:var(--success-bg);color:var(--success);}
|
||
.callout{border-left:4px solid var(--primary);background:#F0F6FF;padding:10px 14px;border-radius:4px;margin:12px 0;font-size:13px;}
|
||
.callout.danger{border-color:var(--danger);background:var(--danger-bg);}
|
||
.callout.warn{border-color:var(--warn);background:var(--warn-bg);}
|
||
.callout.ok{border-color:var(--success);background:var(--success-bg);}
|
||
.callout b{color:var(--ink);}
|
||
ul,ol{margin:6px 0;padding-left:22px;}
|
||
li{margin:3px 0;font-size:13px;}
|
||
</style>
|
||
</head>
|
||
<body>
|
||
<h1>DDoS / 爬取洪峰应急 Runbook</h1>
|
||
<div class="sub">目标机:ali(182.92.213.171,2vCPU/1.8GiB,nginx 443 → jiu:8081 / payd:8080)· 2026-07-05 制定 · 配套加固:nginx limit_req/limit_conn/UA 拦截 + 应用层分钟限流/日配额(redis 外置)</div>
|
||
|
||
<div class="callout"><b>已拍板的风险决策:</b>不预购 DDoS 高防 / 不常备 CDN——当前业务体量(B2B 门店工具,客户量有限)与其成本(高防 ¥2-3k/月起)不匹配。接受「极端容量型攻击下最长黑洞期(2.5~24h)不可用」的残余风险;客户端 App 有本地态可短时离线操作。应用层 CC 攻击由既有多层限流覆盖,不在此风险内。</div>
|
||
|
||
<h2>一、判定:现在发生的是什么</h2>
|
||
<div class="card lead">
|
||
<table>
|
||
<tr><th>症状</th><th>检查命令 / 位置</th><th>判定</th></tr>
|
||
<tr><td>ssh 卡顿、ping 大量丢包,但机器负载不高</td><td class="mono">ping 182.92.213.171 · 阿里云控制台 ECS 监控「网络带宽」打满</td><td><span class="tag risk">容量型 L3/L4</span>(带宽被灌满)→ 走第三节</td></tr>
|
||
<tr><td>机器能登,nginx 连接数/QPS 暴涨、CPU 高</td><td class="mono">ss -s · tail -f /var/log/nginx/access.log · top</td><td><span class="tag risk">应用层 CC / 爬取洪峰</span> → 走第二节</td></tr>
|
||
<tr><td>IP 全网不可达(连阿里云内网也 ping 不通)</td><td>控制台 → DDoS 基础防护 → 实例列表:状态「黑洞中」</td><td><span class="tag risk">已进黑洞</span> → 走第四节</td></tr>
|
||
</table>
|
||
<p>阿里云免费「DDoS 基础防护」自动生效:清洗阈值与黑洞阈值查询路径 = <b>控制台 → 安全 → DDoS 基础防护 → 实例列表</b>(北京区黑洞阈值约 5Gbps 量级,以控制台实际显示为准)。超过黑洞阈值即封 IP,黑洞期默认 2.5h,反复被打会延长到 24h,<b>期间无法主动解封</b>。</p>
|
||
</div>
|
||
|
||
<h2>二、应用层 CC / 爬取洪峰(机器还活着)</h2>
|
||
<div class="card lead">
|
||
<ol>
|
||
<li><b>看清攻击面</b>:<code>awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20</code> 找 top IP;再看打的路径。</li>
|
||
<li><b>封单个/少量 IP</b>:nginx conf 对应 location 或 server 级加 <code>deny 1.2.3.4;</code> → <code>nginx -t && systemctl reload nginx</code>;或阿里云安全组加拒绝规则(源 IP /32,优先级 1)。</li>
|
||
<li><b>整体调紧</b>:把 <code>/etc/nginx/conf.d/jiu.conf</code> 里 <code>jiu_pub</code> 从 10r/s 降到 2r/s、<code>jiu_shoplist</code> 降到 1r/s、<code>jiu_conn</code> 降到 5,reload。注意这是<b>临时手改线上</b>,恢复后必须回滚(下次 server 发版会覆盖为仓库版本)。</li>
|
||
<li><b>应用层兜底</b>:后端还有分钟级限流 + 日配额(redis 外置,重启不丢);紧急时可在 <code>/opt/jiu/config/production.env</code> 调小 <code>RATELIMIT_*</code> 后 <code>systemctl restart jiu</code>。</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<h2>三、容量型 L3/L4(带宽被灌满,还没进黑洞)</h2>
|
||
<div class="card lead">
|
||
<p>本机和 nginx 层<b>无能为力</b>(流量在进机器前就占满管道),只有两条路,二选一:</p>
|
||
<h3>路 A:购买阿里云 DDoS 高防(攻击打 IP 也有效,成本高)</h3>
|
||
<ol>
|
||
<li>控制台购买「DDoS 高防(中国内地)」保险版(约 ¥2-3k/月起 + 弹性按次计费)。</li>
|
||
<li>配置网站接入:源站 <code>182.92.213.171</code>,转发 443/80,回源保持 HTTPS。</li>
|
||
<li>把 jiu.51yanmei.com 的 A 记录改为高防给的 CNAME(阿里云云解析,TTL 600 内约 10-30 分钟全网生效)。</li>
|
||
<li>攻击停止后可退回直连并停止续费。</li>
|
||
</ol>
|
||
<h3>路 B:套 CDN / 边缘安全加速(只有攻击打域名时有效)</h3>
|
||
<ol>
|
||
<li>域名已备案 ✓,可开阿里云 CDN 或 ESA,源站 182.92.213.171:443。</li>
|
||
<li>动态 API 全走回源(CDN 主要挡静态与摊薄入口),若攻击者直打源 IP 则无效——届时只能走路 A 或换公网 IP(换 IP 需同步改 DNS + baize 台账 + pay 相关配置)。</li>
|
||
</ol>
|
||
<div class="callout warn"><b>预备项(平时保持):</b>云解析里 jiu.51yanmei.com 的 TTL 保持 ≤600s,应急切换才快;本 runbook 的回源参数保持最新。</div>
|
||
</div>
|
||
|
||
<h2>四、已进黑洞</h2>
|
||
<div class="card lead">
|
||
<ol>
|
||
<li>黑洞无法主动解除,等待期(控制台显示解封时间)内做两件事:给客户发公告(模板见下);评估是否走第三节路 A(高防接入可在黑洞期间完成配置,解封即切换)。</li>
|
||
<li>客户公告话术模板:<i>「系统服务器正遭受网络攻击,运营商已启动防护,预计 X 时 X 分前恢复。期间已录入的数据不受影响,App 可离线查看,恢复后自动同步。给您带来不便深表歉意。」</i></li>
|
||
<li>事后复盘:控制台下载攻击流量报表,评估是否升级常备防护,更新本 runbook。</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<h2>五、既有防线速查(平时状态)</h2>
|
||
<div class="card lead">
|
||
<table>
|
||
<tr><th>层</th><th>措施</th><th>位置</th></tr>
|
||
<tr><td>阿里云</td><td>免费 DDoS 基础防护(自动清洗);安全组仅放行 22/80/443/ICMP</td><td>控制台 · sg-2ze5y7jqe889jmqb6ci4</td></tr>
|
||
<tr><td>nginx</td><td>limit_req(公开 10r/s、店铺列表 2r/s)+ limit_conn(20/10/下载 3)+ 抓取库/空 UA 403 + 图片防盗链 + 下载限速</td><td class="mono">deploy/nginx-jiu-ali.conf(CI 下发)</td></tr>
|
||
<tr><td>应用</td><td>per-IP 分钟限流 + 每店 RPS + 登录失败锁 + 日配额(单品 1000/日、列表 300/日);状态外置 redis 跨重启</td><td class="mono">backend/internal/ratelimit + middleware</td></tr>
|
||
</table>
|
||
</div>
|
||
|
||
</body>
|
||
</html>
|