一种针对 NTP 服务的 UDP 杠杆式攻击

• 本文约446字,阅读大致需要1分钟 • Security

今天(2014-01-14)发布了4个安全公告和2个勘误公告,其中FreeBSD-SA-14:02.ntpd是针对NTP该攻击的因应措施。

攻击的原理是通过发送一个小包(GET_MONLIST),得到大体积的回应。而由于NTP使用了UDP协议,因此攻击者可以轻易伪造源IP地址,仅以较小的流量代价,即可利用公网上的其他NTP服务器作为杠杆(反射放大)来攻击受害者。

防御配置

正确配置的NTP服务器并不受这个问题影响。所谓正确配置是指NTP服务器配置为只允许其他机器向其查询时间,具体做法是在/etc/ntp.conf中增加类似下面的设置:

1
2
3
4
5
restrict default kod nomodify notrap nopeer noquery
restrict -6 default kod nomodify notrap nopeer noquery
restrict 127.0.0.1
restrict -6 ::1
restrict 127.127.1.0

(说明:上述是推荐的生产配置,其中真正起防御作用的是noquery标志)

还有一种解法是仅仅禁止monitor功能:

disable monitor

FreeBSD安全公告提供的补丁采取的做法是将monitor功能默认禁用。用户不需要对配置文件进行修改,只需更新软件并重启ntp服务,即可防止自己的服务器成为别人的攻击杠杆。