Classic 入門 AWS WAF - AWS WAFAWS Firewall Manager、 和 AWS Shield Advanced

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

Classic 入門 AWS WAF

警告

AWS WAF 傳統支援將於 2025 年 9 月 30 日結束。

注意

這是 AWS WAF Classic 文件。只有在您在 2019 年 11 月 AWS WAF 之前建立 AWS WAF 規則和 Web 等資源,且尚未將其遷移至最新版本時ACLs,才應該使用此版本。若要遷移 Web ACLs,請參閱 將您的 AWS WAF Classic 資源遷移至 AWS WAF

如需 的最新版本 AWS WAF,請參閱 AWS WAF

本教學課程示範如何使用 AWS WAF Classic 來執行下列任務:

  • 設定 AWS WAF Classic。

  • 使用 AWS WAF Classic 主控台建立 Web 存取控制清單 (Web ACL),並指定您要用來篩選 Web 請求的條件。例如,您可以指定請求源於的 IP 地址和僅由攻擊者使用的請求數值。

  • 新增條件至規則。規則可讓您定位要封鎖或允許的 web 請求。Web 請求必須符合 AWS WAF Classic 區塊之前規則中的所有條件,或根據您指定的條件允許請求。

  • 將規則新增至您的 Web ACL。可以在此處指定您是否想要根據所新增至每個規則的條件來允許或封鎖 web 請求。

  • 指定預設動作 (封鎖或允許)。這是當 Web 請求不符合您的任何規則時 AWS WAF Classic 所採取的動作。

  • 選擇您要 AWS WAF Classic 檢查 Web 請求的 Amazon CloudFront 分佈。本教學課程僅涵蓋 的步驟 CloudFront,但 Application Load Balancer 和 Amazon API Gateway 的程序APIs基本上是相同的。 AWS WAF Classic for CloudFront 適用於所有 AWS 區域。 AWS WAF Classic 可與 API Gateway 搭配使用,或 Application Load Balancer 可用於AWS 服務端點 列出的區域。

注意

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

步驟 1:設定 AWS WAF Classic

如果您尚未遵循 中的一般設定步驟設定 AWS WAF Classic,請立即執行此操作。

步驟 2:建立 Web ACL

AWS WAF Classic 主控台會引導您完成設定 AWS WAF Classic 的程序,以根據您指定的條件封鎖或允許 Web 請求,例如請求來源的 IP 地址或請求中的值。在此步驟中,您可以建立 Web ACL。

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

    如果您在導覽窗格中看到切換至 AWS WAF 傳統,請選取它。

  2. 如果這是您第一次使用 AWS WAF Classic,請選擇前往 AWS WAF Classic ,然後選擇設定 Web ACL

    如果您之前使用過 AWS WAF Classic,請在導覽窗格中選擇 WebACLs,然後選擇建立 Web ACL

  3. 名稱網頁ACL上,針對 Web ACL名稱 輸入名稱。

    注意

    您無法在建立 Web 之後變更名稱ACL。

  4. 針對CloudWatch 指標名稱 ,輸入名稱。名稱只能包含英數字元 (A-Z、a-z、0-9)。不能含有空格。

    注意

    您無法在建立 Web 之後變更名稱ACL。

  5. 對於 區域,選擇一個區域。如果您要將此 Web ACL與 CloudFront 分佈建立關聯,請選擇全域 (CloudFront)

  6. 若要AWS 讓 資源與 建立關聯,請選擇您要與 Web 建立關聯的資源ACL,然後選擇下一步

步驟 3:建立 IP 比對條件

IP 比對條件可指定發出請求的 IP 地址或 IP 地址範圍。在此步驟中,建立 IP 比對條件。在後續步驟中,您指定是否要允許或封鎖來自指定 IP 地址的請求。

注意

如需 IP 比對條件的詳細資訊,請參閱使用 IP 比對條件

建立 IP 比對條件
  1. 建立條件頁面,於IP 符合條件,選擇建立條件

  2. Create IP match condition (建立 IP 比對條件) 對話方塊中,於 Name (名稱),輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。

  3. 針對 Address (地址),輸入 192.0.2.0/24。此 IP 地址範圍,在CIDR表示法中指定,包含從 192.0.2.0 到 192.0.2.255 的 IP 地址。(例如,預留 192.0.2.0/24 IP 地址範圍,則沒有任何 web 請求會來自這些 IP 地址)。

    AWS WAF Classic 支援IPv4地址範圍:/8 和 /16 到 /32 之間的任何範圍。 AWS WAF Classic 支援IPv6地址範圍:/24、/32、/48、/56、/64 和 /128。(若要指定單一 IP 地址,例如 192.0.2.44,請輸入 192.0.2.44/32)。不支援其他範圍。

    如需CIDR註釋的詳細資訊,請參閱 Wikipedia 文章無類別網域間路由

  4. 選擇 Create (建立)。

