Como ajustar as regras do WAF do Google Cloud Armor

Regras pré-configuradas

As regras pré-configuradas do Google Cloud Armor são regras complexas do firewall de aplicativos da Web (WAF, na sigla em inglês) com dezenas de assinaturas compiladas a partir dos padrões do setor de código aberto. O Google oferece essas regras como estão. Elas permitem que o Google Cloud Armor avalie dezenas de assinaturas de tráfego distintas consultando regras com nomes convenientes, em vez de exigir que você defina cada assinatura manualmente.

A tabela a seguir contém uma lista abrangente de regras do WAF pré-configuradas que estão disponíveis para uso em uma política de segurança do Google Cloud Armor. A origem da regra é o conjunto de regras principais do ModSecurity Core versão 3.0.2 (CRS).

Nome da regra do Google Cloud Armor Nome da regra do ModSecurity Status atual
sqli-stable Injeção de SQL Sincronizado com sqli-canary
sqli-canary Injeção de SQL Mais recente
xss-stable Scripting em vários locais Sincronizado com xss-canary
xss-canary Scripting em vários locais Mais recente
lfi-stable Inclusão de arquivo local Sincronizado com lfi-canary
lfi-canary Inclusão de arquivo local Mais recente
rfi-stable Inclusão de arquivo remoto Sincronizado com rfi-canary
rfi-canary Inclusão de arquivo remoto Mais recente
rce-stable Execução remota de código Sincronizado com rce-canary
rce-canary Execução remota de código Mais recente

Cada regra pré-configurada consiste em várias assinaturas. As solicitações recebidas são avaliadas em relação às regras pré-configuradas. Uma solicitação corresponderá a uma regra pré-configurada se a solicitação corresponder a qualquer uma das assinaturas associadas à regra pré-configurada. Uma correspondência é feita quando o comando evaluatePreconfiguredExpr() retorna o valor true.

Se você decidir que uma regra pré-configurada corresponde a mais tráfego do que o necessário ou se a regra estiver bloqueando o tráfego que precisa ser permitido, a regra poderá ser ajustada para desativar assinaturas com ruídos ou desnecessárias. Para desativar assinaturas em uma regra pré-configurada específica, forneça uma lista de IDs das assinaturas indesejadas ao comando evaluatePreconfiguredExpr().

O exemplo a seguir exclui dois IDs de regra de resposta automática da regra WAF xss-stable predefinida:

evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v020901-id981136-xss', 'owasp-crs-v020901-id981138-xss'])

O exemplo anterior é uma expressão na linguagem das regras personalizadas. A sintaxe geral é esta:

evaluatePreconfiguredExpr(RULE, ['SIGNATURE1', 'SIGNATURE2', 'SIGNATURE3'])

Regras ModSecurity pré-configuradas

Injeção de SQL (SQLi)

