如何允許來自 AWS WAF 機器人控制受管規則群組封鎖的機器人的請求?

上次更新日期:2022 年 6 月 28 日

我想要允許來自 AWS WAF 機器人控制規則群組封鎖的機器人的請求。如何允許來自合法機器人的請求?

簡短描述

若要允許來自 AWS WAF 機器人控制規則群組封鎖之機器人的請求,請執行以下操作:

  1. 透過查詢 AWS WAF 日誌來識別封鎖 AWS WAF 日誌請求的機器人控制規則。
  2. 設定封鎖要求計數的機器人控制規則。
  3. 建立自訂規則以符合排除規則的標籤,並封鎖您要允許的機器人以外的所有相符請求。
  4. 驗證是否允許機器人流量。

機器人控制受管規則群組會使用 AWS WAF 的 IP 地址驗證機器人。如果您驗證了通過代理或 CDN 路由的機器人,該機器人在轉發請求時無法保留客戶端 IP 地址,則必須特別允許該機器人。

解決方式

識別封鎖要求的機器人控制規則

分析 AWS WAF 日誌以識別封鎖所需機器人請求的機器人控制規則。

1.    若要使用 Amazon Athena 分析 AWS WAF 日誌,請使用分區投影在 Athena 為 AWS WAF 日誌建立表格。如需指示,請參閱使用分區投影在 Athena 中為 AWS WAF 日誌建立表格

2.    執行下列 Athena 查詢,以尋找機器人控制規則群組封鎖之要求的詳細資料:

注意:用您的表名替換 waf_log。時間間隔 `time > now() - interval '3' day` 可以用您指定的時間間隔替換。
WITH waf_data AS
    (SELECT from_unixtime(waf.timestamp / 1000) as time,
    waf.terminatingRuleId,
    waf.action,
    waf.httprequest.clientip as clientip,
    waf.httprequest.requestid as requestid,
    waf.httprequest.country as country,
    rulegroup.terminatingrule.ruleid as matchedRule,
labels as Labels,
         map_agg(LOWER(f.name),
         f.value) AS kv
    FROM waf_logs waf,
    UNNEST(waf.httprequest.headers)
AS t(f), UNNEST(waf.rulegrouplist) AS t(rulegroup)
    WHERE rulegroup.terminatingrule.ruleid IS NOT NULL
    GROUP BY 1, 2, 3, 4, 5, 6, 7,8)
SELECT waf_data.time,
       waf_data.action,
       waf_data.terminatingRuleId,
       waf_data.matchedRule,
       waf_data.kv['user-agent'] as UserAgent,
waf_data.clientip,
       waf_data.country,
       waf_data.Labels
FROM waf_data
Where terminatingRuleId='AWS-AWSManagedRulesBotControlRuleSet' and time > now() - interval '3' day
ORDER BY time
DESC

如需可篩選指定時間範圍內記錄的 Amazon Athena 查詢範例,請參閱 AWS WAF 日誌查詢範例。

3.    (選擇性) 若要進一步縮小搜尋範圍,請使用 Where 子句中的 AND 運算子在 UserAgent 上新增其他篩選器。如需 WAF 日誌檔中欄位的說明,請參閱日誌欄位。例如,您可以添加過濾器 kv ['用戶客服人員'] (如「Postman%」) 以縮小結果範圍。

4.    檢查e matchedRule 列以識別阻止請求的規則。
注意:
如需機器人控制規則的其他資訊,請參閱 AWS WAF 機器人控制規則群組

設定封鎖要求計數的機器人控制規則

編輯「機器人控制規則」群組,以設定封鎖要求計數的規則。若要將規則設定為計數,請參閱將規則動作設定為在規則群組中計數。這允許規則將其標籤應用於匹配的請求,並允許未被阻止的機器人。

建立自訂規則以符合排除規則的標籤,並封鎖所有相符要求,但您要允許的機器人除外

根據封鎖要求的規則標籤,將標籤比對規則新增至 Web ACL。標籤比對規則必須位於「機器人控制」受管理規則群組之後。如需有關機器人控制受管規則群組標籤的資訊,請參閱 AWS WAF 機器人控制規則群組

如果具有類別標籤的規則封鎖要求

設定您的自訂規則,以允許特定的封鎖機器人
重要事項:
將規則設定中的機器人類別和機器人名稱標籤取代為 Athena 查詢結果中的機器人類別和機器人名稱標籤。

對於所有其他規則標籤

建立自訂規則以針對封鎖的用戶客服人員代理程式建立例外
重要:將規則設定中搜尋字串欄位中的機器人訊號標籤和 UserAgent 值取代為標籤中的機器人訊號標籤 UserAgent 值以及 Athena 查詢結果的 使用者代理欄

驗證是否允許機器人流量

再次檢查 AWS WAF 日誌以確認機器人現在已被允許。如果機器人仍然遭到封鎖,請重複上述程序以識別封鎖要求的其他規則。


此文章是否有幫助?


您是否需要帳單或技術支援?