設定預先設定的網路應用程式防火牆規則

按照這些操作說明設定及調整 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_1SIGNATURE_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

後續步驟