设置预配置的 WAF 规则

按照以下说明设置和调整 Google Cloud Armor 预配置的 Web 应用防火墙 (WAF) 规则,以帮助保护您的应用免受攻击。如果您不熟悉预配置的 WAF 规则,请参阅概览

设置预配置的 WAF 规则

本部分提供了预配置 WAF 规则模板,您可以将其复制到 Google Cloud 控制台中,并根据您的用例进行自定义。在每个 gcloud 命令示例中,您都需要配置一个名称为 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

在前面的所有示例中,每个规则都只使用一个表达式。虽然您可以使用 || 逻辑运算符组合表达式,但我们建议您最好为每个规则使用一个表达式,以免超出表达式大小上限。

示例

本部分的示例重点介绍了创建和调整预配置 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

后续步骤