步驟 4:建立地理比對條件

地理比對條件指定國家/地區為請求的發源地。在此步驟中,建立地理比對條件。在後續步驟中,您指定是否要允許或封鎖來自指定國家/地區的請求。

注意

如需地理比對條件的詳細資訊,請參閱使用地理比對條件

建立地理比對條件
  1. 建立條件頁面,於地理符合條件,選擇建立條件

  2. Create geo match condition (建立地理比對條件) 對話方塊中,於 Name (名稱),輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。

  3. 選擇位置類型和國家/地區。目前, Location type (位置類型) 只能是 Country (國家/地區)

  4. 選擇新增位置

  5. 選擇 Create (建立)。

步驟 5:建立字串比對條件

字串比對條件會識別您希望 AWS WAF Classic 在請求中搜尋的字串,例如標頭或查詢字串中的指定值。通常,字串由可列印ASCII字元組成,但您可以指定從十六進位 0x00 到 0xFF (十進位 0 到 255) 的任何字元。在此步驟中,建立字串比對條件。在後續步驟中,您指定是否要允許或封鎖含有指定字串的請求。

注意

如需字串比對條件的詳細資訊,請參閱使用字串比對條件

建立字串比對條件
  1. Create conditions (建立條件) 頁面,於 String and regex match conditions (字串和 regex 符合條件) 選擇 Create condition (建立條件)

  2. Create string match condition (建立字串比對條件) 對話方塊中,輸入以下的值:

    名稱

    輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。

    Type

    選擇 String match (字串比對)

    要篩選的請求部分是

    選擇您希望 AWS WAF Classic 檢查指定字串的 Web 請求部分。

    在此範例中,請選擇 Header (標頭)

    注意

    如果您選擇 Body 作為 上篩選請求部分的值, AWS WAF Classic 只會檢查前 8192 個位元組 (8 KB),因為 只會 CloudFront 轉送前 8192 個位元組以供檢查。若要允許或封鎖內文超過 8192 個位元組的請求,您可以建立大小限制條件。(AWS WAF Classic 從請求標頭取得內文的長度。) 如需詳細資訊,請參閱使用容量限制條件

    標頭 (必要,如果「部分請求的篩選條件」為「標頭」時)

    由於您為部分 請求選擇標頭以在 上篩選,因此您必須指定要 AWS WAF Classic 檢查的標頭。 輸入 User-Agent (使用者代理程式)。(此值不區分大小寫)。

    符合類型

    選擇指定字串必須顯示在 User-Agent (使用者代理程式) 標頭中的位置,例如,在開始時或在字串中。

    在此範例中,選擇完全符合 ,這表示 AWS WAF Classic 會檢查 Web 請求的標頭值與您指定的值相同。

    轉換

    為了繞過 AWS WAF Classic,攻擊者會在 Web 請求中使用不尋常的格式,例如新增空格或URL編碼部分或全部請求。轉換透過移除空格、URL對請求進行解碼,或執行其他操作來消除攻擊者常用的大部分異常格式,將 Web 請求轉換為更標準格式。

    您只能指定一種文字轉換類型。

    在此範例中,請選擇 None (無)

    base64 編碼值

    如果您於 Value to match (符合值) 輸入的值是 base64 編碼,請選取此核取方塊。

    在此範例中,不需選取核取方塊。

    符合值

    指定您希望 AWS WAF Classic 在 Web 請求部分中搜尋的值,而您在要篩選的請求部分中表示。

    在此範例中,輸入 BadBot. AWS WAF Classic 會檢查 Web 請求中值 的User-Agent標頭BadBot

    符合值 的長度上限為 50 個字元。如果您想要指定 base64 編碼值,可在編碼前提供最多 50 個字元。

  3. 如果您想要 AWS WAF Classic 檢查多個值的 Web 請求,例如包含 的User-Agent標頭BadBot和包含 的查詢字串BadParameter,則有兩種選擇:

    • 如果您想要當它們含有兩者得的值時 (AND) 才允許或封鎖 web 請求,您可以為每個值建立一個字串比對條件。

    • 如果您想要當它們含有其中一個值或兩者的值時 (OR) 才允許或封鎖 web 請求,您可以新增兩者的值至相同的字串比對條件中。

    在本範例中,請選擇 Create (建立)

