看到日志里密密麻麻的陌生IP就急着去封禁和追查归属地,往往会导致误伤正常用户且无法缓解带宽压力。正确的做法是先利用日志判定攻击落在网络层、传输层还是应用层,再根据协议特征决定是在边缘清洗还是在源站限流。

日志能定位攻击类型,定位不了攻击者
在多数人的直觉里,拿到日志就能找到攻击者,但在UDP反射放大场景下,这一逻辑完全失效。日志中记录的源IP并非攻击者的真实地址,而是被利用的公共服务器(如NTP服务器)的地址。以运行在 UDP 123端口的NTP服务为例,由于UDP协议无状态特性,攻击者极易伪造源IP。当攻击者向互联网上开放的NTP服务器发送微小的查询请求时,利用历史漏洞CVE-2013-5211中的monlist功能,可诱发最高达5500倍的响应数据包回弹至受害者目标IP。
因此,日志分析的真正价值不在于锁定攻击者身份,而在于交付三样东西:攻击落在哪一层、使用的是什么协议手法、需要在哪一层做处置。对于反射类攻击,溯源的终点是一份反射源清单与流量特征集合,而非攻击者的地理位置。若此时依据日志中的源IP进行封禁,实际上是在封禁一批无辜的公共基础设施,既无法切断攻击源头,又可能引发合规风险。
入方向流量与端口分布:UDP 123、DNS等反射端口怎么读
第一份关键证据来自网络层的入方向流量采样。运维人员需重点关注入方向带宽曲线、包速率(pps)与端口/协议分布三项指标。当发现流量集中涌向单一UDP端口时,即可初步定性为反射放大攻击。例如,UDP 123端口对应NTP反射,而DNS、CLDAP等同属常见的反射端口族。
判读这组特征的核心在于“不对称性”:目标端口固定为受害服务端口,源端口固定为协议默认端口(如123或53),源IP高度离散且分布在全球各地的开放服务上。此外,单包体积通常偏大,且请求侧几乎无对应的出流量。这种流量形态足以证明攻击采用了反射放大手段。鉴于源IP不可信,此时的处置重点应从“追人”转向“断路”,即识别出哪些协议端口正在被滥用,并在防火墙或边缘节点对这些非业务必需的UDP端口执行入向丢弃。
连接状态与四层计数:半连接、并发与新建速率的分工
第二份证据来自四层连接状态统计。与网络层洪水不同,传输层攻击更侧重于耗尽服务器的连接资源。通过按状态分桶统计连接数,可以清晰区分攻击形态:半连接(SYN_RECV)堆积通常对应SYN洪水攻击,而大量ESTABLISHED状态但实际请求量极低则指向慢速连接占用。
在此阶段,必须严格区分“并发连接总量”与“每秒新建连接速率”这两个指标。前者反映当前占用的资源水位,后者反映攻击的冲击强度。需要注意的是,即便在四层统计中发现了异常,同样无法给出攻击者身份,因为SYN类洪水的源IP同样可以通过TCP握手过程中的欺骗技术进行伪造。四层计数的核心作用是帮助运维判断事故性质是“连接耗尽”还是“带宽打满”,从而决定是调整内核参数限制连接数,还是提升带宽容量或启用流量清洗。
access.log与limit_req限流日志里的七层特征字段
第三份证据源自七层请求日志,这是区分怎么区分是DDoS还是CC攻击的关键领域。CC攻击与网络层洪水的根本区别在于,它会在access.log中留下完整的HTTP请求记录。有效的判读组合包括URI集中度、User-Agent与Referer的同质化程度、请求间隔的规律性以及单IP的请求速率。
NGINX的ngx_http_limit_req_module模块采用漏桶算法进行限流,其配置语义如下表所示:
| 指令/参数 | 作用域 | 核心功能 | 备注 |
|---|---|---|---|
| limit_req_zone | http块 | 定义共享内存字典大小与速率上限 | key通常为$binary_remote_addr |
| limit_req | location块 | 控制超出速率请求的处理策略 | 配合burst与nodelay使用 |
| burst | location块 | 设置突发缓冲区大小 | 允许短暂超额请求进入队列 |
| nodelay | location块 | 即时放行超额请求 | 不排队,直接处理或拒绝 |
被限流的请求会在错误日志中留下记录,这是七层唯一源IP基本可信的一类证据。在分层能力对照方面,RockCloud的高防CDN与WAF在边缘侧保留七层请求与拦截日志,这与源站自有日志形成互补:网络层反射流量在边缘被吸收后,源站不会留下该层日志,但七层请求记录仍可在边缘侧获得。运维人员需注意,接入此类边缘防护后,必须确认真实IP透传配置,否则源站日志中的源IP维度将整体失效,导致限流key退化为回源IP,进而误伤全站用户。

