開始使用經 AWS WAF 典版 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

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

開始使用經 AWS WAF 典版

注意

這是AWS WAF 經典文檔。只有在您在 2019 年 11 月 AWS WAF 之前建立了規則和 Web ACL 等 AWS WAF 資源,但尚未將資源移轉至最新版本時,才應使用此版本。若要移轉資源,請參閱 將您的 AWS WAF 傳統資源遷移到 AWS WAF

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

本教學課程顯示如何使用「 AWS WAF 傳統」來執行下列工作:

  • 設定「 AWS WAF 經典」。

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

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

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

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

  • 選擇您希望 AWS WAF 經典 CloudFront 版檢查 Web 請求的 Amazon 分發。本教學僅涵蓋應用 CloudFront程 Application Load Balancer 和 Amazon API Gateway 的程序基本上是相同的。 AWS WAF 經典版 CloudFront 適用於所有人 AWS 區域。 AWS WAF AWS 服務端點上列出的區域提供可搭配 API Gateway 或應用程式負載平衡器使用的典型版。

注意

AWS 一般而言,對於您在本教學課程中建立的資源,每天收取的費用不到 USD $0.25。當您完成此教學課程,我們建議您刪除資源以免產生不必要的費用。

步驟 1:設定 AWS WAF 傳統版

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

步驟二:建立 Web ACL

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

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

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

  2. 如果這是您第一次使用「 AWS WAF 典型」,請選擇「移至 AWS WAF 典型」,然後選擇「設定 Web ACL」。

    如果您之前使用過 AWS WAF 傳統版,請在導覽窗格中選擇 [Web ACL],然後選擇 [建立 Web ACL]。

  3. Name web ACL (命名 Web ACL) 頁面的 Web ACL name (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。指定於 CIDR 符號的此 IP 地址範圍,包含 IP 地址,從 192.0.2.0 192.0.2.255。(例如,預留 192.0.2.0/24 IP 地址範圍,則沒有任何 web 請求會來自這些 IP 地址)。

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

    如需 CIDR 符號表示法的詳細資訊,請參閱 Wikipedia 文章 無類別網域間路由

  4. 選擇建立

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

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

注意

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

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

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

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

  4. 選擇新增位置

  5. 選擇建立

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

字串比對條件會識別要 C AWS WAF lassic 在要求中搜尋的字串,例如標頭或查詢字串中的指定值。通常,字串包含可列印 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 (字串比對)

    要篩選的請求部分是

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

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

    注意

    如果您選擇 [文] 做為要篩選的要求的部分值, AWS WAF 典型只會檢查前 8192 個位元組 (8 KB),因為只會 CloudFront 轉寄前 8192 個位元組以進行檢查。若要允許或封鎖主體超過 8192 個位元組的要求,您可以建立大小限制條件。(AWS WAF 經典從請求頭獲取主體的長度。) 如需詳細資訊,請參閱 使用容量限制條件

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

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

    符合類型

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

    在此範例中,選擇「完全相符」,表示 C AWS WAF lassic 會檢查網頁要求的標頭值與您指定的值相同。

    轉換

    為了繞過 C AWS WAF lassic,攻擊者在 Web 請求中使用不尋常的格式化,例如通過添加空格或 URL 編碼部分或全部請求。轉換藉由移除空格、URL 解碼、或執行其他操作可以降低攻擊常使用的不常見格式,將 web 請求轉換成更標準的格式。

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

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

    base64 編碼值

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

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

    符合值

    指定您希望 C AWS WAF lassic 在您在篩選要求的部分中指定的 Web 要求部分中搜尋的值。

    在此範例中,輸入BadBot。 AWS WAF 經典將檢查 Web 請求中的值的User-Agent標題BadBot

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

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

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

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

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

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

規則運算式條件是一種字串比對條件類型,類似的是,它會識別您希望 C AWS WAF lassic 在要求中搜尋的字串,例如標頭或查詢字串中的指定值。主要區別在於您使用正則表達式(regex)來指定要 C AWS WAF lassic 搜索的字符串模式。在此步驟中,建立 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 比對)

    要篩選的請求部分是

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

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

    注意

    如果您選擇 [文] 做為要篩選的要求的部分值, AWS WAF 典型只會檢查前 8192 個位元組 (8 KB),因為只會 CloudFront 轉寄前 8192 個位元組以進行檢查。若要允許或封鎖主體超過 8192 個位元組的要求,您可以建立大小限制條件。(AWS WAF 經典從請求頭獲取主體的長度。) 如需詳細資訊,請參閱 使用容量限制條件

    轉換

    為了繞過 C AWS WAF lassic,攻擊者在 Web 請求中使用不尋常的格式化,例如通過添加空格或 URL 編碼部分或全部請求。轉換藉由移除空格、URL 解碼、或執行其他操作可以降低攻擊常使用的不常見格式,將 web 請求轉換成更標準的格式。

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

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

    比對請求的 Regex 模式

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

    新模式集的名稱

    輸入名稱,然後指定要 C AWS WAF lassic 搜尋的正則運算式模式。

    接下來,輸入正則表達式 I [a@] MAB [a@] d 請求。 AWS WAF 經典將檢查 Web 請求中的值的User-Agent標題:

    • 艾馬 BadRequest

    • IamAB@dRequest

    • I @mA BadRequest

    • I@mAB@dRequest

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

  4. 選擇建立

