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