Azure 應用程式閘道 上 Azure Web 應用程式防火牆 的速率限制

適用於: ✔️應用閘道 v2

Application Gateway 上的 Web 應用程式防火牆 速率限制,可協助您偵測並封鎖傳送至您應用程式的異常高流量。 透過在應用閘道 WAF v2 上使用速率限制,您可以減少多種形式的阻斷服務攻擊,防範用戶端設定錯誤導致短時間內傳送大量請求,或控制來自特定地理區域的流量流量。

速率限制原則

在政策中使用自訂的 WAF 規則來設定速率限制。

備註

速率限制規則僅在運行 最新 WAF 引擎的 Web 應用程式防火牆上受支援。 為了確保你使用最新的引擎,請選擇 CRS 3.2 作為預設規則集。 此外,空隔雲層不支援速率限制規則。

當你設定速率限制規則時,請指定閾值:在指定時間內允許的請求數量。 應用閘道 WAF v2 的速率限制使用滑動視窗演算法來判斷流量何時突破閾值並需丟棄。 在違反規則閾值的第一個時段內,將丟棄與速率限制規則匹配的更多流量。 從第二個視窗開始,允許流量達到配置的視窗內的閾值,從而產生限制效果。

您還必須指定匹配條件,該條件告訴 WAF 何時啟動速率限制。 您可以設定多個速率限制規則,以匹配策略中的不同變數和路徑。

Application Gateway WAF v2 也引入了 GroupByUserSession,您必須設定它。 GroupByUserSession 指定如何為匹配的速率限制規則對請求進行分組和計數。

以下三個 GroupByVariables 當前可用:

  • ClientAddr – 這是預設設置,這意味著每個速率限制閾值和緩解措施都獨立應用於每個唯一的源 IP 位址。
  • GeoLocation - 流量根據用戶端 IP 位址上的 Geo-Match 按其地理位置進行分組。 對於速率限制規則,來自同一地理區域的流量會被歸為一組。
  • 無 - 所有流量都分組在一起,並根據速率限制規則的閾值進行計數。 當超出閾值時,將針對符合規則的所有流量採取行動,並且不會為每個用戶端 IP 位址或地理位置維護獨立的計數器。 使用帶有特定匹配條件的 None 格式,例如登入頁面或可疑使用者代理名單。
  • ClientAddrXFFHeader - 每個速率限制門檻與緩解措施會根據 HTTP 請求 X-Forwarded-For 標頭中的 IP 位址獨立適用
  • GeoLocationXFFHeader - 流量是根據 HTTP 請求中 X-Forwarded-For 標頭內的 IP 位址進行地理匹配並分組。 對於速率限制規則,來自同一地理區域的流量會被歸為一組。

速率限制詳細資料

Web 應用程式防火牆 政策會獨立計算並追蹤每個連接端點的設定速率上限閾值。 例如,連結至五個不同接聽程式的單一 WAF 原則,會針對每個接聽程式保有獨立計數器和閾值強制執行方式。

速率限制的門檻並不總是完全按照定義執行,因此不要用速率限制來細緻控制應用程式流量。 相反地,應該用它來減少異常流量並維持應用程式可用性。

滑動視窗演算法會阻止超過閾值的第一個視窗的所有匹配流量,然後限制未來視窗中的流量。 在設定廣泛比對規則時,如果 GroupByVariables 設定為 GeoLocation 或 None,則定義閾值時要格外小心。 配置不正確的閾值可能會導致匹配流量頻繁出現短暫中斷。

備註

每個應用閘道 v2 實例都維護自己的速率限制計數器。 當多個實例同時活躍時,它們會將收到的請求分配給彼此,速率限制的門檻會獨立適用於每個實例。

舉例來說,考慮每個用戶端 IP 每分鐘 400 次請求的門檻。 如果兩個實例同時收到來自同一客戶端 IP 的 270 和 230 個請求,則任何實例都未達到門檻。 WAF 允許這些請求,即使總請求數超過 400 件。 因此,當多個實例同時啟用時,不要把設定的閾值當作嚴格的閘道範圍限制。

後續步驟