ID da assinatura (ID da regra de CRS) Nível de sensibilidade Descrição
owasp-crs-v030001-id942140-sqli 1 Ataque de injeção de SQL: nomes comuns de banco de dados detectados
owasp-crs-v030001-id942160-sqli 1 Detecta testes de SQLi cegos usando sleep() ou benchmark()
owasp-crs-v030001-id942170-sqli 1 Detecta tentativas de injeção de SQL com sleep e benchmark, incluindo consultas condicionais
owasp-crs-v030001-id942190-sqli 1 Detecta execução de código MSSQL e tentativas de coleta de informações
owasp-crs-v030001-id942220-sqli 1 Procura ataques de fluxo intenso de números inteiros
owasp-crs-v030001-id942230-sqli 1 Detecta tentativas condicionais de injeção de SQL
owasp-crs-v030001-id942240-sqli 1 Detecta troca de charset do MySQL e tentativas de DoS do MSSQL
owasp-crs-v030001-id942250-sqli 1 Detecta MATCH AGAINST
owasp-crs-v030001-id942270-sqli 1 Procura injeção de SQL básica e string de ataque comum para o MySQL
owasp-crs-v030001-id942280-sqli 1 Detecta a injeção de pg_sleep do Postgres
owasp-crs-v030001-id942290-sqli 1 Localiza tentativas básicas de injeção de SQL no MongoDB
owasp-crs-v030001-id942320-sqli 1 Detecta injeções de procedimento/função armazenadas em MySQL e PostgreSQL
owasp-crs-v030001-id942350-sqli 1 Detecta injeção de UDF no MySQL e outras tentativas de manipulação de dados/estrutura
owasp-crs-v030001-id942360-sqli 1 Detecta injeção de SQL concatenada básica e tentativas de SQLLFI
owasp-crs-v030001-id942110-sqli 2 Ataque de injeção SQL: teste de injeção comum detectado
owasp-crs-v030001-id942120-sqli 2 Ataque de injeção SQL: operador SQL detectado
owasp-crs-v030001-id942150-sqli 2 Ataque de injeção SQL
owasp-crs-v030001-id942180-sqli 2 Detecta tentativas básicas de desvio de autenticação SQL (1/3)
owasp-crs-v030001-id942200-sqli 2 Detecta injeções de MySQL ofuscadas por espaço/comentários e terminadas em crase
owasp-crs-v030001-id942210-sqli 2 Detecta tentativas de injeção SQL encadeadas (1/2)
owasp-crs-v030001-id942260-sqli 2 Detecta tentativas básicas de desvio de autenticação SQL (2/3)
owasp-crs-v030001-id942300-sqli 2 Detecta comentários no MySQL
owasp-crs-v030001-id942310-sqli 2 Detecta tentativas de injeção SQL encadeadas (2/2)
owasp-crs-v030001-id942330-sqli 2 Detecta sondagens clássicas de injeção SQL (1/2)
owasp-crs-v030001-id942340-sqli 2 Detecta tentativas básicas de desvio de autenticação SQL (3/3)
owasp-crs-v030001-id942380-sqli 2 Ataque de injeção SQL
owasp-crs-v030001-id942390-sqli 2 Ataque de injeção SQL
owasp-crs-v030001-id942400-sqli 2 Ataque de injeção SQL
owasp-crs-v030001-id942410-sqli 2 Ataque de injeção SQL
owasp-crs-v030001-id942430-sqli 2 Detecção de anomalias de caracteres SQL restritos (argumentos): número de caracteres especiais excedido (12)
owasp-crs-v030001-id942440-sqli 2 Sequência de comentários no SQL detectada
owasp-crs-v030001-id942450-sqli 2 Codificação hexadecimal do SQL identificada
owasp-crs-v030001-id942251-sqli 3 Detecta injeções de HAVING
owasp-crs-v030001-id942420-sqli 3 Detecção de anomalias de caracteres SQL restritos (cookies): número de caracteres especiais excedido (8)
owasp-crs-v030001-id942431-sqli 3 Detecção de anomalias de caracteres SQL restritos (argumentos): número de caracteres especiais excedido (6)
owasp-crs-v030001-id942460-sqli 3 Alerta de detecção de anomalias de metacaracteres: caracteres repetitivos que não são palavras
owasp-crs-v030001-id942421-sqli 4 Detecção de anomalias de caracteres SQL restritos (cookies): número de caracteres especiais excedido (3)
owasp-crs-v030001-id942432-sqli 4 Detecção de anomalias de caracteres SQL restritos (argumentos): número de caracteres especiais excedido (12)


Para configurar uma regra em um nível de sensibilidade específico, desative as assinaturas com níveis de sensibilidade maiores.

Nível 1 de sensibilidade do SQLi


evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942110-sqli',
  'owasp-crs-v030001-id942120-sqli',
  'owasp-crs-v030001-id942150-sqli',
  'owasp-crs-v030001-id942180-sqli',
  'owasp-crs-v030001-id942200-sqli',
  'owasp-crs-v030001-id942210-sqli',
  'owasp-crs-v030001-id942260-sqli',
  'owasp-crs-v030001-id942300-sqli',
  'owasp-crs-v030001-id942310-sqli',
  'owasp-crs-v030001-id942330-sqli',
  'owasp-crs-v030001-id942340-sqli',
  'owasp-crs-v030001-id942380-sqli',
  'owasp-crs-v030001-id942390-sqli',
  'owasp-crs-v030001-id942400-sqli',
  'owasp-crs-v030001-id942410-sqli',
  'owasp-crs-v030001-id942430-sqli',
  'owasp-crs-v030001-id942440-sqli',
  'owasp-crs-v030001-id942450-sqli',
  'owasp-crs-v030001-id942251-sqli',
  'owasp-crs-v030001-id942420-sqli',
  'owasp-crs-v030001-id942431-sqli',
  'owasp-crs-v030001-id942460-sqli',
  'owasp-crs-v030001-id942421-sqli',
  'owasp-crs-v030001-id942432-sqli']
)
          
Nível 2 de sensibilidade do SQLi


evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942251-sqli',
 'owasp-crs-v030001-id942420-sqli',
 'owasp-crs-v030001-id942431-sqli',
 'owasp-crs-v030001-id942460-sqli',
 'owasp-crs-v030001-id942421-sqli',
 'owasp-crs-v030001-id942432-sqli']
)
Nível 3 de sensibilidade do SQLi


evaluatePreconfiguredExpr('sqli-stable', ['owasp-crs-v030001-id942421-sqli',
         'owasp-crs-v030001-id942432-sqli']
         )
Nível 4 de sensibilidade do SQLi


evaluatePreconfiguredExpr('sqli-stable')

Scripting em vários locais (XSS)

