AWS WAF 入門 - AWS WAF、AWS Firewall Manager 與 AWS Shield Advanced

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS WAF 入門

此教學課程說明如何使用 AWS WAF 執行以下任務:

  • 設定 AWS WAF。

  • 在 AWS WAF 主控台中使用精靈建立 Web 存取控制清單 (Web ACL)。

  • 選擇您要 AWS WAF 檢查 Web 請求的 AWS 資源。本教程介紹了 Amazon 的步驟 CloudFront。Amazon API 閘道 REST API、應用程式負載平衡器、AWS AppSync GraphQL API、Amazon Cognito 使用者集區、AWS App Runner服務或AWS已驗證存取執行個體的程序基本上相同。

  • 新增您要用來篩選 Web 請求的規則和規則群組。例如,您可以指定要求來源的 IP 位址,並在要求中指定僅由攻擊者使用的值。對於每個規則,您可以指定如何處理相符的 Web 要求。您可以執行諸如阻止或計數之類的事情,並且可以運行 CAPTCHA 之類的機器人挑戰。您可以為在 Web ACL 內定義的每個規則,以及在規則群組內定義的每個規則定義動作。

  • 指定 Web ACL 的預設動作,Block或Allow。當 Web ACL 中的規則未明確允許或封鎖AWS WAF要求時,這是針對要求所採取的動作。

注意

對於您在本教學課程中建立的資源,AWS 通常每天計價少於 0.25 美元。當您完成此教學課程,我們建議您刪除資源以免產生不必要的費用。

步驟 1:設定 AWS WAF

如果您尚未遵循中的一般設定步驟設定,請立即執行。

步驟二:建立 Web ACL

主AWS WAF控台會引導您完成設定程序,AWS WAF以根據您指定的條件封鎖或允許 Web 要求,例如要求來源的 IP 位址或要求中的值。在此步驟中,建立Web ACL。如需 AWS WAF Web ACL 的詳細資訊,請參閱網頁存取控制清單 (網路 ACL)

建立 Web ACL
  1. 請登入AWS Management Console並開啟AWS WAF主控台,網址為 https://console.aws.amazon.com/wafv2/

  2. 在AWS WAF首頁中,選擇「建立 Web ACL」。

  3. 對於 Name (名稱),輸入您要用來識別此 Web ACL 的名稱。

    注意

    建立 Web ACL 後無法修改名稱。

  4. (選擇性) 對於 Description - optional (描述 - 選用性),如果需要,請為 Web ACL 輸入較長的描述。

  5. CloudWatch 指標名稱,變更預設名稱 (如果適用)。遵循主控台上的指引,以瞭解有效的字元。名稱不能包含特殊字元、空格或保留給 AWS WAF 使用的指標名稱,包括「All」和「Default_Action」。

    注意

    建立 Web ACL 之後,就無法變更 CloudWatch 量度名稱。

  6. 對於「資源型態」,請選擇CloudFront分配。「區域」會自動填入「全域」(CloudFront) 以進 CloudFront 行分配。

  7. (選擇性) 針對關聯AWS資源-選擇性,請選擇 [新增AWS資源]。在對話方塊中,選擇您要關聯的資源,然後選擇 [新增]。 AWS WAF返回「描述 Web ACL 和相關AWS資源」頁面。

  8. 選擇下一步

步驟 3:新增字串比對規則

在此步驟中,您會建立使用字串比對陳述式的規則,並指出如何處理比對請求。字串比對規則陳述式會識別要在AWS WAF要求中搜尋的字串。通常,字串包含可列印 ASCII 字元,但您可以指定十六字元範圍 0x00 到 0xFF 的任何字元 (小數點 0 到 255)。除了指定要搜尋的字串之外,您還可以指定要搜尋的 Web 要求元件,例如標頭、查詢字串或要求主體。

此陳述式類型會在 Web 要求元件上運作,而且需要下列要求元件設定:

  • 要求元件 — 要檢查的 Web 要求部分,例如查詢字串或內文。

    警告

    如果您檢查要求元件文、JSON文、標頭Cookie,請參閱AWS WAF可以檢查多少內容的限制處理過大的 Web 請求組件 AWS WAF

    如需 Web 要求元件的詳細資訊,請參閱網頁要求元件

  • 選擇性文字轉換 — 您要在檢查要求元件之前對AWS WAF要求元件執行的轉換。例如,您可以轉換為小寫或標準化空格。如果您指定多個轉換,則會依照列出的順AWS WAF序處理這些轉換。如需相關資訊,請參閱 文字轉換

如需AWS WAF規則的其他資訊,請參閱AWS WAF 規則

