§ 8.4 · Section

DDoS 与防护:人海战术

DoS · DDoS · Botnet · Scrubbing Center

前三节讲的攻击全是"巧劲":SQL 注入靠夹带暗语,XSS 靠贴小偷贴纸,CSRF 靠借你的手刷你的卡——每一种都在钻规则的空子,讲的是技巧。这一节的攻击者懒得动这份脑子:我不破解你的密码,不找你的漏洞,甚至不关心你服务器里藏着什么——我只让一百万人同时挤到你家门口,让你没法开门营业。这就是 DDoS,分布式拒绝服务攻击,互联网上最古老、最无赖、也至今无解的暴力。本节的中心思想一句话:前面所有安全防的都是"讲道理的攻击",而 DDoS 根本不跟你讲道理——它攻击的不是你的漏洞,是你的账本;不攻破你,只耗死你。看懂这一节,你会明白为什么安全专家说"没有打不死的网站,只有不值得打的网站"。

生活场景
🧋 网红奶茶店的开业噩梦:门口排了三百人,一个都不买

新店开业第一天,还没到中午,门口就排起了三百人的长队。店长激动坏了,加急备料、全员到岗——可等了一个小时,队伍一步没动:这三百个人互相不认识,每人只问一句「菜单能看下吗」,然后站着不动,谁也不点单。真正的顾客倒是来了不少,看这架势全都扭头走了。

店长后来才知道:这是对面奶茶店雇的"排队团伙",市场价一个人一天八十块——三百人两万四,对面店一天流水十几万,这钱花得值。

这个故事的每一个细节都是本节的剧本:雇人排队(租用僵尸网络)、只问不买(合法请求拖垮服务)、真客人进不去(正常用户被挤下线)、对面店花小钱办大事(攻击便宜、防御昂贵)。DDoS 的全部原理,就藏在这家奶茶店的一天里。

先把这一节的术语翻译成人话

照例先上术语对照表。这一节的术语格外多,因为攻击和防御各有一套黑话——但别慌,每一个都能在奶茶店的故事里找到座位。老规矩:读完正文回来再扫一遍,收获翻倍。

术语换成大白话生活里对应的东西
DoS(拒绝服务)说白了就是"不偷不抢,就是占着位置不让你营业"一个人堵在你店门口不走
DDoS(分布式拒绝服务)说白了就是"雇一百个人同时来堵门"——多出来的那个 D 就是"人多"三百人的排队团伙
肉鸡 / 僵尸网络说白了就是"被偷偷控制、替人干活的别人家的电脑"不知情的群众演员,日结八十块
SYN Flood说白了就是"疯狂敲门,但门开了也不进"——把登记本写满预约了一百桌的空号
反射放大说白了就是"用别人的名义群发求助信,回信全砸到你家"冒名群发"请回信",回信挤爆你家信箱
CC / HTTP Flood说白了就是"挤在柜台前只问不买",每个问题都让店员忙半天三百人轮番问"这个多少钱"
慢速攻击说白了就是"点单点到一半开始发呆",一个窗口被占一下午掏钱包掏了二十分钟
清洗中心说白了就是"路口设体检站:好客人放行,托儿请回"机场安检口
黑洞路由说白了就是"实在扛不住,直接拉闸谢客,保住隔壁店铺"弃车保帅,关店止损
Anycast说白了就是"把一家店开成全球一万个分店,洪水被摊薄"连锁店:打不过堵总店的人
高防 IP说白了就是"请保镖公司站在你门口替你挨打"商场请的专业安保团队
限流 / 验证码说白了就是"进门先取号,一次放十个,托儿嫌麻烦就走了"银行叫号机 + 排队栏杆

一句话串起整节:DDoS 是唯一"不钻漏洞"的攻击——它钻的是资源有限的死理;所以防它也从不靠补漏洞,靠的是摊薄、甄别、节流、兜底这四板功夫的组合拳。下面先算账,再拆招,最后看防御。

先算一笔账:营业要花的三样资源

要看懂 DDoS,得先承认一个朴素的事实:任何一家店能同时接待的客人是有限的,任何一台服务器能同时处理的请求也是有限的。这个"有限"具体落在三样东西上,正好对应奶茶店的三个部位。