步驟 5A:建立 Regex 條件 (選用)

規則表達式條件是一種字串比對條件,類似 ,它識別您希望 AWS WAF Classic 在請求中搜尋的字串,例如標頭或查詢字串中的指定值。主要區別是使用規則運算式 (regex) 來指定您要 AWS WAF Classic 搜尋的字串模式。在此步驟中,建立 regex 比對條件。在後續步驟中,您指定是否要允許或封鎖含有指定字串的請求。

注意

如需規則運算式比對條件的詳細資訊,請參閱使用 Regex 比對條件

建立 regex 比對條件
  1. Create conditions (建立條件) 頁面,於 String match and regex conditions (字串符合和 regex 條件) 選擇 Create condition (建立條件)

  2. Create string match condition (建立字串比對條件) 對話方塊中,輸入以下的值:

    名稱

    輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。

    Type

    選擇 Regex match (Regex 比對)

    要篩選的請求部分是

    選擇您希望 AWS WAF Classic 檢查指定字串的 Web 請求部分。

    在此範例中,請選擇 Body (內容主體)

    注意

    如果您選擇 Body 作為 上篩選請求部分的值, AWS WAF Classic 只會檢查前 8192 個位元組 (8 KB),因為 只會 CloudFront 轉送前 8192 個位元組以供檢查。若要允許或封鎖內文超過 8192 個位元組的請求,您可以建立大小限制條件。(AWS WAF Classic 從請求標頭取得內文的長度。) 如需詳細資訊,請參閱使用容量限制條件

    轉換

    為了繞過 AWS WAF Classic,攻擊者會在 Web 請求中使用不尋常的格式,例如新增空格或URL編碼部分或全部請求。轉換透過移除空格、URL對請求進行解碼,或執行其他操作來消除攻擊者常用的大部分異常格式,將 Web 請求轉換為更標準格式。

    您只能指定一種文字轉換類型。

    在此範例中,請選擇 None (無)

    比對請求的 Regex 模式

    選擇 Create regex pattern set (建立 Regex 模式集)

    新模式集的名稱

    輸入名稱,然後指定您要 AWS WAF Classic 搜尋的 regex 模式。

    接下來,輸入規則運算式 I【a@】mAB【a@】dRequest。 AWS WAF Classic 會檢查 Web 請求中的User-Agent標頭是否有值:

    • I amABad請求

    • IamAB @dRequest

    • I@mABadRequest

    • I@mAB@dRequest

  3. 選擇 Create pattern set and add filter (建立模式集並新增篩選條件)

  4. 選擇 Create (建立)。

步驟 6:建立SQL注入比對條件

SQL 注入比對條件會識別 Web 請求的部分,例如您要 AWS WAF Classic 檢查惡意程式SQL碼的標頭或查詢字串。攻擊者使用SQL查詢從您的資料庫中擷取資料。在此步驟中,您會建立SQL注入比對條件。在稍後的步驟中,您可以指定是否要允許請求或封鎖看似包含惡意程式SQL碼的請求。

注意

如需字串比對條件的詳細資訊,請參閱使用SQL注入比對條件

若要建立SQL注入比對條件
  1. 建立條件頁面上,針對SQL注入比對條件 ,選擇建立條件

  2. 建立SQL注入比對條件對話方塊中,輸入下列值:

    名稱

    輸入名稱。

    要篩選的請求部分是

    選擇您希望 AWS WAF Classic 檢查惡意程式SQL碼的 Web 請求部分。

    在此範例中,選擇 Query string (查詢字串)

    注意

    如果您選擇 Body 作為 上篩選請求部分的值, AWS WAF Classic 只會檢查前 8192 個位元組 (8 KB),因為 只會 CloudFront 轉送前 8192 個位元組以供檢查。若要允許或封鎖內文超過 8192 個位元組的請求,您可以建立大小限制條件。(AWS WAF Classic 從請求標頭取得內文的長度。) 如需詳細資訊,請參閱使用容量限制條件

    轉換

    在此範例中,選擇URL解碼

    攻擊者會使用異常格式,例如URL編碼,以嘗試繞過 AWS WAF Classic。在 AWS WAF Classic 檢查請求之前,URL解碼選項會消除 Web 請求中的部分格式。

    您只能指定一種文字轉換類型。

  3. 選擇 Create (建立)。

  4. 選擇 Next (下一步)

步驟 7:(選用) 建立其他條件

