什么是 NTP 放大攻擊?
NTP 放大攻擊是基于反射的分布式拒絕服務 (DDoS) 攻擊,在這種攻擊中,攻擊者利用網(wǎng)絡時間協(xié)議 (NTP) 服務器功能,發(fā)送放大的 UDP 流量,使目標網(wǎng)絡或服務器不堪重負,導致正常流量無法到達目標及其周圍基礎設施。
NTP 放大攻擊的工作原理
所有放大攻擊都利用攻擊者和目標 Web 資源之間的帶寬消耗差異。當許多請求的成本差異被放大時,由此產(chǎn)生的巨大流量可以破壞網(wǎng)絡基礎設施。通過發(fā)送導致大型響應的小型查詢,惡意用戶可以憑借更少的資源消耗獲取更大益。通過讓僵尸網(wǎng)絡中的每個機器人提出相似的請求使放大倍增,攻擊者既可以躲避檢測,又會獲得攻擊流量大幅增加的好處。
DNS 洪水攻擊與 DNS 放大攻擊不同。DNS 放大攻擊會反射和放大來自不安全的 DNS 服務器的流量,以隱藏攻擊的來源并提高其有效性。DNS 放大攻擊使用帶寬連接較小的設備向不安全的 DNS 服務器發(fā)出大量請求。設備發(fā)出許多較小的請求,形成非常大的 DNS 記錄,但是在發(fā)出請求時,攻擊者將返回地址偽造為預期受害者的地址。放大使攻擊者使用有限的攻擊資源即可破壞更大的目標。
NTP 放大攻擊與 DNS 放大攻擊非常相似,就好比是一個心懷惡意的青少年打電話給一家餐廳說“我要菜單上的東西每樣來一份,請給我回電話并告訴我整個訂單的信息”。當餐廳詢問回叫號碼時,他卻給出目標受害者的電話號碼。然后,目標會收到來自餐廳的呼叫,接到他們未請求的大量信息。
網(wǎng)絡時間協(xié)議旨在允許聯(lián)網(wǎng)的設備同步其內(nèi)部時鐘,并在 Internet 體系結構中發(fā)揮重要作用。通過利用在某些 NTP 服務器上啟用的 monlist 命令,攻擊者可以倍增其初始請求流量,從而導致較大的響應。在較舊的設備上,此命令默認為啟用狀態(tài),并以對 NTP 服務器的請求的最后 600 個源 IP 地址作為響應。來自內(nèi)存中具有 600 個地址的服務器的 monlist 請求將比初始請求大 206 倍。這意味著擁有 1 GB Internet 流量的攻擊者可以進行 200 Gb 以上的攻擊 - 導致的攻擊流量大幅增加。
NTP 放大攻擊可分為四個步驟:
攻擊者使用僵尸網(wǎng)絡將具有欺騙性 IP 地址的 UDP 數(shù)據(jù)包發(fā)送到啟用了 monlist 命令的 NTP 服務器。每個數(shù)據(jù)包上的欺騙性 IP 地址指向受害者的真實 IP 地址。
每個 UDP 數(shù)據(jù)包使用其 monlist 命令向 NTP 服務器發(fā)出請求,導致較大的響應。
然后,服務器用結果數(shù)據(jù)響應欺騙性的地址。
目標的 IP 地址接到響應,并且周圍的網(wǎng)絡基礎設施被大量流量淹沒,從而導致拒絕服務。
由于攻擊流量看似來自有效服務器的正常流量,因此很難在不阻止實際 NTP 服務器進行正常活動的情況下防護這種攻擊流量。由于 UDP 數(shù)據(jù)包不需要握手,因此 NTP 服務器將向目標服務器發(fā)送較大的響應,而無需驗證請求是否真實。這些條件,加上在默認情況下會發(fā)送較大響應的內(nèi)置命令,使 NTP 服務器成為 DDoS 放大攻擊的高效反射來源。
如何防護 NTP 放大攻擊?
對于運行網(wǎng)站或服務的個人或公司而言,他們的緩解方案非常有限。這是因為盡管個人服務器可能是攻擊目標,但并不是容量耗盡攻擊主要作用所在的地方。由于攻擊產(chǎn)生的大量流量,服務器周圍的基礎設施會受到影響。Internet 服務提供商(ISP) 或其他上游基礎設施提供商可能無法處理傳入的流量,變得不堪重負。在這種情況下,該 ISP 可能將所有流量傳送到目標受害者的 IP 地址,保護自己,并使目標的網(wǎng)站離線。除 Cloudflare DDoS 保護之類的異地保護服務外,緩解策略主要是預防性 Internet 基礎設施解決方案。
禁用 monlist - 減少支持 monlist 命令的 NTP 服務器的數(shù)量。
修補 monlist 漏洞的一個簡單解決方案是禁用該命令。默認情況下,4.2.7 版本之前的所有 NTP 軟件都容易受到攻擊。將 NTP 服務器升級到 4.2.7 或更高版本,該命令即被禁用,即可修補漏洞。如果無法升級,則服務器的管理員可遵循 US-CERT 的說明進行必要的更改。
源 IP 驗證- - 阻止欺騙性數(shù)據(jù)包離開網(wǎng)絡。
由于攻擊者的僵尸網(wǎng)絡發(fā)送的 UDP 請求必須具有指向受害者 IP 地址的欺騙性源 IP 地址,因此,要降低基于 UDP 的放大攻擊的有效性,其關鍵在于 Internet 服務提供商 (ISP) 拒絕任何具有欺騙性 IP 地址的內(nèi)部流量。如果有數(shù)據(jù)包從網(wǎng)絡內(nèi)部發(fā)送,但其源地址看似源于網(wǎng)絡外部,則可能是欺騙性的數(shù)據(jù)包,可以將其丟棄。Cloudflare 強烈建議所有提供商實施入口篩選,并且會不時聯(lián)系不知情地參與 DDoS 攻擊(在違反 BCP38 的情況下)的 ISP 并幫助他們意識到漏洞。
禁用 NTP 服務器上的 monlist 并在當前允許 IP 欺騙的網(wǎng)絡上實施入口篩選,是在此類攻擊到達其預期網(wǎng)絡之前阻止攻擊的有效方法。
Cloudflare 如何防護 NTP 放大攻擊?
有了正確配置的防火墻和足夠的網(wǎng)絡容量(除非您擁有 Cloudflare 的規(guī)模,否則這總是不足夠的),阻止 NTP 放大攻擊等反射攻擊就很簡單。盡管攻擊將針對單個 IP 地址,但我們的 Anycast 網(wǎng)絡會將所有攻擊流量分散到不再造成破壞的地步。Cloudflare 能夠利用我們的規(guī)模優(yōu)勢,將攻擊分配到許多數(shù)據(jù)中心,平衡負載,從而確保服務永不中斷,并且攻擊也不會使目標服務器的基礎設施不堪重負。在最近六個月的時期內(nèi),我們的 DDoS 防護系統(tǒng)“Gatebot”檢測到 6,329 次簡單的反射攻擊(相當于每 40 分鐘一次),而我們的網(wǎng)絡成功地防護了所有攻擊。