如何建立 AWS WAF 規則來防範 SQLi 和 XSS?

3 分的閱讀內容
0

我想防範 SQL 隱碼攻擊(SQLi)和跨網站指令碼 (XSS)。AWS WAF 提供哪些選項來防範 SQLi 和 XSS 攻擊?

簡短描述

AWS WAF 提供下列防護來防範 SQLi 和 XSS 攻擊:

  • 內建 SQLi 和 XSS 引擎
  • 適用於 SQLi 和 XSS 隱碼攻擊的 AWS 受管規則

若要設定這些防護,請確定您已設定好 AWS WAF,並建立 Web ACL。

**注意:**AWS WAF 在檢查正文、標頭或 Cookie 請求元件時有限制。如需詳細資訊,請參閱檢查請求正文、標題和 Cookie

解決方案

重要事項: 最佳做法是在非生產環境中測試規則,並將「動作」設定為「計數」。使用結合 AWS WAF 取樣請求或 AWS WAF 日誌的 Amazon CloudWatch 指標來評估規則。如果您滿意規則執行您想要的動作,請將「 動作 」變更為「 封鎖 」。

使用內建的 SQLi 和 XSS 引擎

攻擊可能會針對 HTTP 請求的不同部分執行,例如 HTTP 標頭、查詢字串或 URI。請設定 AWS WAF 規則,以針對內建的緩解引擎檢查 HTTP 請求的不同部分。

SQLi 攻擊規則陳述式

建立 SQL 隱碼攻擊規則陳述式以檢查是否有惡意的 SQL 程式碼。若要建立 SQLi 攻擊規則陳述式,請執行下列動作:

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. 區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
    **注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。
  4. 選取您的 Web ACL。
  5. 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取 [ 新增我自己的規則和規則群組 ]。
  6. 名稱中,輸入規則名稱,然後選擇一般規則
  7. 針對 If a request (如果請求),選擇 matches the statement (比對所有陳述式)。
  8. 針對「 檢查 」,選取要根據 SQLi 內建緩和引擎評估的「 請求元件 」。
  9. 針對「 比對類型 」,請從下拉式清單中選取「 包含 SQL 隱碼攻擊 」。
  10. 選擇一項文字轉換
  11. 針對「動作」,選擇「封鎖」。
  12. 選擇 Add Rule (新增規則)。
  13. 選擇 Save (儲存)。

XSS 攻擊規則陳述式

建立跨網站指令碼攻擊規則陳述式,以檢查 Web 請求元件中是否有惡意指令碼。若要建立 XSS 攻擊規則陳述式,請執行下列動作:

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. 區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
    **注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。
  4. 選取您的 Web ACL。
  5. 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取 [ 新增我自己的規則和規則群組 ]。
  6. 名稱中,輸入規則名稱,然後選擇一般規則
  7. 針對 If a request (如果請求),選擇 matches the statement (比對所有陳述式)。
  8. 針對「 檢查 」,選取要根據 XSS 內建緩和引擎評估的「 請求元件 」。
  9. 針對「 比對類型 」,請從下拉式清單中選取「 包含 XSS 隱碼攻擊 」。
  10. 選擇一項文字轉換
  11. 針對「動作」,選擇「封鎖」。
  12. 選擇 Add Rule (新增規則)。
  13. 選擇 Save (儲存)。

針對多個請求組件進行評估的 SQLi 和 XSS 攻擊規則

若要建立評估多個請求元件的攻擊規則,請執行下列動作:

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. 區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
    **注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。
  4. 選取您的 Web ACL。
  5. 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取 [ 新增我自己的規則和規則群組 ]。
  6. 名稱中,輸入規則名稱,然後選擇一般規則
  7. 針對 If a request (如果請求),選擇 matches at least one of the statements (OR) (至少符合其中一個陳述式)。
  8. 針對「 檢查 」,選取要根據 SQLi 或 XSS 內建緩和引擎評估的「 請求元件 」。
  9. 針對「 比對類型 」,請從下拉式清單中選取「 包含 SQLI 隱碼攻擊 」或是「 包含 XSS 隱碼攻擊 」。
  10. 選擇一項文字轉換
  11. 針對每個陳述式重複步驟 8 到 10。選擇「 新增其他陳述式 」以進行其他規則評估。
  12. 針對「動作」,選擇「封鎖」。
  13. 選擇 Add Rule (新增規則)。
  14. 選擇 Save (儲存)。

重要事項:您必須套用正確的文字轉換,規則才能照預期運作。例如,如果您正在檢查 Cookie,請使用以下與 Cookie 相關的轉換:

  • URL 解碼
  • HTML 實體解碼
  • Lowercase (小寫)

使用適用於 SQLi 和 XSS 隱碼攻擊的 AWS 受管規則

使用適用於 AWS WAF 的 AWS 受管規則來防範應用程式漏洞或其他不必要的流量,而不必自行撰寫規則。

注意: 受管規則會受到版本變更和時限影響。如需詳細資訊,請參閱處理受管規則群組版本的最佳實務

使用 SQL 資料庫受管規則群組來防範 SQL 隱碼攻擊。SQL 資料庫受管規則群組 (預設版本 1.1) 有下列規則可提供防護:

  • SQLiExtendedPatterns_QUERYARGUMENTS
  • SQLi_QUERYARGUMENTS
  • SQLi_Body
  • SQLi_COOKIE
  • SQLi_URIPATH

使用核心規則集 (CRS) 受管規則群組 來防範 XSS 隱碼攻擊。核心規則集 (CRS) 受管規則群組 (預設版本 1.3) 有下列規則可提供防護:

  • CrossSiteScripting_COOKIE
  • CrossSiteScripting_QUERYARGUMENTS
  • CrossSiteScripting_BODY
  • CrossSiteScripting_URIPATH

將 AWS 受管規則群組新增至您的網路 ACL

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. 區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
    **注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。
  4. 選取您的 Web ACL。
  5. 選擇「 規則 」,然後選擇「 新增規則 」。從下拉式清單中選取「 新增受管規則群組 」。
  6. 展開 AWS 受管規則群組 區段。
  7. 找到規則群組並開啟「 新增至網頁 ACL 」。
    例如,您可以為用於 SQLi 防護的 SQL 資料庫和用於 XSS 防護的核心規則集開啟「 新增至網頁 ACL 」。
  8. (選擇性)選擇「 編輯 」以檢視及修改規則群組的設定。
  9. 選擇「 新增規則 」。
  10. 選擇 Save (儲存)。

若要在 Web ACL 中編輯現有的 AWS 受管規則群組

  1. 開啟 AWS WAF 主控台
  2. 在導覽窗格的 AWS WAF 下,選擇 Web ACL
  3. 區域中,選擇您在其中建立 Web ACL 的 AWS 區域。
    **注意:**如果您的網路 ACL 是針對 Amazon CloudFront 所設定,請選取全域。
  4. 選取您的 Web ACL。
  5. 選擇「 規則 」,然後選擇「 編輯 」以檢視和修改設定。
    附註:如需編輯設定的其他資訊,請參閱使用受管規則群組
  6. 完成編輯後,請選擇「 儲存 」。

如果您發現 AWS 受管規則群組產生誤判情形,請參閱 AWS WAF 的 AWS 受管規則


AWS 官方
AWS 官方已更新 2 年前