AWS WAF Classic 包含其他條件,包括下列項目:

  • 大小限制條件 – 識別 Web 請求的部分,例如您要 AWS WAF Classic 檢查長度的標頭或查詢字串。如需詳細資訊,請參閱使用容量限制條件

  • 跨網站指令碼比對條件 – 識別 Web 請求的部分,例如 AWS WAF 您要檢查是否有惡意指令碼的標頭或查詢字串。如需詳細資訊,請參閱使用跨網站指令碼比對條件

您可以現在選擇性地建立這些條件,或者您可以略過此步驟,前往 步驟 8:建立規則並新增條件

步驟 8:建立規則並新增條件

您可以建立規則來指定要在 Web 請求中搜尋 AWS WAF Classic 的條件。如果您將多個條件新增至規則,Web 請求必須符合 AWS WAF Classic 規則中的所有條件,以允許或封鎖基於該規則的請求。

注意

如需規則的詳細資訊,請參閱使用規則

建立規則並新增條件
  1. Create rules (建立規則) 頁面上,選擇 Create rules (建立規則)

  2. Create rules (建立規則) 對話方塊中,輸入以下的值:

    名稱

    輸入名稱。

    CloudWatch 指標名稱

    輸入 AWS WAF Classic 將建立並將與規則建立關聯的 CloudWatch 指標名稱。名稱只能包含英數字元 (A-Z、a-z、0-9)。不能含有空格。

    規則類型

    選擇 Regular rule (一般規則)Rate-based rule (以速率為基礎的規則)。以速率為基礎的規則與一般規則相同,但還會考慮每五分鐘,從已識別的 IP 地址所發出的請求數量。如需這些規則類型的詳細資訊,請參閱AWS WAF Classic 的運作方式。在此範例中,選擇 Regular rule

    速率限制

    對於以速率為基礎的規則,輸入五分鐘期間內允許來自符合規則條件之 IP 地址的最大請求數量。

  3. 對於您希望新增到規則的第一個條件,請指定以下設定:

    • 根據 Web 請求是否與條件中的設定相符,選擇是否要讓 AWS WAF Classic 允許或封鎖請求。

      在此範例中,請選擇 does (有符合)

    • 選擇您要新增至規則的條件類型:IP 相符集條件、字串相符集條件或SQL注入相符集條件。

      在此範例中,選擇 originate from IP addresses in (源於的 IP 地址)

    • 選擇要新增到規則的條件。

      在此範例中,選擇您在前一任務中所建立的 IP 比對條件。

  4. 選擇新增條件

  5. 新增您之前建立的地理比對條件。指定下列值:

    • When a request does (當請求有)

    • 源於的地理位置

    • 選擇您的地裡比對條件。

  6. 選擇新增其他條件

  7. 新增您之前建立的字串比對條件。指定下列值:

    • When a request does (當請求有)

    • 至少符合字串比對條件裡的一項篩選條件

    • 選擇您的字串比對條件。

  8. 選擇新增條件

  9. 新增您先前建立的SQL注入比對條件。指定下列值:

    • When a request does (當請求有)

    • 在SQL注入比對條件中至少比對其中一個篩選條件

    • 選擇您的SQL注射比對條件。

  10. 選擇新增條件

  11. 新增您之前建立的容量限制條件。指定下列值:

    • When a request does (當請求有)

    • 至少符合容量限制條件裡的一項篩選條件

    • 選擇您的容量限制條件。

  12. 如果您建立任何其他的條件,例如 regex 條件,以相同方式新增。

  13. 選擇 Create (建立)。

  14. 對於 Default action (預設動作),選擇 Allow all requests that don't match any rules (允許不符合任何規則的請求)

  15. 選擇 Review and create (檢閱和建立)。

步驟 9:將規則新增至 Web ACL

當您將規則新增至 Web 時ACL,您可以指定下列設定:

  • 您希望 AWS WAF Classic 對符合規則中所有條件的 Web 請求採取的動作:允許、封鎖或計數請求。

  • Web 的預設動作ACL。這是您希望 AWS WAF Classic 對不符合規則中所有條件的 Web 請求採取的動作:允許或封鎖請求。

AWS WAF Classic 會開始封鎖符合下列所有條件 (以及您可能新增的任何其他條件) 的 CloudFront Web 請求:

  • User-Agent 標頭的值為 BadBot

  • (如果您建立並新增 regex 條件) Body 的值為任何符合 I[a@]mAB[a@]dRequest 模式的四個字串 (four strings)。

  • 發出請求的 IP 地址範圍為 192.0.2.0-192.0.2.255

  • 您在地理比對條件中選取發出請求的國家/地區

  • 請求似乎在查詢字串中包含惡意程式SQL碼

