O Cloud Armor fornece regras de WAF pré-configuradas, cada uma composta por várias assinaturas provenientes do OWASP Core Rule Set (CRS).
Cada assinatura corresponde a uma regra de deteção de ataques no conjunto de regras. Os pedidos recebidos são avaliados em função das regras da WAF pré-configuradas.
Um pedido corresponde a uma regra de WAF pré-configurada se corresponder a qualquer uma das
assinaturas associadas à regra de WAF pré-configurada. É feita uma correspondência quando a expressão evaluatePreconfiguredWaf()
devolve o valor true
.
Escolha um nível de sensibilidade
Cada assinatura tem um nível de sensibilidade que corresponde a um nível de paranoia da OWASP.
Pode selecionar uma sensibilidade entre 0
e 4
, embora o nível de sensibilidade 0
signifique que não são ativadas regras por predefinição.
Um nível de sensibilidade mais baixo indica assinaturas de confiança mais elevadas, que têm uma menor probabilidade de gerar um falso positivo. Um nível de sensibilidade mais elevado aumenta a
segurança, mas também aumenta o risco de gerar um falso positivo. Quando seleciona um nível de sensibilidade para a sua regra de WAF pré-configurada, opta por assinaturas nos níveis de sensibilidade inferiores ou iguais ao nível de sensibilidade selecionado. No exemplo seguinte, ajusta uma regra de WAF pré-configurada selecionando o nível de sensibilidade de 1
:
evaluatePreconfiguredWaf( 'sqli-v33-stable', { 'sensitivity': 1 } )
Desative as assinaturas de regras
Se decidir que uma regra de WAF pré-configurada corresponde a mais pedidos do que o necessário, ou se a regra estiver a bloquear tráfego que precisa de ser permitido, pode ajustar a regra para desativar assinaturas ruidosas ou desnecessárias. Para desativar assinaturas
numa regra de WAF preconfigurada específica, fornece uma lista de IDs das assinaturas indesejadas
à expressão evaluatePreconfiguredWaf()
.
O exemplo seguinte exclui dois IDs de regras do CRS da regra de WAF pré-configurada
sqli-v33-stable
(CRS 3.3):
evaluatePreconfiguredWaf( 'sqli-v33-stable', { 'sensitivity': 4, 'opt_out_rule_ids': ['owasp-crs-v030301-id942350-sqli', 'owasp-crs-v030301-id942360-sqli'] } )
Quando desativa os IDs das assinaturas dos conjuntos de regras de CRS pré-configurados, tem de fazer corresponder a versão do ID da assinatura à versão do conjunto de regras (CRS 3.0 ou 3.3) para evitar erros de configuração.
Também pode desativar os IDs de assinaturas através da expressão antiga evaluatePreconfigureExpr()
. Para mais informações sobre expressões de regras de WAF pré-configuradas, consulte a referência da linguagem de regras personalizadas.
Assinaturas de regras de inclusão
Em vez de desativar as assinaturas de regras, pode ativá-las nos níveis de sensibilidade que, de outra forma, estariam desativados. Recomendamos que ative as assinaturas de regras quando existirem menos assinaturas que quer usar num determinado nível de sensibilidade do que regras que quer desativar. Para ativar as assinaturas de regras, o nível de sensibilidade tem de ser 0
. O exemplo seguinte desativa todas as assinaturas cve-canary
em todos os níveis de sensibilidade e, em seguida, ativa explicitamente owasp-crs-v030001-id044228-cve
e owasp-crs-v030001-id144228-cve
:
evaluatePreconfiguredWaf( 'cve-canary', { 'sensitivity': 0, 'opt_in_rule_ids': ['owasp-crs-v030001-id044228-cve', 'owasp-crs-v030001-id144228-cve'] } )
Exclua campos de pedidos da inspeção
A sua aplicação personalizada pode conter conteúdo em campos de pedidos (como cabeçalhos, cookies, parâmetros de consulta ou URIs) que correspondem a assinaturas em regras de WAF pré-configuradas, mas que sabe que são legítimas. Neste caso, pode
reduzir os falsos positivos excluindo esses campos de pedido da inspeção
associando uma lista de exclusões para campos de pedido à regra
da política de segurança. Tenha em atenção que, quando tem uma exclusão de campo de pedido anexada a uma regra de WAF, não pode usar a ação allow
.
Quando configura uma exclusão de campo de pedido, associa-a a um destino, que pode ser uma regra de WAF pré-configurada completa ou uma lista de assinaturas ao abrigo de uma regra de WAF pré-configurada. Pode especificar uma correspondência exata ou uma correspondência parcial através de um operador de campo e um valor de campo. Os operadores de campo disponíveis são os seguintes:
EQUALS
: o operador corresponde se o valor do campo for igual ao valor especificado.STARTS_WITH
: o operador corresponde se o valor do campo começar pelo valor especificado.ENDS_WITH
: o operador corresponde se o valor do campo terminar com o valor especificado.CONTAINS
: o operador corresponde se o valor do campo contiver o valor especificado.EQUALS_ANY
: o operador corresponde se o valor do campo for qualquer valor.
As secções seguintes fornecem mais informações sobre os campos de pedido que pode excluir da inspeção, seguidas de exemplos.
Cabeçalhos do pedido
Uma lista de nomes de cabeçalhos de pedidos cujo valor é excluído da inspeção durante a avaliação de regras da WAF pré-configurada.
A exclusão só é aplicável a assinaturas no destino que inspecionariam originalmente o valor do cabeçalho do pedido. Isto inclui assinaturas associadas à seguinte flag de pedido no conjunto de regras principais da OWASP:
- REQUEST_HEADERS
Apenas o valor dos cabeçalhos de pedidos especificados é excluído da inspeção. O nome ainda está a ser inspecionado.
Solicitar cookies
Uma lista de nomes de cookies de pedidos cujo valor é excluído da inspeção durante a avaliação de regras da WAF pré-configurada.
A exclusão só é aplicável a assinaturas no destino que inspecionariam o valor do cookie de pedido originalmente. Isto inclui assinaturas associadas ao seguinte indicador de pedido no conjunto de regras principais da OWASP:
- REQUEST_COOKIES
Apenas o valor dos cookies de pedido especificados é excluído da inspeção. O nome ainda está a ser inspecionado.
Parâmetros de consulta do pedido
Uma lista de nomes de parâmetros de consulta de pedidos cujo valor é excluído da inspeção durante a avaliação de regras da WAF pré-configurada.
A exclusão só é aplicável a assinaturas no destino que inspecionariam originalmente os parâmetros do pedido. Isto inclui assinaturas associadas às seguintes flags de pedidos no conjunto de regras principais da OWASP:
- ARGS
- ARGS_GET
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
Apenas o valor dos parâmetros de consulta especificados é excluído da inspeção, que pode estar na string de consulta ou no corpo do POST. O nome continua a ser inspecionado.
Uma vez que os parâmetros de consulta fazem parte do URI e da linha de pedido,
estes campos são remontados para inspeção após a exclusão dos
parâmetros de consulta especificados. No entanto, para assinaturas que inspecionam o corpo do pedido completo (como assinaturas associadas ao indicador de pedido REQUEST_BODY
), a exclusão de parâmetros de consulta não é aplicada.
Por exemplo, se excluir um parâmetro de consulta denominado "args", pode continuar a ver uma correspondência numa assinatura que inspeciona todo o corpo do pedido se o pedido tiver um parâmetro "args" no corpo POST e o valor de "args" corresponder.
URI do pedido
Uma lista de URIs da linha de pedido, excluindo os dados da string de consulta, a excluir da inspeção durante a avaliação da regra de WAF pré-configurada.
A exclusão só é aplicável a assinaturas no destino que inspecionariam o URI do pedido originalmente. Isto inclui assinaturas associadas aos seguintes flags de pedidos no conjunto de regras principais da OWASP:
- REQUEST_URI
- REQUEST_URI_RAW
- REQUEST_LINE
- REQUEST_FILENAME
- REQUEST_BASENAME
Quando exclui qualquer um dos campos anteriores, o campo é excluído totalmente da inspeção e não é feita qualquer remontagem.
Valores dos campos
Tem de especificar um valor de campo se usar um operador de campo diferente de
EQUALS_ANY
.
Para cabeçalhos de pedidos, cookies de pedidos e parâmetros de consulta de pedidos, o conjunto de carateres permitido para valores de campos inclui os seguintes carateres:
!
,#
,$
,%
,&
,*
,+
,-
,.
,^
,_
,`
,|
,~
- Carateres alfabéticos de
A
aZ
(minúsculas e maiúsculas) - Carateres numéricos
0
a9
Quando aplica exclusões a estes campos de pedido, os valores dos campos configurados são comparados tal como estão com os valores (não sensíveis a maiúsculas e minúsculas, após a transformação) do pedido. Não tem de realizar uma codificação adicional se quiser excluir um caráter específico que não esteja no conjunto de carateres permitidos.
Para URIs de pedidos, o valor do campo tem de ser fornecido num formato de URI da seguinte forma:
- É permitido um esquema, mas está restrito apenas a http ou https.
- Um anfitrião é permitido e pode ser um endereço IP.
- Uma porta é permitida.
- É permitido um caminho.
- Não é permitida uma consulta.
- Não é permitido um fragmento.
Quando aplica exclusões para URIs de pedidos, os valores dos campos configurados são comparados tal como estão com os URIs (sem distinção entre maiúsculas e minúsculas, após a transformação) da linha de pedido, excluindo a string de consulta. Os URIs da linha de pedido podem ser relativos ou absolutos. Tenha isto em atenção ao configurar exclusões para URIs de pedidos.
Exemplos
O primeiro exemplo atualiza a regra na política de segurança POLICY_1 em
PRIORITY para adicionar uma configuração de exclusão para todas as assinaturas em
sqli-v33-stable
a regra de WAF pré-configurada, para excluir todos os cookies de pedidos da inspeção:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_1 \ --target-rule-set "sqli-v33-stable" \ --request-cookie-to-exclude "op=EQUALS_ANY"
O segundo exemplo atualiza a regra na política de segurança POLICY_2
em PRIORITY para adicionar uma configuração de exclusão para assinaturas
owasp-crs-v030301-id941140-xss
e owasp-crs-v030301-id941270-xss
na regra de WAF pré-configurada, para excluir cabeçalhos de pedidos que começam com abc
ou terminam com xyz
da inspeção:xss-v33-stable
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_2 \ --target-rule-set "xss-v33-stable" \ --target-rule-ids "owasp-crs-v030301-id941140-xss,owasp-crs-v030301-id941270-xss" \ --request-header-to-exclude "op=STARTS_WITH,val=abc" \ --request-header-to-exclude "op=ENDS_WITH,val=xyz"
O terceiro exemplo atualiza a regra na política de segurança POLICY_3
em PRIORITY para adicionar uma configuração de exclusão para todas as assinaturas
na regra de WAF pré-configurada sqli-v33-stable
. Isto exclui os parâmetros de consulta de pedidos (analisados a partir da string de consulta do URI ou do payload do corpo) que são iguais a bad-param
da inspeção:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_3 \ --target-rule-set "sqli-v33-stable" \ --request-query-param-to-exclude "op=EQUALS,val=bad-param"
O quarto exemplo atualiza a regra na política de segurança POLICY_4
em PRIORITY para adicionar uma configuração de exclusão para a assinatura
owasp-crs-v030301-id930100-lfi
na regra de WAF pré-configurada lfi-v33-stable
. Isto exclui os URIs de pedidos que contêm /bad-path
da inspeção:
gcloud compute security-policies rules add-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_4 \ --target-rule-set "lfi-v33-stable" \ --target-rule-ids "owasp-crs-v030301-id930100-lfi" \ --request-uri-to-exclude "op=CONTAINS,val=/bad-path"
O quinto exemplo atualiza a regra na política de segurança POLICY_5
em PRIORITY para remover todas as exclusões de campos de pedidos para os IDs das regras owasp-crs-v030301-id942110-sqli
e owasp-crs-v030301-id942120-sqli
em sqli-v33-stable
.
gcloud compute security-policies rules remove-preconfig-waf-exclusion PRIORITY \ --security-policy POLICY_5 \ --target-rule-set "sqli-v33-stable" \ --target-rule-ids "owasp-crs-v030301-id942110-sqli,owasp-crs-v030301-id942120-sqli"
Aplique a análise em valores de cabeçalhos Content-Type
personalizados
Quando o Cloud Armor avalia o corpo POST em relação às regras de WAF pré-configuradas, o cabeçalho Content-Type
indica o formato dos dados no corpo do pedido. Por predefinição, o Cloud Armor trata o conteúdo do corpo POST como uma string, que é elegível para inspeção e correspondência nas regras de WAF pré-configuradas. No entanto, pode configurar uma análise mais precisa se os pedidos recebidos tiverem uma codificação diferente. O Cloud Armor suporta os seguintes tipos de codificação:
- JSON
- GraphQL
Para mais informações, consulte a secção Análise do conteúdo do corpo do POST.
O que se segue?
- Saiba mais sobre a configuração de políticas de segurança.
- Saiba mais sobre as assinaturas de regras disponíveis para regras de WAF pré-configuradas.
- Saiba mais sobre as regras da WAF pré-configuradas através da referência da linguagem de regras personalizadas.