冒著老生常談的風險,現在可以看到越來越多分散式阻斷(DDoS)攻擊使用另一個基本的網路協定。這次所用的是網路時間協定(NTP)。它並不像DNS或HTTP那麼有名,但卻同樣重要。NTP用來同步多個網路設備的時間。沒有它,我們就要回到必須手動調整電腦時間的日子。有個解決這類攻擊的方法已經出現了十年,但遺憾的是並沒有被廣泛採用。
NTP的主要功能是從高精確來源(如GPS或銫原子鐘相容設備)來散播時間。我很抱歉地要告訴你,你電腦內的時鐘很爛。石英晶體振盪器的誤差率通常是1ppm(百萬分之一),或是每秒多或少一微秒。相當於每個月誤差半秒鐘,這聽起來並不那麼糟糕。
不幸的是,我們不知道在特定時間點,時鐘的誤差方式為何。而輕微的溫度變化也會影響石英震盪週期。此外,1GHz處理器(現在這算慢的了)在半秒鐘就經歷5億次週期。在叢集和分散式系統裡,知道現在是什麼時間變得至關重要。
NTP各點會交換UDP封包來比較它們所認為的時間。設定良好的客戶端會去檢查三個或更多的點以獲得更好的時間準確度。當有個點從參考時鐘認為自己的時間不再準確,它就會對時鐘做出微小的修正。這會讓系統時間慢慢改變,所以所有正在運行中的軟體不會被打亂。這是解決一個重要問題的簡單解決方案。
不幸的是,不法份子利用這關鍵服務來發動DDoS攻擊。NTP伺服器通常都是公開的,往往會接受來自任何人的連線。有個monlist指令可以透過UDP發送給NTP伺服器,要求伺服器回覆最近接觸過的各點列表。
這對故障排除很有用,但它也是攻擊者的理想工具。送個將來源地址偽裝成攻擊目標的小封包,伺服器就會很樂意的送一大包資料給攻擊目標。該伺服器越繁忙,攻擊就會越被放大。
IT管理者可以做些事情來避免在無意間成為幫兇(IPv6並不能解決這問題,NTP也在它上面運作)。首先,關閉未使用的服務。你會很驚訝地知道有多少系統仍然提供字元產生協定(chargen)服務。如果電腦並不是NTP伺服器,那它就不需要運行NTP伺服器軟體。這也同樣地適用在其他未使用的服務和協定上。 繼續閱讀