使用 Regex 比對條件 - AWS WAF、 AWS Firewall Manager、和 AWS Shield Advanced

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

使用 Regex 比對條件

注意

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

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

如果您想根據請求裡出現符合規則運算式 (regex) 模式的字串,允許或封鎖 web 請求,請建立一個或多個 Regex 比對條件。正則表達式匹配條件是一種字符串匹配條件的類型,用於標識要搜索的模式以及您希望 C AWS WAF lassic 檢查模式的 Web 請求的一部分,例如指定的標頭或查詢字符串。稍後,當您建立 Web ACL,您需要指定是否要允許或封鎖含有這些模式的請求。

建立 Regex 比對條件

當您建立 Regex 比對條件,您需指定模式集以識別您想搜尋的字串 (使用規則運算式)。然後,您可以將這些模式集添加到過濾器中,該過濾器指定您希望 C AWS WAF lassic 檢查該模式集的 Web 請求部分,例如 URI 或查詢字符串。

您可以將多個規則運算式增至單一模式集中。若您這麼做,這些運算式會與 OR 結合。如此,如果請求符合清單中的任一個運算式,web 請求將比對模式集。

當您將正則表達式匹配條件添加到規則時,也可以配置 C AWS WAF lassic 以允許或阻止與條件中的值匹配的 Web 請求。

AWS WAF 經典支持大多數標準的 Perl 兼容正則表達式(PCRE)。然而,目前不支援下列各項:

  • Backreferences 和擷取子運算式

  • 任意零寬度宣告

  • 子程式參考和遞迴模式

  • 條件式模式

  • 恢復控制動詞

  • \C 單一位元組指令

  • \R 換行比對指令

  • \K 開頭比對重設指令

  • 圖說文字和內嵌的程式碼

  • 原子分組和所佔有的量詞

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

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

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

  3. 選擇 Create condition (建立條件)

  4. 指定適用的篩選條件設定。如需詳細資訊,請參閱 您在建立或編輯 RegEx 符合條件時指定的值

  5. 選擇建立模式集和新增篩選條件 (如果您建立了新的模式集) 或新增篩選條件,如果您是使用現有的模式。

  6. 選擇建立

您在建立或編輯 RegEx 符合條件時指定的值

在建立或更新 Regex 比對條件時,請指定以下的值:

名稱

輸入 Regex 比對條件的名稱。名稱僅能含有英數字元 (A-Z、a-z、0-9) 或以下特殊字元:_-!"#`+*},./。條件的名稱在建立後無法變更。

Type

選擇 Regex match (Regex 比對)

要篩選的請求部分是

選擇您希望 C AWS WAF lassic 檢查您在值中指定的模式以匹配的每個 Web 請求的部分:

標頭

指定的請求標頭,例如,User-AgentReferer 標頭。如果您選擇標頭,請在標頭欄位裡指定標頭的名稱。

HTTP 方法

HTTP 方法,指出要求來源執行的作業類型。CloudFront 支援下列方法:DELETEGETHEADOPTIONSPATCHPOST、和PUT

查詢字串

出現在 ? 字元後的 URL 部分 (如果有)。

URI

要求的 URI 路徑,可識別資源,例如/images/daily-ad.jpg。這不包括 URI 的查詢字串或片段元件。如需詳細資訊,請參閱統一資源識別元 (URI):一般語法

除非指定了轉換,否則 URI 不會被標準化,並且會像從客戶端 AWS 接收它作為請求的一部分一樣進行檢查。Transformation (轉換) 將如指定重新格式化 URI。

Body

部分的請求內容含有您想傳送至您的 web 伺服器做為 HTTP 請求內文的額外資料,您要傳送到您的 Web 伺服器的 HTTP 請求的內文,例如資料表單。

注意

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

單一查詢參數 (僅數值)

任何您已定義做為部分查詢字串的參數。例如,如果網址是「www.xyz.com」UserName = ABC& SalesRegion = 西雅圖」,您可以將過濾器添加到或參數中。UserNameSalesRegion

如果重複的參數顯示在查詢字串上,則數值評估則為「OR」。也就是說,將會觸發符合的值。例如,在網址「www.xyz.com? SalesRegion =boston& = SalesRegion 西雅圖」中,匹配「要匹配的」中的「波士頓」或「西雅圖」模式將觸發匹配。

如果您選擇單一查詢參數 (僅數值),您也可以指定查詢參數名稱。這是您要檢查的查詢字串中的參數,例如UserNameSalesRegion查詢參數名稱的長度上限為 30 個字元。查詢參數名稱 不區分大小寫。例如,您指定UserName查詢參數名稱,這將匹配的所有變體 UserName,例如用戶名和用戶名

所有的查詢參數 (僅數值)

類似於 S ingle 查詢參數 (僅限值),而不是檢查單一參數的值,C AWS WAF lassic 會檢查查詢字串內所有參數的值,以找出要比對的「值」中指定的模式。例如,在網址「www.xyz.com? UserName =abc& = SalesRegion 西雅圖」中,要比對的值中的一個模式,該模式符合或中的值將觸發匹配。UserNameSalesRegion