步驟 6:建立 SQL Injection 比對條件

SQL 插入比對條件可識別您希望 C AWS WAF lassic 檢查是否有惡意 SQL 程式碼的 Web 要求部分,例如標頭或查詢字串。攻擊者使用 SQL 查詢來擷取您資料庫的資料。在此步驟中,建立 SQL injection 比對條件。在後續步驟中,您指定是否要允許或封鎖貌似含有惡意 SQL 程式碼的請求。

注意

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

建立 SQL Injection 比對條件
  1. Create conditions (建立條件) 頁面,於 SQL injection match conditions (SQL injection 符合條件),選擇 Create condition (建立條件)

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

    名稱

    輸入名稱。

    要篩選的請求部分是

    選擇您希望 AWS WAF 傳統版檢查是否有惡意 SQL 程式碼的 Web 要求部分。

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

    注意

    如果您選擇 [文] 做為要篩選的要求的部分值, AWS WAF 典型只會檢查前 8192 個位元組 (8 KB),因為只會 CloudFront 轉寄前 8192 個位元組以進行檢查。若要允許或封鎖主體超過 8192 個位元組的要求,您可以建立大小限制條件。(AWS WAF 經典從請求頭獲取主體的長度。) 如需詳細資訊,請參閱 使用容量限制條件

    轉換

    在此範例中,請選擇 URL decode (URL 解碼)

    攻擊者會使用不尋常的格式,例如 URL 編碼,以繞過 AWS WAF 傳統版。URL 解碼選項可在 AWS WAF 傳統檢查請求之前消除 Web 請求中的某些格式。

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

  3. 選擇建立

  4. 選擇下一步

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

AWS WAF 經典包括其他條件,包括以下條件:

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

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

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

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

您可以建立規則來指定要 AWS WAF 傳統在 Web 請求中搜尋的條件。如果您在規則中新增多個條件,Web 要求必須符合 C AWS WAF lassic 規則中的所有條件,才能根據該規則允許或封鎖要求。

注意

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

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

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

    名稱

    輸入名稱。

    CloudWatch 量度名稱

    輸入「 AWS WAF 典型」將建立並與規則產生關聯的 CloudWatch 測量結果名稱。名稱只能包含英數字元 (A-Z、a-z、0-9)。不能含有空格。

    規則類型

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

    速率限制

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

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

    • 根據 Web 要求是否符合條件中的設定,選擇您要 C AWS WAF lassic 允許或封鎖要求。

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

    • 選擇您想新增至規則的條件類型:IP 比對設定條件、字串比對設定條件、或是 SQL injection 比對設定條件。

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

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

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

  4. 選擇新增條件

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

    • When a request does (當請求有)

    • 源於的地理位置

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

  6. 選擇新增其他條件

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

    • When a request does (當請求有)

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

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

  8. 選擇新增條件

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

    • When a request does (當請求有)

    • 至少符合 SQL injection 比對條件裡的一項篩選條件

    • 選擇您的 SQL injection 比對條件。

  10. 選擇新增條件

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

    • When a request does (當請求有)

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

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

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

  13. 選擇建立

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

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

步驟 9:新增規則至 Web ACL

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

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

  • Web ACL 的預設動作。這是您希望 C AWS WAF lassic 對符合規則中所有條件的 Web 請求採取的操作:允許或阻止請求。

AWS WAF 傳統版開始封鎖符合下列所有條件的 CloudFront 網頁要求 (以及您可能已新增的任何其他條件):

  • User-Agent 標頭的值為 BadBot

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

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

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

  • 請求貌似有包含惡意 SQL 的查詢字串。

AWS WAF 經典 CloudFront 允許響應不滿足所有這三個條件的任何請求。

步驟 10:清理您的資源

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

注意

AWS 一般而言,對於您在本教學課程中建立的資源,每天收取的費用不到 USD $0.25。當您完成時,我們建議您刪除資源以免產生不必要的費用。

若要刪除 AWS WAF 傳統收費的物件
  1. 取消 Web ACL 與 CloudFront 發行版的關聯:

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

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

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

    3. 在右窗格的 [規則] 索引標籤上,移至使用此 Web ACL 的AWS 資源區段。對於與 Web ACL 相關聯的 CloudFront 分佈,請在「類型」欄中選擇 x

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

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

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

    3. 選擇編輯規則

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

    5. 選擇更新

  3. 從您的 Web ACL 移除規則,以及刪除 Web ACL:

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

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

    3. 規則標籤上,選擇 Edit web ACL (編輯 Web ACL)

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

    5. 選擇 Actions (動作),然後選擇 Delete web ACL (刪除 Web ACL)

  4. 刪除您的規則:

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

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

    3. 選擇刪除

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

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

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

    1. 在「 AWS WAF 典型」主控台的導覽窗格中,選擇「IP 位址」。

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

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

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

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

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

  2. 刪除您的 SQL injection 比對條件的篩選條件,以及刪除 SQL injection 比對條件:

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

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

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

    4. 選擇刪除篩選條件

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

    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. 刪除對話方塊中,再次選擇刪除確認。