推出 的新主控台體驗 AWS WAF
您現在可以使用更新後的體驗,在主控台的任何位置存取 AWS WAF 功能。如需詳細資訊,請參閱使用更新的主控台體驗。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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 請求。
指定預設動作 (封鎖或允許)。這是 AWS WAF Classic 在 Web 請求不符合您的任何規則時所採取的動作。
選擇您希望 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,請立即執行此操作。
步驟二:建立 Web ACL
AWS WAF Classic 主控台會引導您完成設定 AWS WAF Classic 的程序,以根據您指定的條件封鎖或允許 Web 請求,例如請求來源的 IP 地址或請求中的值。在此步驟中,建立Web ACL。
建立 Web ACL
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/wafv2/
開啟 AWS WAF 主控台。 如果您在導覽窗格中看到切換到 AWS WAF 傳統,請選取它。
-
如果這是您第一次使用 AWS WAF Classic,請選擇移至 AWS WAF Classic,然後選擇設定 Web ACL。
如果您之前已使用 AWS WAF 過 Classic,請在導覽窗格中選擇 Web ACLs,然後選擇建立 Web ACL。
在 Name web ACL (命名 Web ACL) 頁面的 Web ACL name (Web ACL 名稱) 中輸入名稱。
注意
建立 Web ACL 後無法修改名稱。
針對 CloudWatch 指標名稱,輸入名稱。名稱只能包含英數字元 (A-Z、a-z、0-9)。不能含有空格。
注意
建立 Web ACL 後無法修改名稱。
-
對於 區域,選擇一個區域。如果您要將此 Web ACL 與 CloudFront 分佈建立關聯,請選擇全域 (CloudFront)。
對於要關聯的AWS 資源,選擇您想要將此 Web ACL 關聯的資源,然後選擇下一步。
步驟 3:建立 IP 比對條件
IP 比對條件可指定發出請求的 IP 地址或 IP 地址範圍。在此步驟中,建立 IP 比對條件。在後續步驟中,您指定是否要允許或封鎖來自指定 IP 地址的請求。
注意
如需 IP 比對條件的詳細資訊,請參閱使用 IP 比對條件。
建立 IP 比對條件
-
在建立條件頁面,於IP 符合條件,選擇建立條件。
-
在 Create IP match condition (建立 IP 比對條件) 對話方塊中,於 Name (名稱),輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。
-
針對 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 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 文章 無類別網域間路由
。 -
選擇 Create (建立)。
步驟 4:建立地理比對條件
地理比對條件指定國家/地區為請求的發源地。在此步驟中,建立地理比對條件。在後續步驟中,您指定是否要允許或封鎖來自指定國家/地區的請求。
注意
如需地理比對條件的詳細資訊,請參閱使用地理比對條件。
建立地理比對條件
-
在建立條件頁面,於地理符合條件,選擇建立條件。
-
在 Create geo match condition (建立地理比對條件) 對話方塊中,於 Name (名稱),輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。
-
選擇位置類型和國家/地區。目前, Location type (位置類型) 只能是 Country (國家/地區)。
-
選擇新增位置。
-
選擇 Create (建立)。
步驟 5:建立字串比對條件
字串比對條件可識別您希望 AWS WAF Classic 在請求中搜尋的字串,例如標頭或查詢字串中的指定值。通常,字串包含可列印 ASCII 字元,但您可以指定十六字元範圍 0x00 到 0xFF 的任何字元 (小數點 0 到 255)。在此步驟中,建立字串比對條件。在後續步驟中,您指定是否要允許或封鎖含有指定字串的請求。
注意
如需字串比對條件的詳細資訊,請參閱使用字串比對條件。
建立字串比對條件
在 Create conditions (建立條件) 頁面,於 String and regex match conditions (字串和 regex 符合條件) 選擇 Create condition (建立條件)。
在 Create string match condition (建立字串比對條件) 對話方塊中,輸入以下的值:
- 名稱
輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。
- Type
選擇 String match (字串比對)。
- 要篩選的請求部分是
選擇您希望 AWS WAF Classic 檢查指定字串的 Web 請求部分。
在此範例中,請選擇 Header (標頭)。
注意
如果您選擇內文以取得要篩選之請求部分的值, 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 個字元。
如果您希望 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 比對條件
在 Create conditions (建立條件) 頁面,於 String match and regex conditions (字串符合和 regex 條件) 選擇 Create condition (建立條件)。
在 Create string match condition (建立字串比對條件) 對話方塊中,輸入以下的值:
- 名稱
輸入名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。
- Type
選擇 Regex match (Regex 比對)。
- 要篩選的請求部分是
選擇您希望 AWS WAF Classic 檢查指定字串的 Web 請求部分。
在此範例中,請選擇 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
標頭是否有值:IamABadRequest
IamAB@dRequest
I@mABadRequest
I@mAB@dRequest
選擇 Create pattern set and add filter (建立模式集並新增篩選條件)。
選擇 Create (建立)。
步驟 6:建立 SQL Injection 比對條件
SQL 注入比對條件可識別 Web 請求的部分,例如您要 AWS WAF Classic 檢查惡意 SQL 程式碼的標頭或查詢字串。攻擊者使用 SQL 查詢來擷取您資料庫的資料。在此步驟中,建立 SQL injection 比對條件。在後續步驟中,您指定是否要允許或封鎖貌似含有惡意 SQL 程式碼的請求。
注意
如需字串比對條件的詳細資訊,請參閱使用 SQL Injection 比對條件。
建立 SQL Injection 比對條件
在 Create conditions (建立條件) 頁面,於 SQL injection match conditions (SQL injection 符合條件),選擇 Create condition (建立條件)。
在 Create SQL injection match condition (建立 SQL injection 比對條件) 對話方塊中,輸入以下的值:
- 名稱
輸入名稱。
- 要篩選的請求部分是
選擇您希望 AWS WAF Classic 檢查惡意 SQL 程式碼的 Web 請求部分。
在此範例中,選擇 Query string (查詢字串)。
注意
如果您選擇內文以取得要篩選之請求部分的值, AWS WAF Classic 只會檢查前 8192 個位元組 (8 KB),因為 CloudFront 只會轉送前 8192 個位元組以進行檢查。若要允許或封鎖內文超過 8192 位元組的請求,您可以建立大小限制條件。(AWS WAF Classic 會從請求標頭取得內文的長度。) 如需詳細資訊,請參閱使用容量限制條件。
- 轉換
在此範例中,請選擇 URL decode (URL 解碼)。
攻擊者會使用不尋常的格式,例如 URL 編碼,以嘗試繞過 AWS WAF Classic。在 AWS WAF Classic 檢查請求之前,URL 解碼選項會消除 Web 請求中的部分格式。
您只能指定一種文字轉換類型。
選擇 Create (建立)。
選擇 Next (下一步)。
步驟 7:(選用) 建立其他條件
AWS WAF Classic 包含其他條件,包括下列項目:
大小限制條件 – 識別 Web 請求的部分,例如您要 AWS WAF Classic 檢查長度的標頭或查詢字串。如需詳細資訊,請參閱使用容量限制條件。
跨網站指令碼比對條件 – 識別 AWS WAF 您要檢查惡意指令碼的 Web 請求部分,例如標頭或查詢字串。如需詳細資訊,請參閱使用跨網站指令碼比對條件。
您可以現在選擇性地建立這些條件,或者您可以略過此步驟,前往 步驟 8:建立規則並新增條件。
步驟 8:建立規則並新增條件
您可以建立規則來指定您希望 AWS WAF Classic 在 Web 請求中搜尋的條件。如果您將多個條件新增至規則,Web 請求必須符合 AWS WAF Classic 規則中的所有條件,才能根據該規則允許或封鎖請求。
注意
如需規則的詳細資訊,請參閱使用規則。
建立規則並新增條件
在 Create rules (建立規則) 頁面上,選擇 Create rules (建立規則)。
在 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 地址的最大請求數量。
-
對於您希望新增到規則的第一個條件,請指定以下設定:
-
根據 Web 請求是否符合條件中的設定,選擇是否要讓 AWS WAF Classic 允許或封鎖請求。
在此範例中,請選擇 does (有符合)。
-
選擇您想新增至規則的條件類型:IP 比對設定條件、字串比對設定條件、或是 SQL injection 比對設定條件。
在此範例中,選擇 originate from IP addresses in (源於的 IP 地址)。
-
選擇要新增到規則的條件。
在此範例中,選擇您在前一任務中所建立的 IP 比對條件。
-
選擇新增條件。
新增您之前建立的地理比對條件。指定下列值:
When a request does (當請求有)
源於的地理位置
選擇您的地裡比對條件。
選擇新增其他條件。
新增您之前建立的字串比對條件。指定下列值:
When a request does (當請求有)
至少符合字串比對條件裡的一項篩選條件
選擇您的字串比對條件。
選擇新增條件。
新增您之前建立的 SQL injection 比對條件。指定下列值:
When a request does (當請求有)
至少符合 SQL injection 比對條件裡的一項篩選條件
選擇您的 SQL injection 比對條件。
選擇新增條件。
新增您之前建立的容量限制條件。指定下列值:
When a request does (當請求有)
至少符合容量限制條件裡的一項篩選條件
選擇您的容量限制條件。
如果您建立任何其他的條件,例如 regex 條件,以相同方式新增。
選擇 Create (建立)。
對於 Default action (預設動作),選擇 Allow all requests that don't match any rules (允許不符合任何規則的請求)。
選擇 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 收取的物件
取消 Web ACL 與 CloudFront 分佈的關聯:
登入 AWS Management Console ,並在 https://https://console.aws.amazon.com/wafv2/
開啟 AWS WAF 主控台。 如果您在導覽窗格中看到切換至 AWS WAF Classic,請選取它。
選擇您要刪除的 Web ACL 名稱。這會開啟頁面,並在右側窗格中顯示 Web ACL 的詳細資訊。
-
在右窗格中的規則索引標籤上,AWS 使用此 Web ACL 區段前往資源。對於您建立 Web ACL 關聯的 CloudFront 分佈,請在類型欄中選擇 x。
從您的規則移除條件:
在導覽窗格中,選擇規則。
選擇在本教學課程中建立的規則。
選擇編輯規則。
選擇每個條件標題右邊的 x。
選擇更新。
從您的 Web ACL 移除規則,以及刪除 Web ACL:
在導覽窗格中,選擇 Web ACL。
選擇您在教學課程中建立的 Web ACL 名稱。這會開啟頁面,並在右側窗格中顯示 Web ACL 的詳細資訊。
在規則標籤上,選擇 Edit web ACL (編輯 Web ACL)。
選擇每個規則標題右邊的 x。
選擇 Actions (動作),然後選擇 Delete web ACL (刪除 Web ACL)。
刪除您的規則:
在導覽窗格中,選擇規則。
選擇在本教學課程中建立的規則。
選擇 刪除 。
在刪除對話方塊中,再次選擇刪除確認。
AWS WAF Classic 不會針對條件收費,但如果您想要完成清除,請執行下列程序,從條件中移除篩選條件並刪除條件。
刪除篩選條件和條件
刪除您的 IP 比對條件的 IP 地址範圍,以及刪除 IP 比對條件:
在 AWS WAF Classic 主控台的導覽窗格中,選擇 IP 地址。
選擇在本教學課程中建立的 IP 比對條件。
選取您新增的 IP 地址範圍的核取方塊。
選擇刪除 IP 地址或範圍。
在 IP match conditions (IP 比對條件) 窗格中,選擇刪除。
在刪除對話方塊中,再次選擇刪除確認。
刪除您的 SQL injection 比對條件的篩選條件,以及刪除 SQL injection 比對條件:
在導覽窗格中,選擇 SQL injection。
選擇在本教學課程中建立的 SQL injection 比對條件。
選取您新增篩的選條件的核取方塊。
選擇刪除篩選條件。
在 SQL injection match conditions (SQL injection 比對條件) 窗格中,選擇刪除。
在刪除對話方塊中,再次選擇刪除確認。
刪除您的字串比對條件的篩選條件,以及刪除字串比對條件:
在導覽窗格中選擇字串和 regex 比對。
選擇在本教學課程中建立的字串比對條件。
選取您新增篩的選條件的核取方塊。
選擇刪除篩選條件。
在 String match conditions (字串比對條件) 窗格中,選擇刪除。
在刪除對話方塊中,再次選擇刪除確認。
如果您有建立的話,請刪除您的 regex 比對條件的篩選條件,以及刪除 regex 比對條件:
在導覽窗格中選擇字串和 regex 比對。
選擇在本教學課程中建立的 regex 比對條件。
選取您新增篩的選條件的核取方塊。
選擇刪除篩選條件。
在 Regex match conditions (Regex 比對條件)窗格中,選擇刪除。
在刪除對話方塊中,再次選擇刪除確認。
刪除您的容量限制條件的篩選條件,以及刪除容量限制條件:
在導覽窗格中,選擇容量限制。
選擇在本教學課程中建立的容量限制條件。
選取您新增篩的選條件的核取方塊。
選擇刪除篩選條件。
在 Size constraint conditions (容量限制條件) 窗格中,選擇刪除。
在刪除對話方塊中,再次選擇刪除確認。