> Linux安全 >

实战NTP放大攻击

最近一台暴露在公网的时钟同步服务器遭遇了NTP放大攻击,通过一天的学习和努力,终于解决。
被攻击的情况大概是这样的:
某台运行多年的业务Windows Server 2008 R2服务器,安装的是ntp-4.2.4p7这个版本的时钟同步服务端程序。
2月24日忽然出现ping服务器丢包80%以上,通过流量分析发现是内网某台做时钟同步的服务器流量非常大(超过70Mb/秒)。
被攻击的数据端口:UDP 123端口。

解决方法(参考了WooYun知识库的这篇文章:http://drops.wooyun.org/papers/926):
一、加固NTP服务:
1. 把NTP服务器升级到4.2.7p26
2. 关闭现在NTP服务的 monlist 功能,在ntp.conf配置文件中增加“disable monitor”选项
3. 在网络出口封禁 UDP 123 端口
二、防御NTP反射和放大攻击
1. 由于这种攻击的特征比较明显,所以可以通过网络层或者借助运营商实施ACL来防御
2. 使用防DDoS设备进行清洗

以上解决方案,对于我来说:
1、升级到ntp 4.2.7p26版本不太可能:
因为Windows下可用的ntp服务端程序,目前最新的只有ntp-4.2.6p5,所以不能通过安装4.2.7p26之后的版本来解决这个漏洞;
虽然Linux上可以编译ntp最新的开发版4.2.7p424,但是被攻击机房没有部署Linux服务器,而且被攻击的是生产系统,我也无法随意将现有的Windows系统换成Linux。

2、关闭现在NTP服务的 monlist 功能,在ntp.conf配置文件中增加“disable monitor”选项:
实践证明这个方法是非常有效的!
我卸载了之前安装的ntp-4.2.4p7这个版本的时钟同步服务端程序,然后安装了ntp-4.2.6p5这个版本,并在配置文件中配置了“disable monitor”选项后,虽然还有攻击请求,但是NTP服务器不再响应monlist,攻击流量没有被放大。

3、在网络出口封禁 UDP 123 端口:
因为很多设备需要向这台被攻击的服务器进行时钟同步,所以封禁UDP 123端口对我来说是不现实的。

4、通过网络层或者借助运营商实施ACL来防御:
因为涉及生产系统,而且在不精通防火墙、交换机的情况下,没有考虑增加ACL规则策略来防御NTP攻击。

5、使用防DDoS设备进行清洗:
有待研究。

6、另外,我还考虑过一种方案:
通过将UDP 123端口转发(用ccproxy)到其他的时钟同步服务器(如time.windows.com或其他常用时钟同步服务器IP),测试环境我试验成功了,但是被攻击的生产系统没有成功。用Wireshark抓包分析过,发现了问题,但未有时间研究解决。
(责任编辑:IT)