今天在这个行业里摸爬滚打的人,大多有过一个共同的起点:面对海量的安全知识,第一脚不知道往哪儿踩。如果让我给刚入行网络安全的朋友列一个第一阶段必学清单,DDoS攻击一定排在前面。这个结论不是因为它听起来唬人,而是因为DDoS攻击代表了一种完全不同的威胁模型——它不靠绕过权限,不靠代码漏洞,纯粹用流量把目标资源耗尽。说白了,它不跟你讲技术细节,就是靠“量大”来欺负人。我当初学习网络安全的第一个阶段就是从这个专题入手的,今天把这篇学习笔记整理出来,希望能给同样在打基础的朋友一些参考。
这篇文章适合三类人:刚入门想建立整体认知的新手、在企业做运维或安全值守时被DDoS搞过头疼的人、准备参加网安赛事想补基础的选手。内容会覆盖概念原理、攻击类型、识别手段、防御落地和学习路线,也就是第一阶段最该搞懂的那些东西。放心,后面每一段都是可以照着操作的经验,不是教科书式的罗列。
1. 第一阶段为什么先啃DDoS:学习路线与目标设定
1.1 从学习路线看DDoS在知识体系中的位置
第一阶段的网安学习,通常要过四关:网络协议基础、操作系统基础、常见攻击原理、防御与应急。在这四关里,DDoS是少有的能把协议、系统、流量、运维串联起来的一个专题,所以很多学习路线会把它放在“常见攻击原理”这个环节里,作为第一个完整的安全事件场景来学。
我自己的学习顺序是这样的:先花一段时间把TCP/IP三次握手、HTTP请求响应流程搞清楚,然后直接进DDoS专题。理由是DDoS攻击涉及的SYN Flood、UDP反射、HTTP Flood这些手法,全都是基于最基础的协议特性在“钻空子”。把这个专题啃下来,相当于同时复习了网络基础、操作系统参数和Web服务配置,一举三得。
如果对照现在比较热门的网安赛事和学习平台,DDoS相关的攻防思路在CTF、AWD攻防赛里也会出现,比如流量分析、运维场景应急题。国内一些赛事比如泰山杯,以及各类XCTF分站赛,都会在综合运维题里考察这类知识。所以这个专题不是“纯理论”,它在比赛中、在求职面试里都是高频出现的。
1.2 第一阶段需要掌握的核心能力清单
第一阶段学DDoS,我不建议一上来就研究复杂的大型攻击架构,先把五个能力点钉死:
- 能说清DDoS和DoS的区别,理解“分布式”三个字意味着什么。
- 能识别最常见的几类攻击流量特征,知道它是怎么把资源耗尽的。
- 能用量化指标判断一台服务器是否处于被攻击状态,而不是凭感觉抓瞎。
- 能在不加硬件的条件下,用系统自带和开源软件的手段做初步缓解。
- 能搭一个最小靶场环境,在合法前提下观察攻击与防御的全过程。
这五点就是整个阶段学习的主线。我在后面每个章节里都会围绕这五点展开。
这里插一个体会:很多新手学DDoS的第一个错误是急着找攻击工具。实际上,在合法合规的前提下,第一阶段研究攻击的目的只有一个——更好的防御。所以本文后续所有关于攻击机制的描述,都是站在“知道敌人怎么打,才知道怎么挡”的角度去写的。这个原则,后面我还会反复强调。
2. DDoS攻击的本质与攻击链路拆解
2.1 攻击原理与一句话模型
DDoS,全称Distributed Denial of Service,中文译为分布式拒绝服务。注意这里的关键词是“拒绝服务”,不是“入侵”。攻击者并没有破解你的密码、没有上传后门,但你的网站、系统就是不可用了,因为所有能服务用户的资源都被某种流量占满了。
我自己总结的一句话模型是:DDoS是把你的资源耗尽,让正常用户无法获得服务。这里说的资源包括带宽、连接数、CPU、内存,甚至应用处理线程池。只要有一个资源被打满,服务就处于“拒绝服务”状态。
用一个生活化类比:一家奶茶店正常每天接待300个顾客,突然来了3000个人把门口堵死,店里店外全是人,真正想买奶茶的人根本挤不进去。这不是因为奶茶店被“入侵”了,而是“可用空间被占满”。DDoS攻击做的事情,就是不断往奶茶店门口“塞人”。
这个模型看起来简单,但它能解释后续所有的攻击变种:SYN Flood塞的是连接队列,UDP Flood塞的是带宽,HTTP Flood塞的是应用处理能力。理解了资源维度,你就可以针对每种攻击快速判断哪些防御手段才有效。
2.2 攻击链路的三个关键角色
一条完整的DDoS攻击链路通常包含三个角色:
- 攻击者:真正的指挥者。
- 受控主机:被僵尸网络控制的大量机器,可能是服务器、PC、IoT设备。这些机器被种上恶意程序后,统一听从指令发起请求。
- 攻击目标:受害者的服务器、IP或应用。
攻击者在发出指令后,分散在各地的受控主机同一时间向目标发送特定类型的流量,目标瞬间被流量淹没。这是“分布式”的核心特征:请求来自成千上万个不同IP,来源分散,防御方很难通过封禁少数几个IP解决问题。
从学习角度看,理解这条链路比记术语更重要。因为后续很多防御方案都是在链路的某一个环节上做切断:要么在源头上清理僵尸网络,要么在骨干网络上做流量清洗,要么在目标侧做资源扩容或指纹识别封禁。你在面试时能把链路讲清楚,比单背一个概念更能体现功底。
2.3 为什么DDoS难以根治
学习过程中最容易产生的困惑是:为什么大家都知道DDoS攻击存在,却不能彻底防住?我总结下来有三层原因。
第一层,攻击源不可信。互联网通信模型基于IP,但IP本身可以被伪造。攻击者通过伪造源IP可以隐藏真实来源,也可以让流量变成反射放大。第二层,攻击成本不对称。攻击者控制一台机器、一根带宽的成本很低,但防御方要扛下这些流量,需要的带宽和计算资源成本却高得多。这就是所谓“低成本高破坏”的不对等关系。第三层,协议设计初衷是开放。TCP/IP协议在设计时更多考虑互联互通,没有内置身份认证,这让任何人都可以往任何目标发送数据包。
理解了这三层原因,你就明白为什么DDoS防御从来不是“买一个设备就万事大吉”,而是一个需要预案、监控、清洗、扩容多种手段配合的工程问题。这也是我在后续防御章节里反复强调“分层”的原因。
3. 常见攻击类型与特征识别
这一部分我结合自己做过的小实验和日常观察,把最常见的几类攻击拆开讲,每一类都会给出识别要点。
3.1 网络层攻击:SYN Flood、UDP Flood、ICMP Flood
SYN Flood是历史最悠久、也是学习时最先接触的一种攻击。原理很简单:TCP连接需要三次握手,第一次握手是客户端发送SYN包,服务端收到后回复SYN-ACK并等待客户端的ACK包来完成连接。正常情况下客户端会回应ACK,但在攻击场景中,攻击者发送大量SYN包却不回应ACK,导致服务端维护了大量“半开连接”,把连接表空间和内存全部耗光,新来的正常TCP请求无法完成握手。
我第一次看到SYN Flood的全过程时,印象最深的不是流量大小,而是系统里SYN_RECV状态的数量像疯了一样往上涨。用netstat -an统计,正常时可能只有几个SYN_RECV,攻击时直接冲到几万。处理这种攻击的关键参数是tcp_syncookies,开启后系统会在半开连接超出一定数量时,不再维护半开状态,而是通过编码放入SYN-ACK中,等客户端ACK确认时才重建连接。后面防御部分我会给出具体配置。
UDP Flood则是向目标端口发送大量UDP包,目标系统会尝试处理这些数据包,或因为找不到对应程序而回复ICMP不可达,导致带宽和CPU被消耗。如果攻击流量达到数Gbps,那对服务器带宽就是直接打穿,根本不用等到CPU出问题。
ICMP Flood俗称Ping洪水,用大量ICMP Echo请求消耗目标带宽和处理能力。现代网络中这种攻击往往会被限制频率,但学习过程中可以抓包观察特征:源IP持续变化、包大小固定、速率极高。
3.2 反射放大攻击:DNS、NTP、Memcached
反射放大攻击第一次让我意识到“协议特性可以当武器用”这件事。它的原理是:攻击者伪造受害者IP作为源地址,向网络中开放DNS、NTP等服务器发送体积很小的查询请求,服务器会把体积大得多的响应数据发送到那个伪造的IP,也就是受害者。这样攻击者用很小的流量就诱导产生了巨大的回包流量,而且因为响应来自正常服务器,防御方很难全封。
经典协议的放大倍数,大致是:DNS查询如果用ANY类型,倍数可能达到几十倍;NTP的monlist请求历史上可以达到上百倍,很多老管理员都知道要关闭NTP monlist;Memcached在暴露到公网且未配置ACL时,倍数甚至能达到上万倍。这些数值在教科书里常见,但我建议你更关注防御侧的判断方法:只要看到来源IP是大量不属于自己网络范围、且都是大UDP包涌入目标,就基本可以怀疑是反射放大。
这里有一个实际经验:当你发现自己服务器收到大量来自DNS/NTP标准端口(53、123)的UDP响应包时,先不要急着拉黑这些服务器,因为它们也是被利用的受害者。正确的处理方式是先丢弃这些协议的高倍数请求,再考虑上游清洗。
3.3 应用层攻击:HTTP Flood、慢速攻击
应用层攻击是第一阶段学习中最接近“真实业务”的一类。HTTP Flood也叫CC攻击,攻击者不断向目标Web应用发送看起来完全正常的HTTP请求,比如反复访问一个消耗数据库的查询接口,让应用服务器CPU或数据库连接被打满。它的特点是流量总量可能并不高,几十Mbps就能把一个应用打瘫,因为瓶颈在应用层的处理逻辑,而不是带宽。这种攻击最难防御,因为请求本身看着合法。
慢速攻击同样值得了解。比如Slowloris,攻击者建立HTTP连接后一直不发送完整数据,也不关闭连接,把Web服务器的并发连接数慢慢占满。防御方式是限制每个IP的并发连接数、设置请求超时时间。这类攻击虽然在真实战场上不如大流量攻击常见,但在面试和赛事题目里出镜率很高。
3.4 攻击特征对比表
为了方便后续识别,我把第一阶段的重点攻击特征整理成一张速查表:
| 攻击类型 | 常见于 | 流量特征 | 对目标的主要影响 | 初步识别手段 |
|---|---|---|---|---|
| SYN Flood | 网络层 | SYN包速率极高,半开连接暴涨 | 连接耗尽、握手失败 | netstat统计SYN_RECV状态连接数 |
| UDP Flood | 网络层 | 大量UDP小包或大包涌入 | 带宽打满、CPU处理过载 | 带宽监控、抓包看UDP包比例 |
| ICMP Flood | 网络层 | Echo请求包速率异常 | 带宽和CPU消耗 | ping丢包率突变、抓包确认 |
| DNS/NTP反射放大 | 反射型 | UDP大量来自DNS/NTP标准端口的响应包 | 带宽瞬间打满 | 端口统计,目标端口53/123收到巨量响应 |
| HTTP Flood | 应用层 | 请求速率高但流量不大,IP分布分散 | 应用CPU/数据库连接耗尽 | Web日志分析、请求频次统计 |
| 慢速攻击 | 应用层 | 长时间不完整的HTTP连接 | 并发连接数占满 | netstat连接存活时间过长 |
新手要注意,真实场景里的攻击往往是混合的。攻击者可能先打SYN Flood把网络层打乱,再补HTTP Flood把应用层拖垮。所以识别时要综合看带宽、连接状态、请求日志、CPU负载四项指标,而不是只看其中一个。
4. 被打了怎么发现:攻击识别与影响范围判断
学习阶段掌握识别方法,能帮你在值班时第一时间判断“是不是被打了”。这是硬技能,也是把前面理论知识落到实处的关键。
4.1 从网络指标发现异常
被DDoS攻击时,最先变化的往往不是应用日志,而是基础设施指标。我在学习过程中养成了四步观察习惯:
- 先看带宽监控:入方向或出方向流量是否出现尖峰。如果平时只有100Mbps,突然飙到1Gbps以上,基本可以确定有异常流量。
- 再看TCP连接状态:执行ss -s或netstat -an,重点看SYN_RECV和ESTABLISHED数量。SYN_RECV持续高位说明可能存在SYN Flood。
- 三看系统负载:load average、CPU使用率如果长期居高不下,且没有明显合法业务增长,要高度警惕应用层攻击。
- 四看协议分布:在流量可疑时用抓包工具采样,看UDP包占比是否异常升高。
这四步不需要专业设备,只要服务器有基础监控系统就能完成。我用过最朴素的方式就是cron定时脚本配合netstat,每10秒记录一次连接状态,攻击时能看到明显波形。虽然有点原始,但对于学习阶段建立“指标敏感度”非常有帮助。
4.2 日志与流量分析要点
如果说网络指标是“报警器”,日志和流量就是“取证现场”。Web日志里要重点找几类痕迹:某个URL的请求频率异常高、大量请求来自同样一批UA或IP段、请求成功率下降但请求量增加、不同IP却在极短时间内重复相同行为。这些都是应用层攻击的常见特征。
流量分析的入门办法是抓包。我在靶场环境里常用tcpdump抓一段时间的流量,然后用Wireshark打开做统计。比如过滤udp && length > 1000,能快速看到是否存在大量大UDP包;统计tcp.flags.syn,可以看SYN包总数和速率。抓包本身是防御研究的重要手段,也是学习网络协议的好方法。不要觉得这是高深技巧,只要能把捕获文件导入Wireshark,点开Statistics菜单看协议分层和端点统计,大部分特征都能浮出水面。
4.3 损害评估与影响范围
如果确认正在被攻击,需要立刻评估影响范围,这个评估结果直接决定应急策略。我通常按三个层面判断:
服务可用性层面,看网站是否已无法访问、接口是否超时、对外服务成功率是多少,用外部探针或拨测工具观察。基础设施层面,看带宽是否被打满、CPU是否持续满载、连接表是否耗尽,判断还有多少冗余可用。业务影响层面,看受影响的是全部用户还是部分地域,是否只影响某一个回源机房。通过分布在不同区域的拨测点可以判断地域影响范围。
影响范围清楚了,才能决定是原地防御还是切流量。如果只是本机带宽被打满,且业务可以接受切换,那就启用备用IP加防火墙规则缓解;如果全机房都受影响,就只能依赖上游清洗能力。这个决策逻辑,我在实战中反复使用。
5. 防御实战:从服务器到边界的三层防线
防御部分是第一阶段学习的落地点。我用自己的Linux服务器和一个练习用Web应用做过一次完整的防护演练,把过程拆出来,配置可以直接参考,但每个参数我都会解释背后的原因。
5.1 服务器层面:内核参数调优
即使没有专门防护设备,Linux服务器也可以通过调整内核参数扛住一定规模的攻击。下面是我演练时用到的部分配置:
# 启用SYN Cookies,防SYN Flood net.ipv4.tcp_syncookies = 1 # SYN重试次数调低,减少半开连接等待时间 net.ipv4.tcp_syn_retries = 3 net.ipv4.tcp_synack_retries = 2 # 缩短TIME_WAIT时间,快速回收连接 net.ipv4.tcp_fin_timeout = 15 net.ipv4.tcp_tw_reuse = 1 # 增大连接队列,让瞬时大并发有缓冲 net.core.somaxconn = 4096 net.ipv4.tcp_max_syn_backlog = 8192 # 限制UDP缓冲区上限,减少UDP Flood带来的内存压力 net.ipv4.udp_mem = 65536 65536 112768改完记得执行sysctl -p让配置生效。
配置里的参数我逐个说下理由。tcp_syncookies是最关键的一项,它能把半开连接从内存中卸掉,代价是略微增加CPU计算量,但相比连接耗尽导致的瘫痪,这点成本非常划算。tcp_syn_retries调低是让系统在收不到客户端ACK时更快放弃半开连接,不给攻击者“占着茅坑”的机会。udp_mem限制UDP缓存队列,可以避免UDP Flood时内存被大量数据包占满。
需要提醒的是,这些参数不是越大越好或越小越好。比如tcp_max_syn_backlog如果设得太高,半开连接反而会占用大量内存;fin_timeout设得过短,对正常长连接可能有影响。新手第一次配置时,建议先在测试环境压一压看看效果,再上生产。
5.2 应用层防护:Nginx限流与主动封禁
如果应用是Web服务,Nginx是性价比很高的第一道应用层防线。我在演练中对一个练习接口做了三类配置。
第一类是连接数限制,限制单个IP并发连接:
limit_conn_zone $binary_remote_addr zone=perip:10m; server { listen 80; limit_conn perip 20; }第二类是请求频率限制,限制单个IP每秒请求次数:
limit_req_zone $binary_remote_addr zone=reqlimit:10m rate=5r/s; server { location /search { limit_req zone=reqlimit burst=10 nodelay; proxy_pass http://backend; } }第三类是封禁明显异常的IP或IP段。如果从日志里确认了一波攻击IP,可以快速在防火墙层封掉:
iptables -A INPUT -s 192.0.2.0/24 -j DROP这里有个实操技巧:封IP要配合规则更新和自动脚本,不要只靠手工。我在演练中写了一个小脚本,定期从Nginx access日志里统计单个IP的请求频率,超过阈值就自动写入iptables黑名单,并保留解封逻辑防止误封。脚本本身不复杂,但能让你体会“自动化响应”在防御中的价值。
5.3 边界与云防护:流量清洗与容量弹性
当攻击流量大到本地服务器无法承接时,服务器层面的调优已经没有意义。这时候需要的是上游的流量清洗能力。现在的云厂商普遍提供DDoS基础防护和高防产品,原理都是把流量引流到清洗中心,清洗中心识别并丢弃攻击流量后,再把干净流量回源到你的服务器。
这里有几个关键概念需要理解:
高防IP是给你的业务分配一个经过清洗的IP,攻击流量先到高防所在地,再回源到真实服务器。优点是部署简单,缺点是如果攻击超过所购防护能力,还是会被打穿。流量调度是通过DNS或BGP切换把业务流量调度到高防节点,适合多线多地域业务。基础防护加弹性带宽则适合中小规模攻击,遇到突发攻击时临时扩容带宽,配合本机防火墙规则缓解。
我个人建议:第一阶段的你把“本地参数调优、应用层限流、云上清洗”这三层都理解一遍,不一定要全部上线,但要知道各自的适用场景。平时的小攻击靠前两层就能顶住,大流量攻击最终要靠上游。
5.4 一个完整的应急响应流程示例
把前面几个环节串起来,我在演练中执行过的应急流程是:
- 收到监控告警,带宽或连接数异常。
- 5秒内用netstat和监控面板判断攻击类型,确认是SYN Flood还是HTTP Flood,必要时tcpdump抓包保存证据。
- 如果是网络层攻击,开启sysctl优化参数,并在防火墙封禁重点攻击源IP段。
- 如果是应用层攻击,调整Nginx限流配置,对可疑IP做临时封禁,优先保证正常业务可用。
- 观察3至5分钟,评估本地能否扛住;扛不住则开启云上高防或切换流量到清洗节点。
- 攻击结束后,保存完整流量和日志样本,整理时间线。
这套流程里最容易出错的是第3步和第4步的判断混淆。如果你把SYN Flood当成HTTP Flood去处理,去调Nginx限流,那是浪费时间,因为流量根本没到Nginx,还在内核协议栈就被打满了。反过来,如果实际是HTTP Flood,你只调内核参数也没用,因为瓶颈在应用层。所以“先判断类型,再选防御手段”这条原则,怎么强调都不过分。
6. 动手实验的正确姿势:靶场与自建环境
DDoS这块光看书是不够的,必须上手抓包、看连接状态、调参数看效果。但这类实验有很高的合规边界,我必须先说清楚。
6.1 实验前提与授权边界
DDoS攻击实验只能在两类环境中进行:一是自建的隔离靶场,也就是你独享的、没有真实用户的测试环境;二是由主办方明确授权的CTF、AWD、安防演练靶场。绝不允许对任何真实网站、真实学校或企业的业务系统进行攻击测试,哪怕是出于“看看能不能防住”的好奇心也不行。没有授权的攻击行为属于违法行为,这个红线碰一次就够了。这不是客套话,是每个安全从业者都必须刻在脑子里的边界。
具体到第一阶段目标,实验的正当目的有三个:观察正常流量和攻击流量在抓包上的差别、验证内核参数调优前后的抗压能力变化、练习从监控指标到日志分析的完整排查流程。只要围绕这三个目的,实验就是安全且有价值的。
6.2 最小实验环境搭建
不需要昂贵的硬件,一台普通Linux服务器加一台作为压力来源的客户端就够。我用的方案是:
靶机用一台4核4GB内存的云服务器,装好Nginx和SSH,先记录正常运行时的带宽、连接数、CPU基线。压力来源用另一台服务器,或者直接用本机脚本,向靶机发起受控的压力流量。注意控制时长和强度,我一般控制在10分钟以内,强度从低往高逐步加。网络分析是在靶机上用tcpdump抓包保存,结束后用Wireshark分析。
压力生成工具比较多,但这里我不推荐也不展示具体攻击工具的用法,因为如果你现在的目标是学习防御,完全可以用“持续curl请求”这类基础方式模拟HTTP请求洪峰,再用网络测试工具查看协议层反应。重点是把观察到的现象记录下来,而不是追求“打得多狠”。
6.3 实验记录与抓包分析体会
实验最值钱的部分其实是记录。我每次实验都会记一张表:攻击开始时间、攻击类型、带宽数值、SYN_RECV数量、CPU负载、访问日志异常率、是否存在超时请求。攻击结束后对比基线,就能很直观地看到“这个攻击到底打穿了哪个资源”。
刚开始做实验时,我犯过一个很典型的错误:只看带宽监控,觉得带宽没打满就认为攻击没有效果,结果忽略了半开连接数早就爆了。后来把连接状态列进记录表,才发现真正的瓶颈不在带宽而在连接表。这个案例能说明一个道理:防御研究必须多维度观察,单一指标很容易误导判断。
7. 常见问题与避坑实录
学习DDoS的过程中,我踩过不少坑,也看过同行踩的更深的坑,整理几条典型问题,希望能帮你少走弯路。
7.1 新手容易犯的几个认知错误
第一个错误是总想搞清“多大的流量能打死一个目标”。这个问题本身就不该问,因为不同架构、不同带宽、不同防护措施下结果差异太大了,而且这类研究只对有授权的靶场才有意义。真正该做的是反过来思考:我的目标服务在什么流量规模下会受损,需要预留多少冗余。
第二个错误是本末倒置,花大量时间研究攻击工具的用法,却连TCP三次握手都讲不清楚。DDoS的攻防本质建立在协议原理之上,协议不懂,工具玩得再熟也只会成为脚本小子,面试时几句话就能被识破。
第三个错误是忽略业务视角。防御配置不是越严格越好,把Nginx限流设成每IP每秒一个请求,攻击确实挡住了,但正常用户也进不来了。做防御的人必须理解业务容忍度,才能做出合理的防护策略。
7.2 防御配置踩坑记录
在真实配置过程中,我记忆比较深的一段记录是这样的:第一次开启tcp_syncookies后,以为万事大吉,结果过了一段时间才发现部分老旧的代理服务器过来的正常用户连接成功率下降了。原因是syncookies开启后有些老客户端不兼容,导致部分正常连接被丢弃。所以任何一个内核参数的调整,都要在测试环境里验证兼容性。
另一个坑是关于iptables封禁的顺序。iptables规则是按照链里顺序逐条匹配的,如果顺序插入不对,比如把DROP规则放到最后,前面又有ACCEPT规则匹配了同一类流量,那封禁规则根本不会生效。排规则时我习惯先想清楚匹配方向,再用iptables -nvL查看计数是否符合预期。
还有一个容易忽视的点:Nginx的limit_req采用的是漏桶算法,burst参数配得不合理会导致瞬时正常流量全部被拒绝。我当时的教训是burst设得和rate太接近,稍微有点突发就把请求打了回去,用户体验变得很差。之后我改成保留2到3倍burst,再配合日志观察实际通过率才稳定下来。
7.3 问题排查速查表
把日常排查过程中最高频的问题整理成一张速查表,方便值班和面试前复习。
| 现象 | 可能原因 | 快速检查命令/方法 | 初步处理 |
|---|---|---|---|
| 网站打不开,带宽爆满 | UDP Flood或反射放大 | 查看带宽监控、抓包统计UDP占比 | 启用上游清洗,紧急丢弃异常UDP来源 |
| 连接数暴涨但带宽正常 | SYN Flood | ss -s看SYN_RECV数量 | 开启tcp_syncookies,限制半开连接 |
| 请求缓慢、CPU满载 | HTTP Flood | 查看访问日志、请求频率统计 | 启用limit_req,封禁异常IP |
| 大量并发连接长期占满 | 慢速攻击 | netstat看ESTABLISHED存活时间 | 设置请求超时、限制单个IP并发 |
| 封了IP没有效果 | 规则顺序或源IP伪造 | iptables -nvL检查顺序和计数 | 调整规则链顺序,改用协议层指纹 |
这张表适合贴在工作台旁边,也适合当作学习笔记的小结反复看。
我个人在实际操作中的一个体会是:DDoS防御不能等到攻击发生时才去想该做什么。把上面这套监控、判断、缓解、升级的流程写成文档甚至脚本,定时做一次演练,比临时抱佛脚有效得多。每次攻击也都是一次绝佳的复盘机会。
如果你也正在网安学习的第一阶段,我的建议是先搭个最小靶场,按这个笔记里的章节一步步走:理解原理、看类型、练识别、做防御、搞实验。走完一遍,你再看那些复杂的商业防护方案,心里就有底了。这个专题之后,下一步你可以按学习路线继续啃Web安全或系统加固,DDoS这一关打下的基础不会白费。