第一样是带宽——店门口那条路。服务器与外界之间的水管粗细是固定的,比如每秒能进出 1 Gbit 的数据。路上挤满了人,真客人就挤不进来。第二样是连接数——店里的座位和点单窗口。每个客人进店都占一个位置,位置有限(操作系统的连接表、服务器的线程池都是明码标价的稀缺资源)。第三样是计算力——后厨的人手。CPU 和内存决定了每秒能做多少杯奶茶、查多少次数据库。这三样里任何一样被占满,店就瘫了——路堵死、座位占满、后厨累趴,表现形式不同,结果一样:门口挂牌"今日售罄"。

DDoS 的全部智慧就是冲着这本账来的:它不琢磨怎么撬你的保险柜,只琢磨怎么把这三样资源同时占满。而这三样资源天然有限、加钱才能变多——这就是它"无解"的根源:攻击者花的是租人的钱,你花的是扩容的钱。

DoS 与 DDoS:从"一个人堵门"到"一支军队围城"

先说老祖宗。最早的DoS(拒绝服务攻击)特别朴素:攻击者用自己的一台电脑,向目标服务器狂发请求——你一台打我一台,纯拼家底。就像一个人堵在店门口,看谁先撑不住。这个玩法在九十年代还有点市场,因为那时的服务器并不比家用电脑壮多少。但服务器产业一路狂奔,如今随便一台云服务器都远比家用电脑能扛——单挑,攻击者必输,门都堵不住。

于是攻击进化了,进化的方向不是"招更狠",而是"人更多":从一台电脑发包,变成同时操纵几万、几十万台电脑一起发包。这就是那个 D 的含义——distributed,分布式。你一家店门口,同时开来三百人、三千人、三万人。好比堵门从"一个人的蛮劲"升级成了"组织化的围城":单人再弱,架不住人海;每台肉鸡发的量不大,架不住几万台一起发。记住这个进化逻辑,后面所有内容都顺着它展开:攻击方的核心资产不是技术,是"能凑多少台机器";防御方的核心命题不是挡住每一发,是"别被总量淹没"。

第一招 · SYN Flood:疯狂敲门,门开了也不进

人海战术的第一种打法,专攻"连接数"这本账,名字叫 SYN Flood。要看懂它,得回忆一下 TCP 的三次握手(详见网络篇 § 3.2):客户敲门(第一次),店里应一声"请进"并留一个座位(第二次),客户回"来了"入座(第三次)。三次走完,连接才算建立。规矩的本意是双方都确认"你真的在、我也真的来"。

攻击者的玩法是:疯狂敲门,但永远不迈第三步。攻击程序伪造出几十万个不同的"门牌号"(源 IP),挨个发"敲门"请求;服务器每次都老老实实应声、并在连接登记表上留好座位,等对方回话——可对方永远不回。座位一个一个留出去,登记表很快写满,后来的真客户敲门时,店里已经没座位可留了,只能让他们"稍后再试"。好比有人用一百个假号码预约了一百桌,每桌都虚位以待,一整晚没有一个真客人能落座。最气人的是:服务器还很讲究,会把这些"半开连接"足足守候几十秒才肯放弃——攻击者恰恰利用这份"讲究",用极小的发包量占住极大的座位数。

防法也顺着思路来,叫 SYN Cookie:服务器学乖了,敲门的不立刻登记、不留座位,而是先回一句带暗号的话——"想进来?把这句暗号原样报回来。"真客户端(哪怕是被骗的肉鸡)若真报回了暗号,再正式留座;只敲门不接话的,一秒都不伺候。说白了,就是把"先占座后验人"倒过来变成"先验人后占座",登记本从此写不满。这招如今已是操作系统和网关设备的标配,纯 SYN Flood 在现实里已少见——但它的"占座位"思想被后来所有攻击继承:只要某样资源要"先留后用",就能被"只留不用"榨干。

第二招 · 反射放大:用别人的名义,骗来一万封回信

第二招是教科书级的"借刀杀人",专攻"带宽"这本账,也是历史上几次创纪录巨洪水的来源。它的舞台是一个互联网的先天缺陷:UDP 协议发请求时不验身份,数据包上的"寄件人"地址是发件人自己填的,网络照单全收。(详见 § 3.5 讲过的 IP 地址体系与 § 3.4 的 DNS。)打个比方:邮政系统规定寄件人地址随便写、没人查——那攻击者就能干一票大的。

