Configurar regras WAF pré-configuradas

Use estas instruções para configurar e ajustar as regras pré-configuradas do firewall de aplicativos da Web (WAF) do Google Cloud Armor e proteger seu aplicativo contra ataques. Se você não conhece as regras WAF pré-configuradas, consulte a visão geral.

Configurar uma regra WAF pré-configurada

Esta seção fornece modelos de regras WAF pré-configuradas que podem ser copiadas para o console Google Cloud e personalizadas para se adequar ao seu caso de uso. Em cada exemplo de comando da Google Cloud CLI, você configura uma política de segurança com o nome POLICY_NAME e a prioridade PRIORITY.

O primeiro exemplo configura uma regra com o nome RULE_NAME e um nível de sensibilidade SENSITIVITY, que ativa todas as assinaturas com sensibilidade menor ou igual a SENSITIVITY. Para mais informações sobre a sensibilidade das regras, consulte Escolher um nível de sensibilidade.

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar
  • RULE_NAME: o nome da regra do WAF que você quer configurar
  • SENSITIVITY: o nível de sensibilidade da regra do WAF

O segundo exemplo é semelhante ao primeiro, mas desativa as assinaturas de regra SIGNATURE_1 e SIGNATURE_2. Isso significa que essas duas assinaturas não são avaliadas quando a regra do WAF é avaliada:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar
  • RULE_NAME: o nome da regra do WAF que você quer configurar
  • SENSITIVITY: o nível de sensibilidade da regra do WAF
  • SIGNATURE_1: o nome da assinatura do WAF que você quer desativar
  • SIGNATURE_2: o nome da assinatura do WAF que você quer desativar.

O terceiro exemplo é semelhante ao segundo, mas em vez de desativar duas assinaturas, você ativa duas assinaturas de regra. Só é possível ativar as assinaturas de regras quando o nível de sensibilidade é definido como 0:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar
  • RULE_NAME: o nome da regra do WAF que você quer configurar
  • SIGNATURE_1: o nome da assinatura do WAF que você quer desativar
  • SIGNATURE_2: o nome da assinatura do WAF que você quer desativar

Em todos os exemplos anteriores, você usou apenas uma expressão por regra. Embora seja possível combinar expressões usando o operador lógico OR (||), recomendamos usar apenas uma expressão por regra como prática recomendada para evitar exceder o tamanho máximo da expressão.

Atualizar o limite de inspeção para regras WAF pré-configuradas

As regras WAF pré-configuradas do Google Cloud Armor só podem inspecionar até os primeiros 64 kB (8 kB, 16 kB, 32 kB, 48 kB ou 64 kB) de um corpo de solicitação. Você pode configurar manualmente uma política de segurança para usar um desses limites de inspeção nas suas regras de WAF pré-configuradas.

O comando a seguir define o limite de inspeção de todas as regras WAF pré-configuradas disponíveis na política POLICY_NAME como 8 kB usando a flag --request-body-inspection-size. Para mais informações sobre os limites de inspeção das regras WAF pré-configuradas, consulte Limitação de inspeção do corpo de POST e PATCH.

gcloud compute security-policies update POLICY_NAME \
    --request-body-inspection-size = 8 kB

Substitua POLICY_NAME pelo nome da política de segurança que você quer configurar.

Da mesma forma, é possível usar a flag --request-body-inspection-size para definir o limite de inspeção de todas as regras WAF pré-configuradas disponíveis na política POLICY_NAME como 16 kB, 32 kB, 48 kB ou 64 kB.

Reduzir o risco no corpo da solicitação que excede o limite de inspeção configurado

Quando uma regra do WAF pré-configurada é avaliada em uma política de segurança do Google Cloud Armor, até os primeiros 64 KB (8 KB, 16 KB, 32 KB, 48 KB ou 64 KB) do corpo de uma solicitação são inspecionados para correspondências de assinatura nas regras do WAF.

É possível reduzir o risco de solicitações maiores ao criar uma regra nas políticas de segurança para garantir que nenhum conteúdo não inspecionado chegue aos back-ends. Por exemplo, crie uma regra para negar o tráfego que excede o limite de inspeção configurado de 8 kB (8192 bytes) no tamanho do corpo da solicitação. O comando a seguir mostra como criar essa regra:

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"

Da mesma forma, é possível criar uma regra para negar o tráfego que excede os limites de inspeção configurados de 16 kB, 32 kB, 48 kB ou 64 kB no tamanho do corpo da solicitação. Por exemplo, o comando a seguir mostra como criar essa regra para o limite de inspeção de 64 kB (65.536 bytes).

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"

Exemplos

Os exemplos nesta seção destacam aspectos importantes da criação e do ajuste de regras WAF pré-configuradas, incluindo nível de sensibilidade e exceções de assinatura. Em todos os exemplos de comandos da CLI gcloud, você cria uma política de segurança com o nome POLICY_NAME na prioridade PRIORITY.

Criar uma regra em um determinado nível de sensibilidade

Neste exemplo, você usa todas as assinaturas na regra WAF sqli-v33-stable com um nível de sensibilidade menor que 4. Portanto, crie a regra no nível de sensibilidade 3, que inclui todas as assinaturas com um nível de sensibilidade menor ou igual a três:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar

Criar uma regra que desativa uma ou mais assinaturas

Neste exemplo, você usa quase todas as assinaturas no nível de sensibilidade 1 e 2 na regra WAF xss-v33-stable, mas quer excluir a assinatura owasp-crs-v030301-id941370-xss, que verifica variáveis globais do JavaScript. Portanto, crie a regra no nível de sensibilidade 2 e use o argumento opt_out_rule_ids para desativar a assinatura owasp-crs-v030301-id941370-xss:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar

Para excluir duas ou mais assinaturas de uma regra, forneça uma lista separada por vírgulas de assinaturas com o argumento opt_out_rule_ids, da seguinte forma:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar

Criar uma regra que ativa uma ou mais assinaturas

Este exemplo usa apenas a assinatura owasp-crs-v030001-id941150-xss da regra WAF xss-v33-stable. A assinatura verifica atributos HTML não permitidos e está no nível 2 de sensibilidade. Portanto, crie a regra no nível de sensibilidade 0 e use o argumento opt_in_rule_ids para ativar a assinatura owasp-crs-v030001-id941150-xss. Só é possível ativar as assinaturas de regras quando você define o nível de sensibilidade como 0:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar

Se você quiser incluir duas ou mais assinaturas de uma regra, forneça uma lista separada por vírgulas de assinaturas com o argumento opt_in_rule_ids, da seguinte forma:

Console

Selecione Modo avançado e use a seguinte expressão de exemplo no campo Correspondência:

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

Substitua:

  • PRIORITY: a prioridade da política de segurança
  • POLICY_NAME: o nome da política de segurança que você quer configurar

A seguir