如何測試NTP伺服器是否安全

如何測試NTP伺服器是否安全

我們正在嘗試 ntp.conf 檔案中的一些 NTP 配置,並希望確定 NTP 伺服器是否安全。

請按照此處提供的建議: https://support.ntp.org/Support/AccessRestrictions#Section_6.5.1.2.1

我們補充說:

IPV4: restrict -4 default limited kod nomodify notrap nopeer noquery

IPv6: restrict -6 default limited kod nomodify notrap nopeer noquery

現在的問題是:根據文件中寫入的行:

既然你願意允許別人從你的ntpd獲取時間,你會允許他們看到你的伺服器狀態資訊(即使這可以洩露你的作業系統和ntpd版本的資訊)嗎?

我們如何確定伺服器是否正在發送其狀態或其他作業系統資訊?

此外,如果我們在限制中不添加“noquery”選項有什麼區別,以及如何測試有和沒有“noquery”選項,即添加這樣的選項是否有一些反射? (我們想從安全角度進行測試)

我們可以使用wireshark來檢索狀態或作業系統資訊來測試我們的conf選項嗎?

答案1

參考 ntpd 實作透過程式公開了它的許多實作變量ntpq(和國家政策發展中心這是只有其作者才會欣賞的東西)。它們利用特殊 NTP 封包中的控制協定。控制通道可能會更改 ntpd 配置,儘管這在現代時代很少使用,在現代時代,您可以自動將設定檔部署到任意數量的主機。

維持ntpd的風險主要是防止 IP 放大到欺騙位址,並保護您的時間同步配置免受網路上未經授權的 IP 位址的變更。

像往常一樣,保持補丁可以減少一些缺陷。透過「monlist」功能的放大攻擊導致CVE-2013-5211。這應該是幾年前的更新,但請檢查一下全部您的主機位於受支援的發行版上,並受到維護人員的關注。

對 monlist 的所有關注導致出現了一些可以輕鬆掃描它的工具。例如,nmap 腳本 ntp-monlist

完整的函數列表是為 ntpq 記錄的命令。 wiki 的 Choose-your-own-configuration 中的這些行的不同之處在於noquery,它完全拒絕所有 ntpq 查詢。保持授時服務運作。例如,該 nmap 腳本不會傳回任何內容。與之對比的nomodfy是僅控制更改配置的命令的存取規則。顯然nomodify應該受到嚴格限制,可能僅限於本地主機。

與其他地方的範例配置進行比較,例如您最喜歡的 disto 軟體包中的配置。RHEL 7 的 ntp.conf建議將此作為存取控制的起點:

# Permit time synchronization with our time source, but do not
# permit the source to query or modify the service on this system.
restrict default nomodify notrap nopeer noquery
    
# Permit all access over the loopback interface.  This could
# be tightened as well, but to do so would effect some of
# the administrative functions.
    
restrict 127.0.0.1 
restrict ::1
    
# Hosts on local network are less restricted.
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
# Disable the monitoring facility to prevent amplification attacks using ntpdc  
# monlist command when default restrict does not include the noquery flag. See
# CVE-2013-5211 for more details.
# Note: Monitoring will not be disabled with the limited restriction flag.
disable monitor

請注意 monlist 緩解措施,即使 ntpd 現已修補。此外,預設情況下遠端主機無法查詢或修改。透過輕微修改,這可以使 NTP 主機準備好為公共網際網路提供服務。

當然,一旦您知道想要什麼 ntp.conf,就可以部署它。自動化配置NTP伺服器,在所有主機的範本鏡像中得到合理的配置。

所有這些 monlist 討論都沒有涵蓋您關於透過 ntp 識別作業系統和平台的原始問題。根據 ntpq 文檔,該建置資訊可能會透過readvar控制命令出現在系統變數中。如,到遠端伺服器: ntpq -c readvar time.example.net。儘管這裡有一些實作細節需要解碼,例如哪個關聯 ID 是有問題的 NTP 主機。

就我個人而言,我不太關心暴露有關 ntpd 的建置資訊。有人得知我的 ntpd 是最新的,還有一些狀態機,他們對此無能為力。攻擊者會向所有可能的主機噴射偽造的 NTP 封包,以期實現放大。

相關內容