什麼是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端口的數據,就可以確認正在遭受此類攻擊。
如何防範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 kod nomodify notrap nopeer noquery
IPv6: restrict -6 default kod nomodify notrap nopeer noquery
/允許發起時間同步的IP,與本服務器進行時間同步,但是不允許修改ntp服務信息,也不允許查詢服務器的狀態信息(如monlist)/
另外,還可以配置限制訪問命令,如:
restrict default noquery /*允許普通的請求者進行時間同步,但是不允許查詢ntp服務信息*/
修改並保存配置文件之後,請重啓ntpd服務。
2、windows系統的解決辦法:
在ntp.conf配置文件中增加(或修改)“disable monitor”選項,可以關閉現有NTP服務的monlist功能。修改並保存配置文件之後,請重啓ntpd服務。
3、網絡防範:
在攻擊發生時,通過網絡設備的ACL丟棄UDP 123端口的數據包。
參考信息:
[1] http://www.rfc-editor.org/rfc/rfc5905.txt
[2] http://cve.scap.org.cn/CVE-2013-5211.html
[3] http://www.kb.cert.org/vuls/id/348126
[4] http://support.ntp.org/bin/view/Support/AccessRestrictions