NTP放大攻击利用老版本NTP服务的monlist查询缺陷,能把几十字节的请求放大成数百倍甚至上千倍的UDP响应,再伪造源IP打向目标,小带宽就能堆出相当可观的反射流量;防御关键是禁用monlist、限制UDP 123响应、隐藏源站并接入高防清洗。
NTP放大攻击到底怎么把几十字节“吹”成惊人流量?
网络层DDoS里,反射放大一直是最脏的套路,NTP这个老协议,本来只负责给设备对时,结果因为一个调试接口,变成了攻击者的免费放大器。
被利用的“monlist”是个什么东西?
monlist是NTP早期版本里的远程查询命令,也叫mode 6控制消息,客户端发一个很小的请求包,服务器会把最近交互过的600个客户端IP列表打包返回,请求本身可能只有几十字节,响应却能达到几百字节甚至几KB。
- 行业共识认为,NTP monlist的放大倍数常见在数十倍到数百倍之间,具体取决于服务器缓存的客户端数量。
- 2014年前后,大量默认开放monlist的NTP服务器被扫描利用,安全社区开始大规模呼吁升级。
- 很多老旧路由、交换机、嵌入式设备至今仍运行着未修复的NTP版本。
攻击者具体怎么操作?
- 第一步:扫描公网开放UDP 123端口且支持monlist的NTP服务器。
- 第二步:伪造受害者IP,向这些NTP服务器发送monlist请求。
- 第三步:NTP服务器把大量响应包反射给受害者。
攻击者不需要控制肉鸡,只需要少量查询流量,就能获得数十倍以上的攻击流量,以下命令可在授权前提下用来检测NTP服务是否开放monlist查询:
nmap -sU -pU:123 -Pn -n --script=ntp-monlist <target>
ntpdc -n -c monlist <target>
ntpq -c rv <target>
为什么UDP让放大更轻松?
UDP没有三次握手,源地址可以随意伪造,服务器收到请求后不会验证源IP,直接向“伪造源IP”回包,反射流量真实存在,而且分散在大量NTP服务器上,很难靠封单个IP解决。
NTP放大攻击和DNS反射攻击哪个更猛?
这两种攻击经常被拿来比较,因为它们都依赖UDP反射,而且都有大量公网可利用源。

放大倍数与利用难度对比
| 对比项 | NTP放大攻击 | DNS反射攻击 |
|---|---|---|
| 常用端口 | UDP 123 | UDP 53 |
| 典型放大倍数 | 数十倍到数百倍 | 数倍到数十倍 |
| 可利用服务数量 | 大量老版本NTP服务器 | 大量开放递归查询的DNS服务器 |
| 伪造源IP难度 | 低 | 低 |
| 流量特征 | 大包、来源分散 | 大包、来源分散 |
| 治理难度 | 依赖运维升级,周期长 | 依赖递归关闭,相对容易 |
从单包放大效率看,NTP monlist比大多数DNS配置的放大倍数更高,但DNS开放递归服务器基数更大,所以两者在真实攻击中经常混着用,行业共识认为,NTP放大攻击在2013-2015年达到高峰,后来随着ntpd默认禁用monlist,可利用源减少,但公网仍有相当数量未升级设备。
那现在的NTP放大攻击还常见吗?
仍有,但不如2018年前那么密集,很多攻击者转向memcached、CLDAP、WS-Discovery等放大倍数更大的UDP协议,NTP放大攻击更多作为混合DDoS中的一个流量成分出现,专门用来消耗目标UDP端口带宽。
真实场景:游戏服务器遭遇NTP放大攻击是一种什么体验?
游戏服务器最怕UDP反射,因为游戏本身就是UDP通信,入口带宽一旦打满,玩家集体掉线。
为什么游戏服务器容易被盯上?
- 竞争激烈,攻击成本低。
- 游戏业务对延迟敏感,一旦拥塞体验极差。
- 很多中小团队为了省钱,源站直接暴露在公网。
- 攻击者清楚,只要打掉几分钟,玩家就会流失。
攻击者会挑版本更新、开服活动、电竞赛事前后发起攻击,首波流量上来后,服务器带宽监视器瞬间拉满,丢包率飙升,没有接入高防的服务器,运营商会触发黑洞路由,直接把IP封禁24小时以上,结果就是玩家无法登录、充值页面打不开、社区骂声一片。

