如何防禦針對伺服器的慢速攻擊

慢速攻擊是一種「低速、持續」的打擊方式。它利用極慢的 HTTP 或 TCP 流量耗盡伺服器資源,同時又始終低於常規閾值。這類攻擊會偽裝成正常流量,避開基於流量規模的告警,並且僅憑極少頻寬就可能讓服務下線。暴力破解攻擊會高速猜測憑證,流量型 DDoS 攻擊則依靠海量流量淹沒鏈路。慢速攻擊兩者都不是,這正是它能繞過許多防禦手段的原因。
本文將幫助你了解如何識別、偵測並防禦慢速攻擊,並提供可落地、可實施的實用措施。
什麼是慢速攻擊
慢速攻擊是一種利用極慢 HTTP 或 TCP 流量、而不是依賴大流量的 DDoS 攻擊。攻擊者會建立大量連線,然後以極緩慢的速度傳送資料。每一條連線看起來都像正常請求,因此你的防禦系統會將其視為一般訪客。攻擊目標是盡可能提高伺服器負載,直到網站回應變慢甚至完全停止服務。
常見的慢速攻擊類型
Slowloris 透過以極低速率傳送不完整的 HTTP 請求標頭來長時間占用大量連線。伺服器會一直等待每個請求完成,最終其連線池被占滿。Slow POST 則是將請求主體一位元組一位元組地緩慢傳送,使伺服器長時間保持該請求存活。Slow Read 則反其道而行:用戶端宣告一個極小的接收視窗,並以很慢的速度讀取回應,從而占用伺服器緩衝區。
你可以透過它們的共同模式來識別這些攻擊:它們都會讓連線保持開啟的時間遠遠超過真實使用者的正常行為。而且,它們都不需要高流量就能奏效。
慢速攻擊的跡象
要重點關注那些遲遲無法完成的掛起連線。並行連線數不斷上升也是一個強烈訊號,尤其是在請求完成率沒有同步增長的情況下。你還可能看到回應時間明顯變差,但頻寬使用率依舊很低。這種組合特徵可以將慢速攻擊與大規模流量攻擊區分開來,因為後者會向伺服器推送海量流量,並會在網路圖表上非常明顯地呈現出來。
流量型 DDoS 會用大流量淹沒鏈路,而慢速攻擊恰恰相反,這也是它更難被發現的原因。你的監控必須追蹤連線持續時間和請求完成情況,而不只是原始流量。當你發現網站正在變慢,但頻寬圖表看起來仍然正常時,就應將其視為潛在的「低速、持續」攻擊,並立即檢查連線表。
如何偵測並阻止暴力破解攻擊與慢速威脅
暴力破解攻擊與慢速攻擊在方式和速度上都不同。暴力破解會快速嘗試大量憑證,而慢速攻擊則會長時間占用連線。不過,暴力破解攻擊和慢速攻擊都適用於同一套監控思路:不要只看流量規模,還要觀察連線行為和請求速率。
揭示慢速攻擊的關鍵指標
有四項指標能有效暴露「低速、持續」攻擊。連線持續時間用於顯示每個工作階段保持開啟的時長;真實使用者通常會在數秒內完成請求,而攻擊連線則會長時間滯留。並行連線數可以揭示連線池是否正在被耗盡,尤其是在連線數持續上升而請求完成率保持不變時。請求完成率衡量真正完成的請求數量;如果流量穩定,但完成率下降,就表示存在被拖住的請求。最小入站資料速率則可以識別那些以極慢速率傳送位元組的用戶端。暴力破解攻擊的表現則不同:它通常伴隨大量短連線和一連串失敗登入。你同樣可以用同一個監控面板來捕捉暴力破解攻擊。
要按來源分別追蹤這些指標。某個單一 IP 如果擁有大量存取且連線時間異常長,就值得重點審查。將每個來源與正常基準進行比較,並標記離群值以供複查。來自單個 IP 的暴力破解攻擊通常表現為失敗登入激增。你的基準最好涵蓋完整一週,因為平日和週末的請求模式會發生變化。凡是連線持續時間超過你正常最慢請求時長的工作階段,都應列入待審查對象。對每個被標記的工作階段,記錄其來源、持續時間和已接收位元組數。
偵測工具與閾值規則
基於閾值的規則可以將這些指標轉化為告警。設定最大連線持續時間、並行連線上限以及最小入站資料速率下限。機器人緩解閾值規則也可以將同樣的邏輯套用到請求模式上。現代 anti-DDoS 服務尤其擅長偵測應用層的「低速、持續」攻擊,它們能在源站感受到壓力之前就識別出模式。暴力破解攻擊則會觸發另一類規則:短時間內同一來源出現過多失敗登入。建議從保守閾值開始,隨著你對正常區間的認識加深再逐步收緊。如果規則對每一次長時間下載都觸發告警,你的團隊很快就會淹沒在誤報之中。每一條閾值規則都應配套明確的處置動作:告警、限速或直接丟棄。
當偵測到暴力破解攻擊時,你必須對攻擊來源採取行動。先查看伺服器存取日誌以確認模式,然後封鎖攻擊來源的 IP 位址。你可以在防火牆或負載平衡器上封鎖該 IP 位址。同時記錄攻擊者的 IP 位址,供後續分析之用。高流量攻擊很容易看見,而慢速攻擊則不然,因此要讓閾值規則替你持續監視。暴力破解攻擊通常會在這些日誌中留下非常清晰的痕跡。
如果要同時偵測並阻止暴力破解與慢速威脅,就應把連線指標與身分驗證失敗記錄關聯起來。暴力破解模式會在驗證日誌中十分醒目,而慢速攻擊則體現為長生命週期連線。兩類模式都應該納入同一個監控面板。暴力破解規則與慢速攻擊規則應分別調校,並持續保持伺服器已套用修補程式且處於受監控狀態。每個季度都要複查這些規則,因為應用程式變更和新功能上線都會改變你的基準。還應與團隊進行一次桌上演練,確保每個人都清楚回應步驟。
如何防禦慢速攻擊
速率限制、連線限制、逾時和最小資料速率,是防禦慢速攻擊最核心、最實際的手段。每項控制都針對問題的不同環節,而將它們組合起來,才能封堵那些讓慢速用戶端長期挾持資源的漏洞。
速率限制與連線限制
速率限制會約束伺服器在給定時間視窗內可處理的請求數量。你可以限制單一來源在一定時間內可建立的連線數或請求數,並丟棄超出的部分。這項控制既能緩解依賴流量規模的 DDoS 攻擊,也能限制試圖開啟成千上萬並行工作階段的慢速攻擊者。應按來源位址設定限制,而不只是全域限制,這樣某個異常活躍的用戶端才不會獨占全部配額。
連線限制與速率限制是相輔相成的。你需要定義每個來源的最大並行連線數,以及伺服器整體的最大並行連線數。當用戶端超過任一上限時,就拒絕新的連線,直到連線數回落。慢速攻擊的核心就是占滿連線池,因此,明確的上限可以直接削弱攻擊者最主要的手段。在預算允許的情況下,你還應提升伺服器可用性。更大的記憶體和更好的連線處理能力,可以讓伺服器在面對合法使用者時承載更多並行連線,而不至於在慢速洪泛下崩潰。
逾時與最小資料速率
逾時是防禦慢速攻擊的第一道防線。應配置請求標頭逾時、請求主體逾時和閒置逾時。任何連線如果未能在規定時間視窗內傳送完整請求,就應被關閉。緩慢傳送請求標頭的 Slowloris 用戶端會命中請求標頭逾時並失去其連線槽位。將請求主體一位元組一位元組慢慢傳送的 Slow POST 用戶端,則會命中請求主體逾時。要將這些值設得足夠嚴格以攔截濫用,但也要足夠寬鬆,以照顧真實使用者所在鏈路的正常波動。
最小入站資料速率則提供了第二重檢查。你定義一個下限,伺服器會丟棄所有傳送速率低於該值的連線。這個規則可以識別那些透過持續傳送極少量資料、勉強卡在逾時視窗之內的用戶端。不過這裡必須格外謹慎。如果下限設得太低,規則幾乎永遠不會觸發;如果設得太高,就可能誤傷網路條件較差的真實使用者,或者攔截較大的上傳請求。應先測量你的正常流量,再把下限設定在你願意服務的最慢真實用戶端之下。
最小資料速率如果設定得過於激進,會誤封真實使用者;如果設定得過於寬鬆,又會讓慢速攻擊者鑽空子。應根據實測基準來調校,而不是靠猜測。
這些控制必須分層使用。速率限制與連線上限負責把洪泛擋在門外;逾時與最小資料速率負責清退那些已經混進來的異常用戶端。隨著流量模式變化,要定期複查這些數值,並在真正依賴它們於正式環境中防禦慢速攻擊之前先完成測試。
防禦 Slowloris 與 Slow POST
反向代理防護
反向代理位於用戶端與源站伺服器之間。它會先接收每一個入站連線,並在完整 HTTP 請求形成之前,不向上游轉送任何內容。一個以極慢速度傳送請求標頭的 Slowloris 用戶端永遠無法完成該請求,因此連線會被代理層持有,而你的源站不會受到影響。攻擊者最終是在消耗代理的處理能力,而不是拖住你的應用程式工作程序。
這一層還提供了統一實施連線上限與逾時策略的能力。你只需在代理上配置一次限制,所有後端服務便可繼承這層保護。應將代理部署在 Web 層前面,並讓所有公網流量都經由它轉送。這樣,你就能在邊緣位置阻止可疑來源,而不是等它們進入應用程式後再處理。
伺服器配置強化
防禦慢速 HTTP 攻擊,關鍵在於正確配置某些伺服器選項。設定嚴格的請求標頭和請求主體逾時,限制每個來源的並行連線數,並限制請求行和請求標頭大小。每一個選項都能封住慢速用戶端可能利用的一個缺口。要認真審查 Web 伺服器的預設配置,因為很多預設值在設計上就是為了容忍長生命週期連線。
現代 anti-DDoS 服務可以透過專門機制應對應用層「低速、持續」攻擊。它們會分析請求時序和連線行為,然後丟棄符合攻擊模式的工作階段。當你需要超出內部能力範圍的防護覆蓋時,可以將這類服務與自身配置一起使用。在真正依賴配置來防禦正式環境中的慢速攻擊流量之前,務必使用模擬慢速攻擊進行測試。記錄每一項設定及其背後的原因,方便團隊日後稽核配置。
慢速攻擊防禦最佳實務
分層的網路與應用防禦
沒有任何單一控制手段能阻止所有慢速用戶端。你必須在網路層和應用層同時進行分層防禦。在網路層,你要過濾來源、限制連線速率,並在流量抵達 Web 層之前丟棄畸形封包;在應用層,你要實施逾時、最小資料速率以及請求大小限制。每一層都負責捕捉下一層尚未覆蓋到的威脅。
這種分層非常重要,因為慢速攻擊是會變化形態的。某個用戶端可能通過了網路層過濾,但依然會在 HTTP 請求內部製造阻塞;這時,應用層規則就會主動關閉該連線。設計分層架構時,要確保每一層都能獨立發揮作用,並清楚記錄哪一項控制對應哪一種威脅。即使其中一層失效,下一層仍應繼續保護你的伺服器。
測試與調校防禦措施
每一個閾值都要依據你的正常流量基準來調校。持續測量至少一整週的連線持續時間、請求完成率和資料速率,並將限制設定在真實使用者行為範圍之外但不過分寬鬆的位置。應定期複查這些數值,因為應用程式改動和新功能上線會改變基準。去年調好的規則,今天可能已經開始誤傷真實使用者,或者漏掉新的攻擊形態。
在真正依賴某項配置進入正式環境之前,先用模擬慢速攻擊進行測試。在預備環境中執行一次可控的 Slowloris 或 Slow POST 測試。確認你的逾時規則會觸發、連線上限能生效、告警也能正常觸發。然後再驗證真實使用者請求仍可順利通過。未經測試的防禦,本質上只是猜測。
如果一場 DDoS 攻擊是緩慢到來的,它根本不會在流量圖表中顯現。你唯一的預警,來自閾值規則和實際測試。
將這些實務與定期日誌審查結合起來。只要你持續將目前連線行為與基準進行對比,就能更早發現慢速攻擊模式。保持規則始終處於最新狀態,你的分層防禦體系才有能力抵禦那些悄無聲息滲透進來的 DDoS 攻擊。
慢速攻擊流量小,卻可能帶來極大破壞。要關注連線持續時間和請求完成率,而不是只看流量。將逾時、連線限制、最小資料速率和速率限制分層部署。搭配經過調校的伺服器選項,反向代理可以提供基礎防護。根據正常流量來調校閾值,並定期複查。暴力破解攻擊發生得快,且通常會在日誌中留下密集痕跡。你可以使用常見規則來偵測並阻止暴力破解攻擊。記錄每一個暴力破解來源,封鎖暴力破解使用的 IP,並仔細審查暴力破解模式。每天追蹤暴力破解嘗試。暴力破解攻擊往往考驗防守方的耐心,因此應認真研究每一次暴力破解事件。暴力破解攻擊也可能具有一定隱蔽性。即使是小型網站,也能採用這些對策。稽核你的整體配置,以更好地防禦慢速攻擊流量。
常見問題
慢速攻擊有多快會讓伺服器當機?
這取決於你的連線池大小和逾時設定。慢速攻擊會一條連線一條連線地逐步占滿可用槽位。一旦連線池被填滿,合法使用者就只能等待,或者被直接拒絕存取。嚴格的逾時和連線上限能夠顯著減緩攻擊者的推進速度。
僅靠防火牆能阻止「低速、持續」攻擊嗎?
基礎防火牆主要按位址和連接埠進行過濾,因此它難以識別那些看起來完全正常的用戶端。你還需要應用層控制。逾時、最小資料速率和反向代理,才能捕捉到網路層過濾放行後的慢速攻擊模式。
暴力破解攻擊在日誌裡看起來會類似嗎?
不完全類似。暴力破解通常表現為大量短連線,以及來自同一來源的一波失敗登入;而慢速攻擊則表現為少量但長時間滯留的連線。這兩類模式都應該出現在同一個監控面板中,但各自需要獨立的閾值規則。
我應該多久審查一次閾值?
應按固定週期定期審查,並且每次發生重大應用程式變更後都要複查。新功能會改變你的流量基準。去年適配的規則,今天可能會誤封真實使用者,或者漏掉新的攻擊模式。
單靠反向代理就足夠了嗎?
反向代理能提供很強的基礎防護,但它只能算一層。你仍應將其與調校過的伺服器選項、速率限制和監控體系配合使用。在真正信任它保護正式環境之前,務必用模擬慢速攻擊對整套堆疊進行測試。