標頭 (只有當「部分請求的篩選條件」為「標頭」時)

如果您從要篩選清單的要求部分中選擇 [標],請從通用標頭清單中選擇標頭,或輸入您希望 C AWS WAF lassic 檢查的標頭名稱。

轉換

轉換會在 AWS WAF 傳統檢查要求之前重新格式化 Web 要求。這消除了攻擊者在 Web 請求中使用的一些不尋常的格式,以便繞過 C AWS WAF lassic。

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

轉換可執行下列操作:

AWS WAF Classic 在檢查 Val ue 中是否有要匹配的字符串之前,不會對 Web 請求執行任何文本轉換。

轉換成小寫

AWS WAF 經典將大寫字母(A-Z)轉換為小寫(a-z)。

HTML 解碼

AWS WAF 經典用未編碼字符替換 HTML 編碼的字符:

  • " 換成 &

  • 以非中斷空格取代  

  • &lt; 換成 <

  • &gt; 換成 >

  • 將表示為十六進位格式的字元 &#xhhhh; 以對應字元取代

  • 將表示為十進位格式的字元 &#nnnn; 以對應字元取代

標準化空格

AWS WAF 經典用空格字符(十進制 32)替換以下字符:

  • \f、跳頁、小數 12

  • \t、標籤、小數 9

  • \n、換行,小數 10

  • \r、換行、小數 13

  • \v、垂直標籤,小數 11

  • 非中斷空格,小數 160

此外,此選項將數個空格取代為一個空格。

簡化命令列

若您將擔心攻擊者插入作業命令列命令,或使用不尋常的格式偽裝某些或所有命令,請使用此選項執行下列轉換:

  • 刪除以下字元:\ " ' ^

  • 刪除以下字元前的空格:/ (

  • 將以下字元取代為空格:, ;

  • 將數個空格取代為一個空格

  • 將所有大寫字母 (A-Z) 轉換成小寫 (a-z)

URL 解碼

解碼 URL 編碼請求。

比對請求的 Regex 模式

您可以選擇現有的模式集,或建立新的。如果您建立新的模式集指定以下:

新模式集的名稱

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

如果您新增多個規則運算式至模式集,這些運算式會與 OR 結合。如此,如果請求符合清單中的任一個運算式,web 請求將比對模式集。

符合值 的長度上限為 70 個字元。

編輯 Regex 比對條件

您可以使用下列變更現有的 regex 比對條件:

  • 刪除現有模式集裡的模式

  • 新增模式至現有的模式集

  • 從現有的 Regex 比對條件刪除篩選條件

  • 將過濾器添加到現有的正則表達式匹配條件(在正則表達式匹配條件中只能有一個過濾器。 因此,若要新增篩選器,您必須先刪除現有的篩選器。)

  • 刪除現有的 Regex 比對條件

注意

您不能從現有篩選條件新增或刪除模式集。您必須編輯模式集、或刪除篩選條件並建立新的篩選條件與其新的模式集。

刪除現有模式集裡的模式
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

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

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

  3. 選擇檢視 Regex 模式集

  4. 選擇您要編輯的模式集名稱。

  5. 選擇編輯

  6. 在您要刪除的模式旁,選擇 X

  7. 選擇儲存

新增模式至現有的模式集
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

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

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

  3. 選擇檢視 Regex 模式集

  4. 選擇要編輯的模式集名稱。

  5. 選擇編輯

  6. 輸入新的 Regex 模式。

  7. 選擇新的模式旁的 +

  8. 選擇儲存

從現有的 Regex 比對條件刪除篩選條件
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

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

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

  3. 選擇您要刪除的篩選條件的比對條件名稱。

  4. 選擇您要刪除篩選條件旁的方塊。

  5. 選擇刪除篩選條件

刪除 Regex 比對條件
  1. 請登入 AWS Management Console 並開啟 AWS WAF 主控台,網址為 https://console.aws.amazon.com/wafv2/

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

  2. 從 Regex 比對條件刪除篩選條件。請參閱 從現有的 Regex 比對條件刪除篩選條件 以取得執行此動作的指示。)

  3. 從使用該 Regex 比對條件的規則中移除該條件:

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

    2. 選擇要刪除使用該 Regex 比對條件的規則名稱。

    3. 在右窗格中選擇編輯規則

    4. 在您要刪除的條件旁,選擇 X

    5. 選擇更新

    6. 對所有剩下要刪除使用該 Regex 比對條件的規則,重複步驟。

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

  5. 選擇您要刪除條件旁的按鈕。

  6. 選擇刪除

從現有的 Regex 比對條件新增或變更篩選條件

Regex 比對條件只能擁有一個篩選條件。如果您想新增或變更篩選條件,您必須先刪除現有的篩選條件。

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

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

  2. 從您想變更的 Regex 條件刪除篩選條件:請參閱 從現有的 Regex 比對條件刪除篩選條件 以取得執行此動作的指示。)

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

  4. 選擇您要變更的條件名稱。

  5. 選擇新增篩選條件

  6. 為新的篩選條件輸入適當的值,然後選擇新增