攻击流量到底能堆多高?
单台老NTP服务器反射流量有限,但攻击者可以同时调用数千台上万台,近年来公开的DDoS事件中,NTP反射攻击曾把流量推到几十Gbps到数百Gbps级别,对于普通IDC机房来说,超过一定阈值就会启动黑洞,攻击者只要短暂打满即可造成业务中断。
NTP放大攻击怎么防?从协议到机房的三层防御
防NTP放大攻击不能只靠一个动作,得从服务器、网络、业务三个层面一起做。
运维侧禁用monlist与升级ntpd
先检查自己服务器是否开放monlist:
nmap -sU -p 123 --script ntp-monlist <server_ip>
ntpdc -n -c monlist <server_ip>
如果返回了一大串IP列表,说明已经暴露,修复方法如下:
- 升级NTP到4.2.7p26及以上版本,该版本默认禁用monlist。
- 在ntp.conf中加入或确认以下配置:
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
disable monitor
- 重启NTP服务:
systemctl restart ntpd或service ntp restart。
如果设备无法升级,在边界防火墙直接封掉UDP 123的入站查询,只允许上游时间源通信。
网络侧限速与反射源治理
- 在网络入口部署ACL,对UDP 123流量进行限速,正常NTP客户端请求量很低。
- 对源IP来源做限制,只允许可信NTP服务器地址通信。
- ISP或机房可在上联方向过滤伪造源地址,减少反射流量出口。
- 使用BGP FlowSpec向运营商下发丢弃规则,可快速缓解跨网攻击。
业务侧隐藏源站并接入高防清洗
源站IP不要直接暴露,对外只解析高防IP或高防CDN,国内机房选择BGP三线高防,电信、联通、移动访问都走清洗节点。
抗NTP放大攻击的高防IP多少钱?这个没有统一答案,主要看保底防护带宽、弹性峰值和线路质量,多数情况下,基础防护20Gbps-100Gbps的高防IP月费在几百元到数千元不等;需要数百Gbps弹性防护时,价格会明显上升,部分按攻击量后付费,如果预算有限,可以先用云厂商的基础DDoS防护,再把游戏服放到高防IP后面,攻击时切换到清洗模式。

国内机房如何防御NTP放大攻击?
国内机房由于运营商黑洞阈值不同,电信、联通、移动线路对UDP反射的容忍度不同,建议在机房入口部署硬件清洗设备,并提前和上游运营商确认黑洞触发阈值。
服务器上线前做一次UDP 123暴露面扫描,把不必要的NTP服务关掉,有条件的团队可以同时接入两家高防服务商,当一家被攻击时自动切换。
协议漏洞会老去,反射思路不会消失
NTP放大攻击看起来是协议设计遗留问题,真正可怕的是公网至今仍有大量老设备在当“免费放大器”,把monlist关掉,把UDP 123管好,把源站藏好,攻击者就少了一个便宜好用的工具,协议漏洞会老去,但反射放大的思路不会消失,防御只能跟着流量走。
Q&A:关于NTP放大攻击你还应该知道这些
NTP放大攻击使用的端口和协议是什么?
NTP放大攻击走的是UDP 123端口,利用NTP协议中的monlist控制消息(mode 6)进行反射放大,UDP无连接特性让攻击者可以伪造源IP,NTP服务器会把大量响应包发给受害者。
如何检测自己的服务器是否被用于NTP放大攻击?
在授权范围内,可以用nmap -sU -p 123 --script ntp-monlist <ip>检测,如果返回大量客户端列表,说明monlist已开放,也可以查看ntpdc -n -c monlist的结果,更直接的方法是在服务器上抓包:tcpdump -i eth0 -n udp port 123,如果入站大量来自随机源IP的mode 6查询,基本可以确认被当作反射源。
NTP放大攻击能完全防御吗?
不能完全依赖单一手段,禁用monlist能消除大部分放大源,但攻击者还可以利用其他UDP协议反射,业务侧必须结合源站隐藏、高防清洗、网络层限速和运营商协同,才能把影响降到最低,只要公网存在可伪造源IP的UDP服务,反射攻击就不会消失。