反射源清单与伪造源IP:溯源真正能交付什么
收束前三层证据,我们需要重新审视溯源的价值。在反射放大链路上存在三个角色:攻击者、被利用的开放反射服务器、受害者。受害者侧日志只能看到中间这一层。因此,可交付的成果并非攻击者身份,而是一份反射源清单——列出哪些开放服务被利用、集中在哪些协议与端口,以及一组流量特征——包括包长、源端口和速率曲线。
这份清单与特征集具有极高的实战价值,可用于上报运营商申请上游过滤、提交给云服务商制定清洗策略,或作为内部协议加固的依据。源IP伪造依赖UDP的无状态特性,这是协议层面的固有性质,而非简单的配置错误。试图通过日志穿透这一机制去寻找背后的操控者,在缺乏跨机构情报协作的情况下,往往徒劳无功。
日志失效的三种场景:链路打满、上游黑洞与采样断档
日志分析并非万能,在以下三种场景中,源站侧日志已失去意义。首先,当链路带宽被打满时,数据采集本身会丢包,日志写入受影响,看到的曲线是被截断的失真数据。其次,上游运营商触发黑洞路由后,入流量归零,日志呈现的是“攻击停止”的假象,实则业务已中断。最后,若NetFlow/sFlow采样比过高或采样中断,小包高频攻击会被严重低估。
据Cloudflare报告,2026年上半年出现了935起超过1 Tbps的超大容量网络层DDoS攻击,其中第二季度环比第一季度激增519%;DNS泛洪攻击在网络层攻击中的占比攀升至40.0%,CLDAP反射洪水环比激增580%。在这种量级下,单机与普通机房根本没有留下有效日志的机会,判定必须前移到边缘。关于接入CDN后日志里全是回源IP怎么办,核心解决方案依然是依赖X-Forwarded-For等头部字段的真实IP透传,若未正确配置,七层日志将无法用于CC攻击的IP维度分析。
从判定结论到处置动作:三层证据各自接哪一层动作
最终的行动指南是将每层判定结论映射到具体处置动作。如果入方向端口分布判定为反射放大,动作应是端口收敛与非业务UDP端口的入向丢弃,并将吸收动作放到边缘而非源站。如果四层连接状态判定为连接耗尽,动作应是实施连接数与新建速率限制,并收紧超时参数。如果七层日志判定为CC攻击,动作则是基于limit_req的速率限制与规则拦截。
对于已经遭受过大流量冲击的业务,可以参考应对T级超大流量DDoS攻击的架构方案来优化网络拓扑。同时,若怀疑源站IP泄露,应参照源站IP泄露后的应急处理与修复步骤进行整改。建议按本文的三层证据顺序先把这次事故定性到具体层级,再决定处置动作;如果判定结论落在“链路已被打满、源站侧日志已经失去意义”这一档,可以评估把清洗与七层判定前移到边缘,RockCloud 的高防CDN与WAF 提供这类边缘承载与请求日志能力,接入前建议先确认真实IP透传与回源收口配置。
常见问题
服务器出现异常后应该按什么顺序去看哪几类日志?
应按网络层、传输层、应用层的顺序排查。先看入方向流量图确认是否带宽打满,再看连接状态统计确认是否资源耗尽,最后看access.log分析请求特征。此顺序能快速排除底层物理瓶颈,避免在应用层浪费精力。
udp 123端口大量入流量是什么攻击?
这通常是NTP反射放大攻击。UDP 123是NTP服务端口,攻击者利用monlist等功能伪造源IP发起请求,导致大量响应流量倒灌。特征是源IP离散、单包较大且无明显对应出流量,需立即检查NTP配置或阻断该端口。
DDoS攻击源IP是伪造的还能溯源吗?
无法溯源到真实攻击者,但可溯源到反射源。日志中的IP是被利用的公共服务器。真正的“溯源”成果是整理出被滥用的协议端口与反射源列表,用于向ISP申诉或在防火墙上针对性封堵这些反射路径,而非追踪幕后黑手。
nginx日志怎么分析CC攻击IP?
关注URI集中度、User-Agent同质化及请求频率。正常用户行为分散,CC攻击往往表现为特定接口的高频访问。结合limit_req产生的错误日志,可筛选出触发限流的IP。注意需确保开启了真实IP透传,否则日志中仅显示CDN回源IP。
接入CDN后日志里只剩回源IP该怎么恢复源IP维度的分析?
必须在源站Web服务器(如NGINX)中配置real_ip模块,指定CDN的回源IP段,并从X-Forwarded-For头中提取客户端真实IP。若不配置,所有访问日志的remote_addr均为CDN节点IP,导致限流策略失效或误杀正常流量。
评论(0)