今天主要介绍一下NTP服务放大攻击以及常用的检测预防手段。
NTP放大攻击是一种基于反射的体积分布式拒绝服务(DDoS)攻击,其中攻击者利用网络时间协议(NTP)服务器功能,以便用一定数量的UDP流量压倒目标网络或服务器,使常规流量无法访问目标及其周围的基础设施。
标准NTP 服务提供了一个 monlist查询功能,也被称为MON_GETLIST,该功能主要用于监控 NTP 服务器的服务状况,当用户端向NTP服务提交monlist查询时,NTP 服务器会向查询端返回与NTP 服务器进行过时间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。由于NTP服务使用UDP协议,攻击者可以伪造源发地址向NTP服务进行monlist查询,这将导致NTP服务器向被伪造的目标发送大量的UDP数据包,理论上这种恶意导向的攻击流量可以放大到伪造查询流量的100倍。
攻击者使用僵尸网络将带有欺骗IP地址的UDP数据包发送到启用了monlist命令的NTP服务器。每个数据包上的欺骗IP地址指向受害者的真实IP地址。每个UDP数据包使用其monlist命令向NTP服务器发出请求,从而产生大量响应。然后,服务器使用结果数据响应欺骗地址。目标的IP地址接收响应,周围的网络基础设施因流量泛滥而变得不堪重负,导致拒绝服务。
由于攻击流量看起来像来自有效服务器的合法流量,因此很难在不阻止真正NTP服务器合法活动的情况下减轻此类攻击流量。由于UDP数据包不需要握手,因此NTP服务器将向目标服务器发送大量响应,而不验证请求是否可信。这些事实与内置命令相结合,默认情况下发送大量响应,使NTP服务器成为DDoS放大攻击的极好反射源。
如果网络上检测到大流量的UDP 123端口的数据,就可以确认正在遭受此类攻击。
1、linux系统升级
将系统中的NTP服务升级到 ntpd 4.2.7p26 或之后的版本,因为 ntpd 4.2.7p26 版本后,服务默认是关闭monlist查询功能的。
2、关闭现在 NTP 服务的 monlist 功能
在ntp.conf配置文件中增加(或修改)“disable monitor”选项,可以关闭现有NTP服务的monlist功能。修改并保存配置文件之后,重启ntpd服务。
3、在网络出口封禁 UDP 123 端口
在攻击发生时,通过网络设备的ACL丢弃UDP 123端口的数据包。
放大反射 Dos 攻击由 CVE-2013-5211 所致。且这漏洞是与 molist 功能有关。ntpd 4.2.7p26 之前的版本都会去响应 NTP 中的 mode7 monlist 请求。ntpd-4.2.7p26 版本后, monlist 特性已经被禁止,取而代之的是 mrulist 特性,使用 mode6 控制报文,并且实现了握手过程来阻止对第三方主机的放大攻击。