具体这么玩:攻击者找到一大批"热心肠的公共服务器"——全世界的 DNS 服务器、NTP 时间服务器都是。他以受害者的地址冒充寄件人,给一万台热心服务器各发一封小小的求助信:"请把资料寄给我。"热心服务器们不知情,老老实实把大得多的回信统统寄给了受害者。攻击者自己只发了一万封小信,受害者却收到一万封大信——流量被"放大"了几十倍到几万倍,而且全部砸向同一个地址。2018 年,代码托管网站 GitHub 就挨过这样一记:攻击者借一类配置失误的缓存服务器反射,峰值流量冲到 1.35 Tbps——相当于一秒钟灌进十几万部高清电影,当时的纪录级洪水,GitHub 靠提前接好的防护通道扛了大约八分钟就缓了过来。这类"反射源"里最凶的一种,单封信能放大五万倍:攻击者发 1 个字节,受害者收 5 万字节。

这招的可怕之处在于"借力":攻击方自己的带宽只需涓涓细流,受害方的带宽却被灌成汪洋;而且替他发信的全是清白无辜的公共服务器——就像骗子上百个部门以你的名义要公函,最后你家信箱被公函塞爆,而每一个寄件部门都觉得自己在正常办公。根治它需要全世界的服务器管理员各自关好自家"回信"的口子——所以治了十几年,反射源至今扫不绝。

第三招 · CC 攻击:挤在柜台前,只问不买

第三招最刁,专攻"计算力"这本账,江湖人称 CC 攻击(也常叫 HTTP Flood)。前两招是体力活——拼流量、拼连接,动静大得吓人,流量监控曲线一眼就炸。CC 攻击反着来:每个请求都规规矩矩、完全合法,但每一个都专挑让后厨最累的活儿点。比如疯狂调用"搜索"——搜索要翻数据库、要算排序,是网站里最贵的操作之一;或者集体反复请求最重的报表页面。流量本身不大,带宽曲线平稳得像没出事,可后厨 CPU 被这些"合法订单"烧到 100%,真用户的小单子反而排不上队。好比柜台前站满了"托儿",人人正常点单窗口内问话:"这个多少钱?""帮我查查有货吗?""会员能打几折?"——每句都在规矩之内,店员每句都得认真作答,一下午过去,真正想买奶茶的客人一个都没轮上。

CC 还有个更阴的变种叫慢速攻击:不比谁发得快,比谁占得久。攻击程序故意用"蜗牛速度"发请求——连接建立了,请求头一个字节一个字节地往外挤,永远不发完。服务器只好陪着等:这条连接占着、这个线程占着、这份超时守候占着。就像一位客人走到柜台,掏钱包掏了二十分钟还没掏出来——后面排队的全被这一个"慢慢掏"的卡死。几十个这样的"慢性子",就能让一个大服务器的窗口全部当机。CC 之所以难防,是因为它的每一发子弹都穿着合法制服:防火墙没法一刀切"禁止搜索",一刀切下去先死的是真用户。甄别它靠的不是蛮力,是模式识别——这正是后面"清洗"环节的主战场。

兵源从哪来:肉鸡、僵尸网络与 2016 年那场大停电式攻击

人海战术说完了打法,该问一个要害问题了:谁肯让攻击者指挥几十万台电脑?答案是:没人肯,也不需要肯——攻击者直接偷指挥权。被偷偷控制的机器,行话叫肉鸡;成规模的肉鸡部队,叫僵尸网络。这些机器的主人完全不知情:你的旧摄像头、路由器、智能音箱、联网打印机,可能正在深夜替人"排队"。

兵源的经典配方是"弱密码 + 自动扫描"。2016 年的那个真实案例值得记一辈子:一个叫 Mirai 的僵尸网络病毒在全网自动扫描——专找摄像头、路由器这类智能设备,挨个尝试出厂默认密码,admin/admin、admin/123456 这种。攒下几十万台设备后,这支部队朝美国一家 DNS 服务商(很多大网站的"域名翻译台")发起了总攻——Twitter、Netflix、PayPal 等一大批网站不是因为自己被攻破,而是因为找不到"翻译台"而集体失联,半个美国互联网瘫了大半天。想象一下:攻击者没碰 Twitter 一根毫毛,他只是让全城所有的问路亭同时排起假队——你要去 Twitter,可你连"Twitter 在哪"都问不到了。这就是僵尸网络时代的荒诞:最坚固的城堡,可能倒在与它素不相干的邻居家门口。

