被攻击服务器相关配置:
ip:
eth0: 172.28.9.2
eth1: 192.168.0.2
eth3: 外网IP

某一天发现这台WEB服务器流量一直很高。
开始一直以为是WEB服务的流量很高,根本没往NTP服务那方面想。
因为我设置NTP服务的时候就有考虑到安全问题。

检测过程:
#dstat -N eth3
777

可以发现发送流量非常大。

后面还用了nethogs和iptraf两个流量分析软件进行了分析。

nethogs是检测进程的流量,但是检测不到UDP的流量,所以一开始也没想到是ntp的引起的。因为ntp用的是123的UDP端口。

iptraf是检测连接到服务器某个端口的流量
这里需要注意了:默认执行iptraf在上面窗口中只会显示TCP流量,而不会显示UDP流量,UDP流量会在下面快速闪现。所以一开始也没注意到是ntp引起的,因为UDP流量没排在上面。后面会讲怎么查看UDP流量。
3

可以先设置一下iptraf,开启按服务名显示,而不是显示端口号,比较直观。
#iptraf
configure

4

#iptraf -s eth3
这里一定要加上-s,才能显示UDP流量

5

这样就会看到ntp的流量非常高,从而可以判断是ntp服务而引起的。

再用#ntpdc -n -c monlist 外网IP
能查看到一堆IP同步过我的ntp服务。

 

查了一下ntp.conf,发现并没有什么不合理的地方。
ntp.conf

restrict default ignore
restrict 127.0.0.1
restrict -6 ::1
restrict 192.168.0.154
restrict 192.168.0.155

server 192.168.0.154
server 192.168.0.155

server 127.127.1.0
fudge 127.127.1.0 stratum 10

driftfile /var/lib/ntp/drift
broadcastdelay 0.008
authenticate no
keys /etc/ntp/keys

只开放了上一级提供NTP服务的IP地址。
后来回忆了一下,以前的配置文件没有这么严谨,所以当时我对这个配置文件做了修改了。但是当时为了不影响业务,并没有立即重启服务。

所以这次我立即重启ntp服务后,流量就恢复了正常。

 

注意:
如果有外网IP的服务器,有开ntp服务,restrict开放只能开放内网IP。

或者用iptables防火墙来做限制,比如拒绝从eth3外网访问ntp服务。

配置完ntp后,可以执行

#ntpdc -n -c monlist 外网IP

来检测,如果说超时,得不到数据,说明没问题。

 

 

知识点:

什么是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端口的数据,就可以确认正在遭受此类攻击。

 

如何防范NTP放大攻击?

1、linux系统升级办法:

升级服务程序版本

将系统中的NTP服务升级到 ntpd 4.2.7p26 或之后的版本,因为 ntpd 4.2.7p26 版本后,服务默认是关闭monlist查询功能的。

关闭服务的monlist查询功能:

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

ntpq -c rv<localhost/remotehost>

ntpdc -c sysinfo<localhost/remotehost>

ntpdc -n -c monlist<localhost/remotehost>    能查询出同步过时间的主机

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

 

IPV4: restrict default ignore

IPv6: restrict -6 default ignore

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

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

restrict default noquery /*允许普通的请求者进行时间同步,但是不允许查询ntp服务信息*/

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

 

2、windows系统的解决办法:

在ntp.conf配置文件中增加(或修改)“disable monitor”选项,可以关闭现有NTP服务的monlist功能。修改并保存配置文件之后,请重启ntpd服务。

 

3、网络防范:

在攻击发生时,通过网络设备的ACL丢弃UDP 123端口的数据包。

放大反射 Dos 攻击由 CVE-2013-5211 所致。且这漏洞是与 molist 功能有关。ntpd 4.2.7p26 之前的版本都会去响应 NTP 中的 mode7 monlist 请求。ntpd-4.2.7p26 版本后, monlist 特性已经被禁止,取而代之的是 mrulist 特性,使用 mode6 控制报文,并且实现了握手过程来阻止对第三方主机的放大攻击。

因为 Ubuntu 14.04 默认的 ntpd 版本是 4.2.6p5 ,所以我们可以用禁止 monitor 的方法,直接修改 /etc/ntp.conf 即可

echo “disable monitor” >> /etc/ntp.conf



发表评论