建立字串比對規則陳述式
  1. Add rules and rule groups (新增規則和規則群組) 頁面上,選擇 Add rules (新增規則)Add my own rules and rule groups (新增我自己的規則和規則群組)Rule builder (規則建置器)Rule visual editor (規則視覺化編輯器)

    注意

    主控台提供 Rule visual editor (規則視覺化編輯器)Rule JSON editor (規則 JSON 編輯器)。JSON 編輯器可讓您在 Web ACL 之間輕鬆複製組態,並且是更複雜的規則集所需,例如具有多層巢狀的規則集。

    此程序使用 Rule visual editor (規則視覺化編輯器)

  2. 對於 Name (名稱),輸入您要用來識別此規則的名稱。

  3. 對於 Type (類型),選擇 Regular rule (一般規則)

  4. 對於 If a request (如果請求),選擇 matches the statement (比對陳述式)

    其他選項適用於邏輯規則陳述式類型。您可以使用它們來合併或否定其他規則陳述式的結果。

  5. 陳述式上,針對「檢查」,開啟下拉式清單,然後選擇您要檢查的 Web AWS WAF 要求元件。在此範例中,請選擇 Header (標頭)

    當您選擇 Header (標題) 時,您也可以指定要 AWS WAF 檢查的標題。輸入 User-Agent。此值不會區分大小寫。

  6. 對於 Match type (比對類型),選擇指定的字串必須顯示在 User-Agent 標頭中的位置。

    對於此範例,選擇 Exactly matches string (完全符合字串)。這表示 AWS WAF 會檢查每個 Web 請求中的使用者代理程式標頭,找出與您指定的字串相同的字串。

  7. 對於 String to match (要比對的字串),指定您要 AWS WAF 搜尋的字串。String to match (符合值) 的長度上限為 200 個字元。如果您想要指定 base64 編碼值,可在編碼前指定最多 200 個字元。

    在此範例中,輸入MyAgent。 AWS WAF將檢查 Web 請求中的User-Agent標題以獲取值MyAgent

  8. Text transformation (文字轉換) 保持設定為 None (無)

  9. 針對「動作」,選取您希望規則在符合 Web 要求時採取的動作。在此範例中,選擇 [計數] 並保留其他選項不變。計數動作會為符合規則的 Web 要求建立量度,但不會影響要求是允許還是封鎖。如需有關動作選擇的詳細資訊,請參閱規則動作Web ACL 規則和規則群組評估

  10. 選擇新增規則

步驟 4:新增受AWS管規則規則群組

AWS受管規則提供一組受管規則群組供您使用,其中大部分對AWS WAF客戶免費。如需規則群組的詳細資訊,請參閱規則群組。我們會將受AWS管規則規則群組新增至此 Web ACL。

新增AWS受管規則規則群組
  1. Add rules and rule groups (新增規則和規則群組) 頁面上,選擇 Add rules (新增規則),然後選擇 Add managed rule groups (新增受管規則群組)

  2. 在 [新增受管規則群組] 頁面上,展開AWS受管規則群組的清單。(你也會看到為AWS Marketplace賣家提供的物品。 您可以訂閱其提供項目,然後以與「AWS受管規則」規則群組相同的方式使用它們。)

  3. 針對您要新增的規則群組,執行下列動作:

    1. 在「動作」欄中,開啟「新增至網頁 ACL」切換。

    2. 選取「編輯」,然後在規則群組的「規則」清單中開啟「覆寫所有規則動作」下拉式清單,然後選取Count。這會將規則群組中所有規則的動作設定為僅計數。這可讓您在使用任何規則之前,先查看規則群組中的所有規則與 Web 要求的行為。

    3. 選擇 [儲存規則]。

  4. 在 [新增受管規則群組] 頁面中,選擇 [新增規則]。您會返回「新增規則和規則群組」頁面。

步驟 5:完成您的網頁 ACL 設定

完成將規則和規則群組新增至 Web ACL 組態時,請在 Web ACL 中管理規則的優先順序,以及進行指標、標記和記錄等設定來完成工作。

完成您的 Web ACL 組態
  1. Add rules and rule groups (新增規則和規則群組) 頁面上,選擇 Next (下一步)

  2. 在 [設定規則優先順序] 頁面上,您可以看到 Web ACL 中規則和規則群組的處理順序。 AWS WAF從清單頂端開始處理它們。您可以向上或向下移動規則來變更處理順序。若要這樣做,請在清單中選取一個,然後選擇 Move up (上移)Move down (下移)。如需有關規則優先順序的詳細資訊,請參閱 Web ACL 中規則和規則群組的處理順序

  3. 選擇下一步

  4. 設定指標頁面上,對於 Amazon CloudWatch 指標,您可以查看規則和規則群組的計劃指標,並且可以查看 Web 請求取樣選項。如需檢視取樣請求的資訊,請參閱。檢視 Web 請求的範例如需 Amazon CloudWatch 指標的相關資訊,請參閱使用 Amazon 監控 CloudWatch

    您可以在AWS WAF主控台的「流量概觀」標籤下,在 Web ACL 頁面上存取 Web 流量測量結果的摘要。主控台儀表板提供 Web ACL Amazon CloudWatch 指標的近乎即時的摘要。如需詳細資訊,請參閱 網頁 ACL 流量概觀儀表板

  5. 選擇下一步

  6. Review and create web ACL (檢閱並建立 Web ACL) 頁面上,檢閱您的設定,然後選擇 Create web ACL (建立 Web ACL)

精靈會帶您回到 Web ACL 頁面,其中會列出新的 Web ACL。

步驟 6:清理您的資源

現在,您已成功完成教學課程。為避免您的帳戶產生額外 AWS WAF 費用,請清除所建立的 AWS WAF 物件。或者,您可以更改配置以匹配您真正想要使用管理的 Web 請求AWS WAF。

注意

對於您在本教學課程中建立的資源,AWS 通常每天計價少於 0.25 美元。當您完成時,我們建議您刪除資源以免產生不必要的費用。

刪除 AWS WAF 收取費用的物件
  1. Web ACL 頁面中,從清單中選取您的 Web ACL,然後選擇 Edit (編輯)

  2. 在 [關聯的AWS資源] 索引標籤上,針對每個關聯的資源選取資源名稱旁的選項按鈕,然後選擇 [取消關聯]。這會將 Web ACL 與您的 AWS 資源取消關聯。

  3. 在下列每個畫面中,選擇 Next (下一步),直到您回到 Web ACL 頁面為止。

    Web ACL 頁面中,從清單中選取您的 Web ACL,然後選擇 Delete (刪除)

規則和規則陳述式無法存在於規則群組和 Web ACL 定義之外。如果您刪除 Web ACL,這會刪除您在 Web ACL 中定義的所有個別規則。當您從 Web ACL 移除某個規則群組時,您只是移除對它的參考。