更值得普通人记住的是这个事实:肉鸡产业链已经市场化到令人发指。租一个几千台规模的僵尸网络打一小时,黑市价格常常只要几十美元;专门的"打手平台"明码标价,下单体验跟点外卖差不多。本节开头奶茶店的故事里,"雇人一天八十块"不是段子——现实的汇率比这还便宜。给你的启示也简单:家里智能设备的第一件事就是改掉默认密码,别让你家的摄像头成为别人围城的兵。

生意经:为什么有人愿意花钱打你

DDoS 在大众印象里常被当成"黑客炫技",但现实里它几乎桩桩件件都是生意。常见三种动机:勒索——攻击者先打你十分钟尝尝味道,然后发信"每小时续费五千美元,否则继续";游戏、博彩、金融行业是重灾区。竞争打压——电商大促开抢的凌晨、新游戏开服的晚上、竞拍网站的收官时刻,打瘫你一小时,你的客户就是对手的客户;这种攻击最难取证,因为打你的肉鸡和收钱的对手隔着三层。纯恶意或练手——私人恩怨、黑产纠纷、甚至打手平台招揽生意的"展示作品"。

支撑这一切的是一笔冷冰冰的成本账:攻击方租用肉鸡,几十美元一小时;防御方扛洪水的清洗服务,按流量峰值计费,一次像样的攻击就能烧掉几万甚至几十万美元——还没算停业本身的损失。就像对面奶茶店花两万四雇托儿堵你一天,你为了赶走托儿请安保公司花了二十万,第二天他还来。这笔账的不对称,是 DDoS 二十多年打不绝的真正原因:攻击成本是线性的、廉价的、可停损的;防御成本是被动的、昂贵的、持续的。理解了这笔账,你就理解了后面所有防御设计的出发点——不是"消灭攻击",而是"让攻击变得不划算"。

防御总纲:摊薄、甄别、节流、兜底

看完四板攻击,该请防御方出场了。先说总纲,免得招式学了一堆、心法没入门。DDoS 防御的所有手段,归纳起来就四个词:

四板防御没有哪一板单独管用,讲究的是叠加:摊薄扛量、甄别去假、节流保底、兜底续命。下面一板一板拆。

第一板 · 摊薄:把一家店开成一万家分店

流量型攻击的逻辑是"所有洪水灌向一个地址",那防御的第一反应自然是:让这个地址背后不是一个入口,而是几百个。实现它靠两项技术。一是 CDN(详见 § 7.1):把网站内容复制到全球几万个节点,用户就近访问,你的源服务器退居幕后——攻击者打得再狠,打到的也是离他最近的那家"分店"。二是更硬核的 Anycast(任播):宣告"同一个 IP 地址,我在全球两百个城市都有入口",网络的自动寻路会把每个攻击者引向他地理上最近的入口——一个攻击源只对一个分店,洪峰被地球本身摊薄了。专业防护厂商的底气正在于此:他们敢于把一个"会被打的 IP"接到自己那张全球大网上,因为两万个入口一起挨打,每个入口都只算毛毛雨。

好比连锁奶茶店面对堵门团伙的对策:总店照开,但把点单业务分散到全城三百个分店——你雇三百人堵总店?客人早从家门口的分店买上了。当然这一板有前提:它只对"打地址"的攻击有效。如果攻击者绕过分店、直接摸到总店的门牌(源服务器真实 IP 泄露,比如你曾经用源服务器直接发过邮件、留过记录),摊薄就失效了——所以"藏好源站 IP"是这一板的前置功课。

第二板 · 甄别:路口的体检站(清洗中心与高防)

摊薄解决"量",甄别解决"假"。这项服务行话叫流量清洗:在你家所在的这条"路口"前方,设一座检查站(通常由运营商或专业安全厂商运营,国内俗称高防)。所有进出流量先过安检,检查站干三件事:看证件——只敲门不进屋的(SYN 异常)、请求头残缺的(慢速攻击)、指纹重复率奇高的(同一套脚本发的百万请求),先拦下;做试探——真浏览器收到一道小测题会答上来,脚本要么答不上要么干脆不答;称重量——超出你正常营业量几十倍的洪峰,直接在上游就分流丢弃。好比商场把安检门挪到了整条商业街的入口:好客人过完安检原路放行,毫无感知;三百个"只问不买"的托儿,在街上就被劝返了,根本挤不到柜台前。

