实战NTP放大攻击防御方案

今天小龙的网站受到恶意DDOS敲诈攻击,张口就要950大洋,服务商是阿里云,本着绝不屈服的精神展开了与DDOS攻击的斗争(PS:主要是没钱 /笑哭),下面先普及下常识。

什么是NTP服务?

网络时间协议NTP(Network Time Protocol)是用于互联网中时间同步的标准互联网协议。NTP服务器通过NTP服务向网络上的计算机或其他设备提供标准的授时服务,以保证这些服务系统的时钟能够同步。通常NTP服务使用UDP 123端口提供标准服务。

什么是NTP服务放大攻击?

标准NTP 服务提供了一个 monlist查询功能,也被称为MON_GETLIST,该功能主要用于监控 NTP 服务器的服务状况,当用户端向NTP服务提交monlist查询时,NTP 服务器会向查询端返回与NTP 服务器进行过时间同步的最后 600 个客户端的 IP,响应包按照每 6 个 IP 进行分割,最多有 100 个响应包。由于NTP服务使用UDP协议,攻击者可以伪造源发地址向NTP服务进行monlist查询,这将导致NTP服务器向被伪造的目标发送大量的UDP数据包,理论上这种恶意导向的攻击流量可以放大到伪造查询流量的100倍。

如何查看是否遭受NTP放大攻击?

如果网络上检测到大流量的UDP 123端口的数据,就可以确认正在遭受此类攻击。注:若使用阿里云主机,阿里云会发警告邮件通知,此时可在阿里云DDOS防护管理查看到攻击记录,并且可以下载到抓包信息。

下载后通过wireshark打开,看到如下图:

确定是NTP攻击,下面来看解决方法。

如何防范NTP放大攻击?

1、linux系统升级办法:

  • 升级服务程序版本

将系统中的NTP服务升级到 ntpd 4.2.7p26 或之后的版本,因为 ntpd 4.2.7p26 版本后,服务默认是关闭monlist查询功能的,ntp下载网址:http://www.ntp.org/downloads.html,建议下载最新安装包。

  • 关闭服务的monlist查询功能:

首先查询问题主机的REQ_MON_GETLIST和REQ_MON_GETLIST_1请求是否可用。具体操作方法:

ntpq -c rv
ntpdc -c sysinfo
ntpdc -n -c monlist

 

如果上述功能可用,可尝试通过修改ntp.conf文件解决问题,具体操作建议是在上述配置文件中增加下面的配置:

restrict default kod nomodify notrap nopeer noquery #IPV4
restrict -6 default kod nomodify notrap nopeer noquery #IPV6

 

/*允许发起时间同步的IP,与本服务器进行时间同步,但是不允许修改ntp服务信息,也不允许查询服务器的状态信息(如monlist)*/

另外,还可以配置限制访问命令,如:

 

restrict default noquery /*允许普通的请求者进行时间同步,但是不允许查询ntp服务信息*/
restrict 0.0.0.0 mask 0.0.0.0 notrust #拒绝没有认证的用户端
disable monitor #关闭现有NTP服务的monlist功能

修改并保存配置文件之后,请重启ntpd服务。

 

2、网络防范:

在攻击发生时,通过网络设备的ACL丢弃UDP 123端口的数据包。如果用不到此端口,可以直接禁掉123端口。(注:使用阿里云ECS的用户建议在安全组中先屏蔽掉所有端口,然后再开放需要开放的端口,如80、443等端口)

说在最后:

阿里云一般还算不错,不过,比较坑的是一旦遇到DDOS,触发了阿里云的黑洞清洗,网站就被关小黑屋35分钟,时间过后如果还有攻击,时间再加35分钟,虽然这样可以保护机房其他服务器,但是也正是因为这样,才导致敲诈者每隔35分钟就攻击一次,从而达到敲诈的目的。

如果有更好的方法,欢迎给小龙留言。

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注