如何使用 AWS WAF 以封鎖特定副檔名上傳?

2 分的閱讀內容
0

我想限制使用特定副檔名的檔案上傳 (HTTP POST 請求) 到我的 Web 伺服器。

簡短描述

您分析 HTTP 請求的 POST 資料時,上傳的內容可以是以下兩種類型之一:

  • 表單資料
  • 二進制

注意: AWS WAF 會檢查請求本文的前 8 KB (8,192 位元組)。如需大型本文請求的資訊,請參閱在 AWS WAF 中處理超大型網頁請求元件

要限制使用特定副檔名 (例如 .pdf、.docx 或 .exe) 的檔案上傳,請完成以下步驟:

  1. 建立自訂 Web 存取控制清單 (Web ACL) 規則以檢查請求本文。
  2. 在規則內建立 regex 比對條件。使用此 regex 模式,以設定限制多個檔案附檔名的規則。
  3. 將動作設定為 BLOCK。
  4. 定義規則優先順序,讓此自訂規則的優先順序比任何可封鎖此規則的 Web ACL 規則要高。
  5. 驗證規則是否成功封鎖特定副檔名。

解決方法

識別 POST 資料使用的內容類型

HTTP 請求中的 POST 資料通常使用表單資料或二進制。

  • 表單資料包括使用者在網頁 (或「HTML 表單」) 中輸入並由 HTTP 傳送 (或「貼文」) 到 Web 伺服器的任何資料。
  • 二進制有效負載是除了文字有效負載之外的任何內容。例如,二進制有效負載可以是 .jpeg 檔案、.gzip 檔案或 .xml 檔案。這包括一般二進制資料,例如 .pdf 應用程式、.jpeg 影像或 .zip 應用程式。如需所有副檔名類型的資訊,請參閱網際網路號碼分配局 (IANA) 網站的媒體類型

要識別 POST 請求的類型,請參閱 HTTP POST 標頭的 Content-Type 值。以下範例包含 multipart/form-dataContent-Type

Content-Type: multipart/form-data

如果標頭 "Content-Type" 的值為 "multipart/form-data",則完成以下步驟以建立規則:

  1. 開啟 AWS WAF 主控台

  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL

  3. Region (區域) 中,選擇您在其中建立 Web ACL 的 AWS 區域。
    **注意:**如果您設定 Amazon CloudFront 的 Web ACL,請選取 Global (全域)。

  4. 選取您的 Web ACL。然後,選擇 Rules (規則) 標籤。

  5. 選擇 Add Rules (新增規則) 下拉式清單,然後選擇 Add my own rules and rule groups (新增我自己的規則和規則群組)。

  6. 針對 Rule type (規則類型),選擇 Rule Builder (規則建置器)。

  7. 針對 Name (名稱),輸入可識別此規則的名稱。

  8. 針對 Type (類型),選擇 Regular rule (一般規則)。

  9. 針對If a request (如果請求),選擇 matches the statement (比對陳述式)。然後,完成陳述式的下列欄位
    針對 Inspect (檢查),選擇 Body (內文)。
    針對內容類型,選擇 JSON
    針對 JSON 比對範圍,選擇
    針對如果請求內文中的 JSON 無效,AWS WAF 應如何處理請求,選擇適合您使用案例的相關選項。
    針對要檢查的內容,選擇完整 JSON 內容
    針對比對類型,選擇比對規則表達式
    針對規則表達式,請輸入要比對的 regex 模式。請參閱下列範例:

    (?:.pdf|.doc|.docx|.ppt)
  10. (選用) 針對 Text transformation (文字轉換),您可以新增文字轉換,或將這些欄位保留為 None (無)。

  11. 針對 Oversize Handling (加大處理),選擇適合您使用案例的相關選項。

  12. 針對 Action (動作),選擇 Block (封鎖)。

  13. 選擇新增規則

  14. (選用) 針對 Set Rule Priority (設定規則優先順序),選取您的規則並移動其優先順序。AWS WAF 會依照規則顯示的順序處理規則。如需詳細資訊,請參閱 Web ACL 中規則和規則群組的處理順序

  15. 選擇 Save (儲存)。

驗證規則是否如預期般運作。

如果標頭 "Content-Type" 為二進制值,如 "application/pdf" 或 "application/ppt"則完成以下步驟以建立規則:

  1. 開啟 AWS WAF 主控台

  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL

  3. Region (區域) 中,選擇您在其中建立 Web ACL 的 AWS 區域。**注意:**如果您設定 Amazon CloudFront 的 Web ACL,請選取 Global (全域)。

  4. 選取您的 Web ACL。然後,選擇 Rules (規則) 標籤。

  5. 選擇 Add Rules (新增規則) 下拉式清單,然後選擇 Add my own rules and rule groups (新增我自己的規則和規則群組)。

  6. 針對 Rule type (規則類型),選擇 Rule Builder (規則建置器)。

  7. 針對 Name (名稱),輸入可識別此規則的名稱。

  8. 針對 Type (類型),選擇 Regular rule (一般規則)。

  9. 針對If a request (如果請求),選擇 matches the statement (比對陳述式)。然後,完成陳述式的下列欄位:
    針對檢查,選擇單一標頭
    針對標頭欄位名稱,輸入 Content-Type
    針對比對類型,選擇比對規則表達式
    針對規則表達式,請輸入要比對的 regex 模式。
    請參閱以下 .pdf.jpeg 檔案範例:

    (?:pdf|jpeg)
  10. (選用) 針對 Text transformation (文字轉換),您可以新增文字轉換,或將這些欄位保留為 None (無)。

  11. 針對 Action (動作),選擇 Block (封鎖)。

  12. 選擇新增規則

  13. (選用) 針對 Set Rule Priority (設定規則優先順序),選取您的規則並移動其優先順序。AWS WAF 會依照規則顯示的順序處理規則。如需詳細資訊,請參閱 Web ACL 中規則和規則群組的處理順序

  14. 選擇 Save (儲存)。

  15. 驗證規則是否如預期般運作。

**注意:**要限制特定上傳 URI 路徑的規則,請使用可檢查路徑的 Web ACL 規則內的 AND 陳述式

AWS 官方
AWS 官方已更新 1 年前