NTP服務被利用做流量攻擊以及檢測預防手段

被攻擊服務器相關配置:
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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章