跳至內容

如何清理 AWS WAF 記錄?

2 分的閱讀內容
0

我想要記錄 AWS WAF 中遭到封鎖的請求。不過,我不想要記錄保護套件分析的所有請求。

簡短說明

透過 AWS WAF 日誌篩選,您能篩選已記錄的 Web 請求,僅保留您要分析的資訊。您可以指定檢查後要將 Web 請求寫入日誌,還是從日誌捨棄。這能降低日誌交付與儲存成本,因為 AWS WAF 只發佈您需要的日誌。

若要篩選 AWS WAF 日誌,請先啟用 AWS WAF 記錄

若要清理日誌,請實作欄位遮蔽和日誌篩選。

**欄位遮蔽:**遮蔽您不想保留在日誌中的請求部分。您可以從日誌記錄省略以下欄位: URI 路徑查詢字串單一標頭HTTP 方法。遮蔽後的欄位會在日誌中顯示為 REDACTED

**日誌篩選:**指定篩選條件,以根據規則動作或規則在評估期間產生的標籤,篩選掉日誌項目。若要針對所有含有標籤的請求篩選 AWS WAF 日誌,請納入使用完整限定標籤名稱的所有標籤。使用以下格式:awswaf:account_number:webacl:webacl_name:namespace:label name

**注意:**您使用 AWS 日誌篩選不會產生額外費用。不過,記錄目的地會產生費用。這包括 Amazon CloudWatchAmazon Simple Storage Service (Amazon S3) 儲存貯體Amazon Data Firehose 交付串流

使用 AWS WAF 主控台啟用 AWS WAF 日誌篩選

  1. 開啟 AWS WAF console (AWS WAF 主控台)。
  2. 在「區域」中,選擇您在其中建立防護套件的 AWS 區域。
  3. 在導覽窗格中,選擇 Resources & protection packs (資源和保護套件)。
  4. 在保護套件右側,選取區域名稱旁的圖示,以選擇該保護套件。
  5. 在您選擇的保護套件中,選取 Logging (記錄)。
  6. 選取「記錄」旁的 View and edit (檢視和編輯),以檢視或修改與此保護套件關聯的記錄組態。
  7. Data protection settings (資料保護設定) 下,選擇 active (作用中)。
  8. Scope (範圍) 下,選取 Logging destination only (僅限記錄目的地)。
  9. 選擇目的地類型和 CloudWatch 日誌群組。
  10. Redacted Fields (遮蔽的欄位),選取您要從日誌省略的欄位。
    **注意:**如果您要遮蔽單一標頭欄位,請指定自訂標頭。
  11. Filter conditions (篩選條件),選取 Rule Action on request (請求的規則動作) 或 Request has label (請求具有標籤)。
    Rule Action on request (請求的規則動作),選取 AWS WAF 日誌要依據其篩選的規則動作。例如: Allow、Block、Count、CAPTCHA 或 Challenge。
    Request has label (請求具有標籤),輸入 AWS WAF 在評估請求時新增的標籤
  12. Filter behavior (篩選行為),選擇 Keep in logs (保留在日誌中) 或 Drop from logs (從日誌捨棄)。
  13. 在「保留在日誌中」或「從日誌捨棄」,選取預設記錄行為。
  14. 選擇 Save (儲存)。

使用 AWS Command Line Interface (AWS CLI) 啟用 AWS WAF 日誌篩選

**注意:**如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

  1. 若要取得目前的記錄組態,請執行 get-logging-configuration
    aws wafv2 get-logging-configuration --region region--resource-arn arn:aws:wafv2:region:account_number:regional/webacl/webacl_name/webacl_id > waf.json
    **注意:**將 region 替換為 Web ACL 的 AWS 區域,將 resource-arn 替換為 Web ACL 的 Amazon Resource Name (ARN),並將 webacl_name 替換為 Web ACL 的名稱。
  2. 開啟記錄組態檔,然後新增以下 JSON 篩選器:
    "LoggingFilter": {
        "DefaultBehavior": "string",
        "Filters": [
        {
            "Behavior": "string",
            "Conditions": [
                {
                    "ActionCondition": {
                    "Action": "string"
                    },
                    "LabelNameCondition": {
                    "LabelName": "string"
                    }
                }
            ],
            "Requirement": "string"
        }
    ]
    }
    **注意:**將篩選器和篩選動作替換為您需要的篩選器。
  3. 若要更新記錄組態,請執行 put-logging-configuration
    aws wafv2 put-logging-configuration --region region --cli-input-json file://waf.json
    **注意:**將 region 替換為 Web ACL 的區域。

僅記錄遭封鎖的請求

若要只記錄 AWS WAF 封鎖的請求,請選取以 Rule Action (規則動作) 為基礎的篩選,然後將動作設定為 Block (封鎖)。Block 是 AWS WAF 中的終止動作。AWS WAF 日誌篩選器會檢查 AWS WAF 日誌項目的終止規則動作。如果動作是 Block,AWS WAF 日誌篩選器就會將項目新增至日誌。

記錄來自規則群組的 Count 請求

規則群組中規則的設定方式會決定日誌是否篩選 Count 請求。

**規則群組中規則的動作設定為 Count:**與此規則相符的請求日誌不包含 Count 動作。AWS WAF 日誌會改在 excludedRules 欄位下顯示此規則。在為 Count 篩選 AWS WAF 日誌時,AWS WAF 不會檢查此欄位。這表示 Count 動作的日誌篩選不會篩選這些請求。

**具有非終止動作 Count 的規則,會與 Allow 或 Block 等終止規則動作一起接受檢查:**AWS WAF 日誌會將這些請求納入依 Count 動作篩選的日誌中。

規則群組中規則的動作設定為 Override to Count: 對於這些請求,AWS WAF 日誌會在 nonTerminatingMatchingRules 欄位中包含 Count 動作。AWS WAF 日誌篩選器會檢查此欄位,因此規則會依 Count 動作篩選。

**注意:**EXCLUDED_AS_COUNT 是日誌篩選的有效動作類型。執行 put-logging-configuration 命令來設定此動作。

相關資訊

LoggingFilter

使用更新後的主控台體驗

記錄 AWS WAF 保護套件或 Web ACL 流量

AWS 官方已更新 1 年前