ID da assinatura (ID da regra) Nível de sensibilidade Descrição
owasp-crs-v030001-id941110-xss 1 Filtro XSS - Categoria 1: vetor de tag de script
owasp-crs-v030001-id941120-xss 1 Filtro XSS - categoria 2: vetor de manipulador de eventos
owasp-crs-v030001-id941130-xss 1 Filtro XSS - Categoria 3: vetor de atributo
owasp-crs-v030001-id941140-xss 1 Filtro XSS - Categoria 4: vetor de URI de JavaScript
owasp-crs-v030001-id941160-xss 1 Verificador de injeção de XSS em NoScript: injeção de HTML
owasp-crs-v030001-id941170-xss 1 Verificador de injeção de XSS em NoScript: injeção de atributo
owasp-crs-v030001-id941180-xss 1 Palavras-chave da lista de proibições do validador de nó
owasp-crs-v030001-id941190-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941200-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941210-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941220-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941230-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941240-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941250-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941260-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941270-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941280-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941290-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941300-xss 1 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941310-xss 1 Filtro XSS de codificação mal formada US-ASCII: ataque detectado
owasp-crs-v030001-id941350-xss 1 XSS de codificação UTF-7 no IE: ataque detectado
owasp-crs-v030001-id941150-xss 2 Filtro XSS - Categoria 5: atributos HTML não permitidos
owasp-crs-v030001-id941320-xss 2 Possível ataque XSS detectado: manipulador de tags HTML
owasp-crs-v030001-id941330-xss 2 Filtros XSS do IE: ataque detectado
owasp-crs-v030001-id941340-xss 2 Filtros XSS do IE: ataque detectado


Para configurar uma regra em um nível de sensibilidade específico, desative as assinaturas com níveis de sensibilidade maiores.

Nível 1 de sensibilidade XSS


evaluatePreconfiguredExpr('xss-stable', ['owasp-crs-v030001-id941150-xss',
  'owasp-crs-v030001-id941320-xss',
  'owasp-crs-v030001-id941330-xss',
  'owasp-crs-v030001-id941340-xss'])
          


Todas as assinaturas de XSS estão abaixo do nível 2 de sensibilidade. A configuração a seguir funciona para outros níveis de sensibilidade:

Níveis de sensibilidade XSS 2, 3 e 4


evaluatePreconfiguredExpr('xss-stable')

Inclusão de arquivos locais (LFI, na sigla em inglês)

ID da assinatura (ID da regra) Nível de sensibilidade Descrição
owasp-crs-v030001-id930100-lfi 1 Ataque de passagem de caminho (/../)
owasp-crs-v030001-id930110-lfi 1 Ataque de passagem de caminho (/../)
owasp-crs-v030001-id930120-lfi 1 Tentativa de acessar arquivos do SO
owasp-crs-v030001-id930130-lfi 1 Tentativa de acessar arquivos restritos


Todas as assinaturas de LFI estão no nível 1 de sensibilidade. A configuração a seguir funciona para todos os níveis de sensibilidade:

Níveis 1, 2, 3 e 4 de sensibilidade LFI


evaluatePreconfiguredExpr('lfi-canary')

Execução de código remoto (RCE, na sigla em inglês)

ID da assinatura (ID da regra) Nível de sensibilidade Descrição
owasp-crs-v030001-id932100-rce 1 Injeção de comando do UNIX
owasp-crs-v030001-id932105-rce 1 Injeção de comando do UNIX
owasp-crs-v030001-id932110-rce 1 Injeção de comando do Windows
owasp-crs-v030001-id932115-rce 1 Injeção de comando do Windows
owasp-crs-v030001-id932120-rce 1 Comando do PowerShell do Windows encontrado
owasp-crs-v030001-id932130-rce 1 Expressão de shell do Unix encontrada
owasp-crs-v030001-id932140-rce 1 Comando FOR/IF do Windows encontrado
owasp-crs-v030001-id932150-rce 1 Execução direta de comando do UNIX
owasp-crs-v030001-id932160-rce 1 Código de shell do UNIX encontrado
owasp-crs-v030001-id932170-rce 1 Shellshock (CVE-2014-6271)
owasp-crs-v030001-id932171-rce 1 Shellshock (CVE-2014-6271)


Todas as assinaturas de RCE estão no nível 1 de sensibilidade. A configuração a seguir funciona para todos os níveis de sensibilidade:

Níveis 1, 2, 3 e 4 de sensibilidade RCE


evaluatePreconfiguredExpr('rce-canary')

Inclusão de arquivo remoto (RFI, na sigla em inglês)

ID da assinatura (ID da regra) Nível de sensibilidade Descrição
owasp-crs-v030001-id931100-rfi 1 Parâmetro de URL que usa um endereço IP
owasp-crs-v030001-id931110-rfi 1 Nome de parâmetro comum vulnerável a RFI usado com payload do URL
owasp-crs-v030001-id931120-rfi 1 Payload do URL usado com caractere de ponto de interrogação (?) no final
owasp-crs-v030001-id931130-rfi 2 Referência/link fora do domínio


Para configurar uma regra em um nível de sensibilidade específico, desative as assinaturas com níveis de sensibilidade maiores.

Níveis 2, 3 e 4 de sensibilidade RFI


evaluatePreconfiguredExpr('rfi-canary', ['owasp-crs-v030001-id931130-rfi'])

Todas as assinaturas para RF estão abaixo do nível de sensibilidade 2. A configuração a seguir funciona para outros níveis de sensibilidade:

Níveis de sensibilidade à RF em 2, 3 e 4


evaluatePreconfiguredExpr('rfi-canary')

A seguir