按照這些操作說明設定及調整 Google Cloud Armor 預先設定的網頁應用程式防火牆 (WAF) 規則,協助保護應用程式免於遭受攻擊。如果您不熟悉預先設定的 WAF 規則,請參閱總覽。
設定預先設定的 WAF 規則
本節提供預先設定的網路應用程式防火牆規則範本,您可以複製到 Google Cloud 控制台中,並視需要自訂。在每個範例的 Google Cloud CLI 指令中,您會設定名為 POLICY_NAME
且優先順序為 PRIORITY
的安全性政策。
第一個範例會設定規則,規則名稱為 RULE_NAME
,敏感度等級為 SENSITIVITY
,啟用敏感度小於或等於 SENSITIVITY
的所有簽章。如要進一步瞭解規則靈敏度,請參閱「選擇靈敏度等級」。
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY})" \ --action deny-403
第二個範例與第一個範例類似,但會選擇停用規則簽章 SIGNATURE_1
和 SIGNATURE_2
。也就是說,評估 WAF 規則時,系統不會評估這兩個簽章:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': SENSITIVITY, 'opt_out_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \ --action deny-403
第三個範例與第二個範例類似,但您這次是選擇加入兩個規則簽章,而非選擇排除兩個簽章。請注意,只有在將敏感程度設為 0
時,才能選擇加入規則簽章:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('RULE_NAME', {'sensitivity': 0, 'opt_in_rule_ids': ['SIGNATURE_1', 'SIGNATURE_2']})" \ --action deny-403
在上述所有範例中,每條規則只使用一個運算式。雖然您可以使用邏輯 OR (||
) 邏輯運算子合併運算式,但我們建議您每個規則只使用一個運算式,以免超過運算式大小上限。
更新預先設定的 WAF 規則檢查限制
Google Cloud Armor 預先設定的 WAF 規則最多只能檢查要求主體的前 64 KB (8 KB、16 KB、32 KB、48 KB 或 64 KB)。您可以手動設定安全性政策,為預先設定的網路應用程式防火牆規則使用其中一項檢查限制。
下列指令會使用 --request-body-inspection-size
標記,將 POLICY_NAME
政策中所有預先設定的網路應用程式防火牆規則檢查限制設為 8 KB。如要進一步瞭解預先設定的 WAF 規則檢查限制,請參閱「POST 和 PATCH 主體檢查限制」。
gcloud compute security-policies update POLICY_NAME \ --request-body-inspection-size = 8 kB
同樣地,您可以使用 --request-body-inspection-size
旗標,將 POLICY_NAME
政策中所有預先設定的網路應用程式防火牆規則檢查限制設為 16 KB、32 KB、48 KB 或 64 KB。
降低要求主體超出設定檢查限制的風險
在 Google Cloud Armor 安全性政策中評估預先設定的 WAF 規則時,系統會檢查要求主體的前 64 KB (8 KB、16 KB、32 KB、48 KB 或 64 KB),比對 WAF 規則的簽章。
您可以在安全性政策中建立規則,確保未經檢查的內容不會傳送到後端,藉此降低大型要求帶來的風險。舉例來說,您可以建立規則,拒絕要求主體大小超過設定檢查限制 (8 KB,即 8192 個位元組) 的流量。以下指令顯示如何建立這項規則:
gcloud compute security-policies rules create 10 \ --security-policy my-policy \ --expression "int(request.headers['content-length']) > 8192" \ --action deny-403 \ --description "Block requests greater than 8 kB"
同樣地,您也可以建立規則,拒絕要求主體大小超過設定檢查限制 (16 KB、32 KB、48 KB 或 64 KB) 的流量。舉例來說,下列指令說明如何為 64 KB (65536 位元組) 的檢查限制建立這項規則。
gcloud compute security-policies rules create 10 \ --security-policy my-policy \ --expression "int(request.headers['content-length']) > 65536" \ --action deny-403 \ --description "Block requests greater than 64 kB"
範例
本節的範例將著重說明建立及調整預先設定的 WAF 規則時,需要注意的重要事項,包括敏感度等級和簽章例外狀況。在所有 gcloud
範例指令中,您會建立優先順序為 PRIORITY
的安全性政策,並將其命名為 POLICY_NAME
。
在指定機密等級建立規則
在本例中,您會使用 sqli-v33-stable
WAF 規則中的所有簽章,且敏感度等級低於 4。因此,您會在敏感度等級 3 建立規則,其中包含敏感度等級小於或等於 3 的所有簽章:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('sqli-v33-stable', {'sensitivity': 3})" \ --action deny-403
建立規則,選擇不使用一或多個簽名
在這個範例中,您幾乎使用了 xss-v33-stable
WAF 規則中所有敏感度等級 1 和 2 的簽章,但想排除檢查 JavaScript 全域變數的簽章 owasp-crs-v030301-id941370-xss
。因此,您可以在敏感度層級 2 建立規則,並使用 opt_out_rule_ids
引數選擇停用 owasp-crs-v030301-id941370-xss
簽章:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss']})" \ --action deny-403
如要從規則中排除兩或多個簽章,請使用 opt_out_rule_ids
引數提供以半形逗號分隔的簽章清單,如下所示:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 2, 'opt_out_rule_ids': ['owasp-crs-v030301-id941370-xss', 'owasp-crs-v030301-id941380-xss']})" \ --action deny-403
建立規則,選擇加入一或多個簽名
本範例僅使用 xss-v33-stable
WAF 規則中的簽章 owasp-crs-v030001-id941150-xss
。這項簽章會檢查禁止使用的 HTML 屬性,敏感度為第 2 級。因此,您可以在感應度層級 0 建立規則,並使用 opt_in_rule_ids
引數選擇加入 owasp-crs-v030001-id941150-xss
簽章。請注意,只有在將敏感程度設為 0
時,才能選擇加入規則簽章:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss']})" \ --action deny-403
如要納入規則中的兩或多個簽章,請使用 opt_in_rule_ids
引數提供以半形逗號分隔的簽章清單,如下所示:
主控台
選取「進階模式」,然後在「比對」欄位中使用下列範例運算式:
evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})
gcloud
gcloud compute security-policies rules create PRIORITY \ --security-policy POLICY_NAME \ --expression "evaluatePreconfiguredWaf('xss-v33-stable', {'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030301-id941150-xss', 'owasp-crs-v030301-id941320-xss']})" \ --action deny-403
後續步驟
- 如要進一步瞭解如何調整 WAF 規則,請參閱「調整 Google Cloud Armor 預先設定的 WAF 規則」一文。