使用方式上通常是"高防 IP":你把店的招牌挂到安保公司的大楼前(对外公布的 IP 是防护厂商的),真流量过完安检再由暗道送到你的店(源服务器)。攻击者看到的门牌永远在保镖大楼上——他要打,先得打穿安保公司的全球清洗网络;而那正是人家吃饭的本事。清洗的本质是模式识别:单看每个请求都合法,合在一起看就是"三百人整齐地问同一句话"——机器不怕请求多,机器怕的是请求"齐"。这个思路再往上走一层,就是下一节末尾要讲的"零信任"。

第三板 · 节流:进门取号,一次放十个

甄别是在路上拦假,节流是在门口限速——它对付 CC 这种"合法制服攻击"最有效。三板斧:限流——给每个来源定规矩:每分钟最多搜索十次、每秒最多下三个单,超了就请回;同一类操作设置全局闸门,柜台再忙也忙得有上限。人机校验——高峰期进门先做道小题(验证码、浏览器挑战):真人两秒答完,脚本要么不会答、要么答题成本高到不划算——托儿是按小时结钱的,让每个托儿每次进门都要答一道题,雇主就亏本了。排队与降级——洪峰期间把"即时响应"改成"取号等叫",宁可让客人排队十分钟,不让柜台被当场挤爆。

这一板最大的特点是有代价:限流会误伤手快的真用户,验证码会吓跑没耐心的客人——说白了,节流是拿用户体验换生存权,只在非常时期动用。设计得好的系统平时不启用,流量异常时逐级加码:先限匿名请求、再限高频操作、最后全站取号。节流的哲学:挡不住人来,就让人流变细——细到柜台扛得住为止。防御从来不是让攻击者绝望,而是让他"不划算"。

第四板 · 兜底:架构成绩单与降级预案

前三板都失守时,最后的底牌是你的架构平时攒下的"体质"。三样硬功夫:无状态设计——任何一个柜台倒了,客人换一个窗口就能继续办(会话不绑死在某一台机器上,配合负载均衡,详见 § 5.5);弹性扩容——云上一键临时加一百个柜台,扛过洪峰再撤(详见 § 7.2 讲的云上资源);降级预案——提前写好"弃保单":哪些功能是命根子(下单、支付),哪些是可以现场砍掉的锦上添花(推荐流、评论、排行榜)。大促或攻击期间主动关掉重功能,把全部算力让给核心链路——好比奶茶店被围时只卖三种招牌,新品、加料、拉花统统停掉:营业额缩了,但店还开着。

这一板平时完全隐形,出事时就是生死线。现实中大量被 DDoS 打垮的站点,倒下的姿势都一样:所有功能绑在一台机器上、会话绑死在单点、从没演练过"砍功能"——洪峰一到,想弃车保帅,却发现车和帅焊死了。DDoS 防御是面照妖镜:流量正常时,谁都说自己架构没问题;洪峰来了,才知道哪些设计是纸糊的。

最后一步 · 黑洞路由:拉闸谢客,弃车保帅

所有手段都试过、洪峰还是漫过了堤坝,还有最后一招,惨烈但清醒:黑洞路由。运营商把你这个 IP 的所有流量直接丢弃——相当于把整条路封死,你的网站对外彻底下线。听着像投降,其实是止损:第一,洪水被挡在运营商网络外侧,不再冲垮你所在的整片机房(不打洞,邻居家也不会被淹);第二,肉鸡们发现你"已经死了",攻击失去意义,往往就此收兵——攻击者也是要交电费的,打一个已经下线的目标毫无收益;第三,争取到的窗口期用来切换备用入口、接入清洗服务、等洪峰过去。实战中"黑洞"常常是自动的:运营商检测到某 IP 遭遇超大洪峰,会先斩后奏直接拉黑几十分钟,先保全网,再谈你家。这一招教的是防御观里最反直觉的一课:安全的最高目标不是"永不下线",而是"下线要下得可控、恢复要恢复得起"。弃车保帅不是失败,全盘皆输才是。

为什么说 DDoS 无法根治

