一种针对 ntp 服务的 UDP 杠杆式攻击
先挖好坑,等有空了再填。
今天(2014/01/14)发了4个安全公告和2个勘误公告,其中 FreeBSD-SA-14:02.ntpd 是针对 NTP 的这种攻击的因应措施。
攻击的原理是通过发送一个小包(GET_MONLIST),得到大体积的回应。而由于 NTP 使用了 UDP 协议,因此攻击者可以伪造源 IP,从而,通过较小的流量代价,即可利用其他服务器作为杠杆来攻击受害者。
正确配置的 NTP 服务器并不受这个问题影响。所谓正确配置是指 NTP 服务器配置为只允许其他机器向其查询时间,具体做法是在 /etc/ntp.conf 中增加类似下面的设置:
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 服务即可防止自己的服务器成为别人的攻击杠杆。