AWS WAF Classic CloudFront 允許 回應不符合所有三個條件的任何請求。

步驟 10:清理您的資源

現在,您已成功完成教學課程。為了防止您的帳戶產生額外的 AWS WAF Classic 費用,您應該清除您建立的 AWS WAF Classic 物件。或者,您可以變更設定,以確實比對要允許、封鎖和計數的 web 請求。

注意

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

刪除 AWS WAF Classic 收費的物件
  1. 取消 Web ACL 與 CloudFront 分發的關聯:

    1. 登入 AWS Management Console 並在 開啟 AWS WAF 主控台https://console.aws.amazon.com/wafv2/

      如果您在導覽窗格中看到切換至 AWS WAF 傳統,請選取它。

    2. 選擇您要刪除的 Web ACL 名稱。這會在右側窗格中開啟包含 Web 詳細資訊ACL的頁面。

    3. 在右窗格中的規則索引標籤上,AWS 使用此 Web 區段前往資源ACL。對於您ACL建立 Web 關聯的 CloudFront 分佈,請在類型欄中選擇 x

  2. 從您的規則移除條件:

    1. 在導覽窗格中,選擇規則

    2. 選擇在本教學課程中建立的規則。

    3. 選擇編輯規則

    4. 選擇每個條件標題右邊的 x

    5. 選擇更新

  3. 從 Web 移除規則ACL,並刪除 WebACL:

    1. 在導覽窗格中,選擇 Web ACLs

    2. 選擇ACL您在教學課程中建立的 Web 名稱。這會在右側窗格中開啟包含 Web 詳細資訊ACL的頁面。

    3. 規則索引標籤上,選擇編輯 Web ACL

    4. 選擇每個規則標題右邊的 x

    5. 選擇動作 ,然後選擇刪除 Web ACL

  4. 刪除您的規則:

    1. 在導覽窗格中,選擇規則

    2. 選擇在本教學課程中建立的規則。

    3. 選擇 刪除

    4. 刪除對話方塊中,再次選擇刪除確認。

AWS WAF Classic 不會針對條件收費,但如果您想要完成清除,請執行下列程序,從條件中移除篩選條件並刪除條件。

刪除篩選條件和條件
  1. 刪除您的 IP 比對條件的 IP 地址範圍,以及刪除 IP 比對條件:

    1. 在 AWS WAF Classic 主控台的導覽窗格中,選擇 IP 地址

    2. 選擇在本教學課程中建立的 IP 比對條件。

    3. 選取您新增的 IP 地址範圍的核取方塊。

    4. 選擇刪除 IP 地址或範圍

    5. IP match conditions (IP 比對條件) 窗格中,選擇刪除

    6. 刪除對話方塊中,再次選擇刪除確認。

  2. 刪除SQL注入比對條件中的篩選條件,並刪除SQL注入比對條件:

    1. 在導覽窗格中,選擇SQL注入

    2. 選擇您在教學課程中建立的SQL注入比對條件。

    3. 選取您新增篩的選條件的核取方塊。

    4. 選擇刪除篩選條件

    5. SQL注入比對條件窗格中,選擇刪除

    6. 刪除對話方塊中,再次選擇刪除確認。

  3. 刪除您的字串比對條件的篩選條件,以及刪除字串比對條件:

    1. 在導覽窗格中選擇字串和 regex 比對

    2. 選擇在本教學課程中建立的字串比對條件。

    3. 選取您新增篩的選條件的核取方塊。

    4. 選擇刪除篩選條件

    5. String match conditions (字串比對條件) 窗格中,選擇刪除

    6. 刪除對話方塊中,再次選擇刪除確認。

  4. 如果您有建立的話,請刪除您的 regex 比對條件的篩選條件,以及刪除 regex 比對條件:

    1. 在導覽窗格中選擇字串和 regex 比對

    2. 選擇在本教學課程中建立的 regex 比對條件。

    3. 選取您新增篩的選條件的核取方塊。

    4. 選擇刪除篩選條件

    5. Regex match conditions (Regex 比對條件)窗格中,選擇刪除

    6. 刪除對話方塊中,再次選擇刪除確認。

  5. 刪除您的容量限制條件的篩選條件,以及刪除容量限制條件:

    1. 在導覽窗格中,選擇容量限制

    2. 選擇在本教學課程中建立的容量限制條件。

    3. 選取您新增篩的選條件的核取方塊。

    4. 選擇刪除篩選條件

    5. Size constraint conditions (容量限制條件) 窗格中,選擇刪除

    6. 刪除對話方塊中,再次選擇刪除確認。