学到这儿你可能已经品出来了:DDoS 防了三十年,防御手段一茬接一茬,攻击却越打越大——从当年的几 G 流量涨到今天的每秒数 T 流量、每秒几千万次请求。为什么?三个"难"字。溯源难:攻击流量的寄件人地址是伪造的或嫁接在几十万台无辜设备上,你抓不到"那三百个排队的人"——他们自己都不知道自己在排队。执法难:肉鸡遍布全球,打手平台注册在境外,受害方、攻击方、跳板方分属三个大洲,跨国取证的成本远高于攻击造成的损失。成本不对称:攻击方租机器按小时付费、随时止损;防御方买清洗按峰值付费、常年值守——这笔账永远算不平。

所以行业早已换了思路:不追求"根治",只追求"我防得住的量级比你打得动的量级高"。你有一 T 的清洗能力,他就得凑两 T 的洪峰;凑两 T 要花双倍的钱、冒双倍的暴露风险——当攻击成本涨到超过打你能赚到的钱,攻击自然停了。DDoS 的终局不是"消灭攻击",而是一场永远的军备报价竞赛:防御方的任务,是把自己的"防得住"标到一个让对手算账时摇头的价位。

把新闻里的数字翻译成人话:Tbps 到底是多大水量

DDoS 新闻的标题永远是一串天文数字:"峰值 1.35 Tbps""每秒 4600 万次请求"——普通人看完只剩一个模糊的"很吓人"。这里给你一个随身换算器,以后再看这类新闻,你能自己掂出分量。

先记住一个基准:一部两小时的高清电影,数据量大约 4 GB;而 1 Tbps 的意思是每秒传输 1000 Gbit——除以 8 换成字节,是每秒 125 GB。说白了,1 Tbps 的洪水,相当于每秒往你店里灌三十多部高清电影,而且是持续灌、连着灌几十分钟。家用宽带一般是几百 Mbps 到 1 Gbps(也就是 0.001 Tbps 的量级)——一场纪录级洪水的流量,够灌满几十万条家用宽带。再看"每秒 4600 万次请求":一台普通服务器满负荷每秒处理几千到几万次请求,4600 万次/秒意味着这一秒钟的请求量,够一家中型网站忙上几个小时。好比一家奶茶店平日一下午做五百杯,"4600 万次"等于要求它一秒内做完三个月的量。

数字年年涨,2021 年有云厂商扛下过 3.47 Tbps 的洪峰,2022 年 Google 报告过每秒 4600 万次请求的应用层攻击——但别被"军备竞赛"的叙事带偏了:创纪录的洪水打的都是巨头,巨头也全扛下来了。普通站点要操心的从来不是 3 个 T,而是"有没有人愿意花几百块钱租一晚上肉鸡打你"——这个量级,才是本节防御四板真正的用武之地。

挨打了怎么办:应急五步

假设你就是值班工程师,凌晨两点监控报警、网站巨卡——别慌,按流程走。这五步把本节所有知识串成一张作战卡:

作为普通用户和小站长,你能做的三件事

DDoS 的主战场在机房和运营商,但有两个身份的你其实大有可为——作为设备的主人(别当肉鸡)和作为小站的站长(别裸奔):

常见误区:四条最容易念歪的经

Analogy · 围城一日:把本节所有概念装进一家奶茶店

如果你只记住这一节的一个画面,请记住这家店的二十四小时:对面奶茶店雇了职业围城团伙,一天之内把本节的攻击与防御全演了一遍。

凌晨三点,招兵买马(僵尸网络)。团伙头子在网上下单租了一支"群演部队"——三百人,日结,来源是同城兼职群(弱密码摄像头和路由器组成的肉鸡)。群演们不知道雇主是谁,只知道"到点集合、按剧本问话"。

早上八点,水管被撑爆(流量型洪泛)。第一波进攻不讲技巧:三百人同时往店里灌人流,店门口那条小路(带宽)瞬间堵死,运原料的货车都进不来。店长的第一反应:把点单业务挂到城市连锁集团名下(CDN/Anycast 摊薄)——顾客改去全城三百个分店,总店门口堵就堵吧,生意照做。

上午十点,登记本被写满(SYN Flood)。团伙换招:三百人轮流到前台"预约留座",留完就走、永不入座。店里的座位登记本(连接表)一小时写满三本,真客人没座位。店长把前台规矩改成"先报暗号再留座"(SYN Cookie)——只留座不报号的,一律请回。

