最近一台暴露在公网的时钟同步服务器遭遇了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) |