中午十二点,一封信骗来一万封回信(反射放大)。团伙盯上了旁边那栋"公共服务中心"大楼:以奶茶店的名义给大楼里一万个部门群发"请寄资料给我",一万个部门的回信全涌向奶茶店信箱——团伙自己只发了一万张小纸条,奶茶店收到的资料能装满一辆卡车。店长的对策只能报警求助市政(接入运营商清洗):在通往商业街的路口设安检站,专拦"以你名义群发"的信件。

下午三点,柜台被托儿挤满(CC 攻击与慢速攻击)。最刁的一波:三百托儿进店排队,人人规矩问话——"菜单看下?""这个多少钱?""帮查查这个的卡路里?"每句都合法,店员每句都得答;还有几位在柜台前"掏钱包"掏了半小时(慢速攻击)。安检站这次派上了用场:识别出"三百人问的话整齐划一"(模式甄别),配合门口"每人每次进门先答一道题"(验证码),托儿们的时薪成本瞬间倒挂,雇主骂骂咧咧撤了单。

傍晚六点,最坏时刻(黑洞路由)。团伙恼羞成怒加码千人,整条街不设防就要被冲垮。商业街管理处做出冷酷决定:暂时封死奶茶店总店门前那段路(黑洞路由)——总店今天不开了,但整条街保住了,隔壁店铺照常营业。两小时后洪峰退去(攻击方也是要付群演钱的),封路解除,分店体系早已接管了全部生意。

打烊复盘:店长在账本上写下三行字:摊薄——把一个门变成三百个门(CDN/Anycast);甄别——让"问话整齐"的队伍在路口就被认出来(清洗);兜底——最坏的时候,关总店、保整街(降级/黑洞)。一天的围城战教会他:DDoS 从不撬锁,只挤门;防御从不靠神墙,靠的是把门变多、把假客认出、把损失封顶——攻击者花的是时薪,你守的是账本,谁能把对方先耗到"不划算",谁就赢。

一句话送给你:本节的三个心法

收束全节,带走三句话。第一,DDoS 攻击的不是漏洞,是账本:带宽、连接、算力三本账,占满任何一本你就得挂牌停业——所以它无差别,也无可修补。第二,防御是组合拳,没有单板救命:摊薄扛量、甄别去假、节流保底、兜底续命,四板叠起来才叫防线。第三,胜负在成本账上见分晓:攻击按小时付钱,防御按峰值付费,谁先把对方耗到"不划算",谁就赢下这一局——这是消耗战,不是破阵战。带着这三句话往下走:这一章讲了守门(加密、证书)、讲了拆招(四板斧)、讲了扛洪(DDoS)——下一节换个视角看"绕路":VPN 和代理,流量怎么走隧道、怎么借道中转、怎么在不能直连的地方修出一条暗道。

Recap · 收束

一句话总结:DDoS 不撬锁、不偷卡、不钻漏洞,只做一件事——用海量的假需求占满你有限的真资源;攻击方拼的是"能凑多少人",防御方拼的是"摊薄、甄别、节流、兜底"四板功夫和一笔算得过的成本账。

机制上记住五件事
· 三本账:带宽(水管)、连接数(座位)、计算力(后厨)——占满任何一本,店就瘫;攻击选哪本,防御看哪本。
· 四种打法:SYN Flood 敲门不进屋(占座位)、反射放大借刀杀人(撑水管,一封小信骗万封回信)、CC 挤柜台只问不买(烧后厨)、慢速攻击掏钱包掏半小时(占窗口)。
· 兵源是肉鸡:僵尸网络=被偷了指挥权的几十万台无辜设备;Mirai 用出厂默认密码攒兵,2016 年一役打瘫半个美国互联网的"问路亭"。
· 防御四板:摊薄(CDN/Anycast,把一个门变一万个门)、甄别(清洗中心/高防,路上拦假)、节流(限流/验证码,门口限速)、兜底(无状态/弹性扩容/降级,最后拉闸保命)。
· 黑洞路由:弃车保帅的终极止损——先保全网、再保恢复,下线要下得可控,恢复要恢复得起。

下一步:攻与防讲完了,下一节看"绕路"的学问——VPN 怎么把流量装进加密隧道、代理怎么替你转交包裹、正向反向各是谁替谁跑腿。同一条技术,既是企业组网的正道,也是个人"翻墙越狱"的道具:§ 8.5 VPN 与代理。

☰ 主页
Xue Hai Wu Ya · Network · § 8.4 · DDoS 与防护