GSP879

Visão geral
O Google Cloud Armor é a solução de segurança de rede de borda empresarial do Google que oferece proteção contra DDoS, aplicação de regras de WAF e gerenciamento adaptativo em larga escala.
O Cloud Armor ampliou os conjuntos de regras pré-configuradas de WAF para mitigar as vulnerabilidades de segurança de aplicativos da Web do OWASP Top 10. Os conjuntos de regras são baseados na versão 3.0.2 do conjunto de regras essenciais do OWASP ModSecurity para proteger contra alguns dos riscos de segurança de aplicativos da Web mais comuns, como inclusão de arquivos locais (LFI), inclusão de arquivos remotos (RFI), execução remota de código (RCE) e muito mais.
Neste laboratório, você vai aprender a mitigar algumas das vulnerabilidades comuns usando regras do WAF do Google Cloud Armor.
O que você vai aprender
Neste laboratório, você vai aprender a:
- Configurar um grupo de instâncias e um balanceador de carga global para oferecer suporte a um serviço
- Configurar políticas de segurança do Cloud Armor com regras de WAF pré-configuradas para proteção contra LFI, RCE, verificadores, ataques de protocolo e fixação de sessão
- Confirmar se o Cloud Armor mitigou um ataque observando os registros

O aplicativo OWASP Juice Shop é útil para treinamento de segurança e reconhecimento, porque contém, intencionalmente, instâncias de cada uma das dez principais vulnerabilidades de segurança do OWASP. Um invasor pode explorar o app para fins de teste. Neste laboratório, você vai usá-lo para demonstrar alguns ataques a aplicativos e proteger o aplicativo com regras de WAF do Cloud Armor. O aplicativo é protegido por um balanceador de carga do Google Cloud, ao qual são aplicadas a política e as regras de segurança do Cloud Armor. Ele é veiculado na Internet pública e, portanto, pode ser acessado de quase qualquer lugar e protegido usando o Cloud Armor e as regras de firewall da VPC.
Configuração e requisitos
Antes de clicar no botão Começar o Laboratório
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é ativado quando você clica em Iniciar laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, e não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
- Acesso a um navegador de Internet padrão (recomendamos o Chrome).
Observação: para executar este laboratório, use o modo de navegação anônima (recomendado) ou uma janela anônima do navegador. Isso evita conflitos entre sua conta pessoal e de estudante, o que poderia causar cobranças extras na sua conta pessoal.
- Tempo para concluir o laboratório: não se esqueça que, depois de começar, não será possível pausar o laboratório.
Observação: use apenas a conta de estudante neste laboratório. Se usar outra conta do Google Cloud, você poderá receber cobranças nela.
Como iniciar seu laboratório e fazer login no console do Google Cloud
-
Clique no botão Começar o laboratório. Se for preciso pagar por ele, uma caixa de diálogo vai aparecer para você selecionar a forma de pagamento.
No painel Detalhes do Laboratório, à esquerda, você vai encontrar o seguinte:
- O botão Abrir Console do Google Cloud
- O tempo restante
- As credenciais temporárias que você vai usar neste laboratório
- Outras informações, se forem necessárias
-
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer Login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Observação: se aparecer a caixa de diálogo Escolher uma conta, clique em Usar outra conta.
-
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
{{{user_0.username | "Username"}}}
Você também encontra o nome de usuário no painel Detalhes do Laboratório.
-
Clique em Próxima.
-
Copie a Senha abaixo e cole na caixa de diálogo de Olá.
{{{user_0.password | "Password"}}}
Você também encontra a senha no painel Detalhes do Laboratório.
-
Clique em Próxima.
Importante: você precisa usar as credenciais fornecidas no laboratório, e não as da sua conta do Google Cloud.
Observação: se você usar sua própria conta do Google Cloud neste laboratório, é possível que receba cobranças adicionais.
-
Acesse as próximas páginas:
- Aceite os Termos e Condições.
- Não adicione opções de recuperação nem autenticação de dois fatores (porque essa é uma conta temporária).
- Não se inscreva em testes gratuitos.
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
Observação: para acessar os produtos e serviços do Google Cloud, clique no Menu de navegação ou digite o nome do serviço ou produto no campo Pesquisar.
Ativar o Cloud Shell
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
-
Clique em Ativar o Cloud Shell
na parte de cima do console do Google Cloud.
-
Clique nas seguintes janelas:
- Continue na janela de informações do Cloud Shell.
- Autorize o Cloud Shell a usar suas credenciais para fazer chamadas de APIs do Google Cloud.
Depois de se conectar, você verá que sua conta já está autenticada e que o projeto está configurado com seu Project_ID, . A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
A gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
- (Opcional) É possível listar o nome da conta ativa usando este comando:
gcloud auth list
- Clique em Autorizar.
Saída:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Opcional) É possível listar o ID do projeto usando este comando:
gcloud config list project
Saída:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Observação: consulte a documentação completa da gcloud
no Google Cloud no guia de visão geral da gcloud CLI.
Antes de começar
- No Cloud Shell, configure o ID do projeto:
gcloud config list project
export PROJECT_ID=$(gcloud config get-value project)
echo $PROJECT_ID
gcloud config set project $PROJECT_ID
Tarefa 1: Criar a rede VPC
- No Cloud Shell, insira o comando a seguir para criar uma rede VPC:
gcloud compute networks create {{{project_0.startup_script.network_name| Network Name}}} --subnet-mode custom
Created
NAME SUBNET_MODE BGP_ROUTING_MODE
{{{project_0.startup_script.network_name| Network Name}}} CUSTOM REGIONAL
Crie uma sub-rede
- No Cloud Shell, insira o seguinte comando para criar uma sub-rede:
gcloud compute networks subnets create {{{project_0.startup_script.subnet_name| Subnet Name}}} \
--network {{{project_0.startup_script.network_name| Network Name}}} --range 10.0.0.0/24 --region {{{project_0.startup_script.region_1| Region}}}
Created
NAME REGION NETWORK RANGE
{{{project_0.startup_script.subnet_name| Subnet Name}}} {{{project_0.startup_script.region_1| Region}}} {{{project_0.startup_script.network_name| Network Name}}} 10.0.0.0/24
Crie regras de firewall da VPC
Depois de criar a VPC e a sub-rede, configure algumas regras de firewall.
- A primeira regra de firewall, chamada
allow-js-site
, permite que todos os IPs acessem o IP externo do site do aplicativo de teste na porta 3000
.
- A segunda regra de firewall, chamada
allow-health-check
, permite verificações de integridade do IP de origem dos balanceadores de carga.
- No Cloud Shell, insira o seguinte comando para criar uma regra de firewall que permita que todos os IPs acessem o aplicativo:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule| Firewall Name}}} --allow tcp:3000 --network {{{project_0.startup_script.network_name| Network Name}}}
Saída:
Creating firewall...done.
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
{{{project_0.startup_script.firewall_rule| Firewall Name}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp:3000 False
- No Cloud Shell, insira o comando a seguir para criar uma regra de firewall que permita verificações de integridade dos intervalos de verificação de integridade do Google:
gcloud compute firewall-rules create {{{project_0.startup_script.firewall_rule1| Firewall Name1}}} \
--network={{{project_0.startup_script.network_name| Network Name}}} \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=allow-healthcheck \
--rules=tcp
Saída:
Creating firewall...done.
NAME NETWORK DIRECTION PRIORITY ALLOW DENY DISABLED
{{{project_0.startup_script.firewall_rule1| Firewall_Name1}}} {{{project_0.startup_script.network_name| Network Name}}} INGRESS 1000 tcp False
Clique em Verificar meu progresso para conferir o objetivo.
Criar a rede VPC
Tarefa 2: Configurar o aplicativo de teste
Crie o aplicativo de teste, nesse caso, o servidor da Web da OWASP Juice Shop.
Ao criar a instância de computação, você usa uma imagem de contêiner para garantir que o servidor tenha os serviços apropriados. Você implanta esse servidor na e tem uma tag de rede que permite verificações de integridade.
Crie o aplicativo OWASP Juice Shop
- Use o aplicativo de código aberto OWASP Juice Shop como o aplicativo vulnerável. Você também pode usar esse aplicativo para fazer desafios de segurança do OWASP no site do OWASP.
gcloud compute instances create-with-container {{{project_0.startup_script.vm_instance| vm_instance}}} --container-image bkimminich/juice-shop \
--network {{{project_0.startup_script.network_name| Network Name}}} \
--subnet {{{project_0.startup_script.subnet_name| Subnet Name}}} \
--private-network-ip=10.0.0.3 \
--machine-type n1-standard-2 \
--zone {{{project_0.startup_script.zone| Zone}}} \
--tags allow-healthcheck
Saída:
NAME ZONE MACHINE_TYPE PREEMPTIBLE
{{{project_0.startup_script.vm_instance| vm_instance}}} {{{project_0.startup_script.zone| Zone}}} n1-standard-2
INTERNAL_IP EXTERNAL_IP STATUS
10.0.0.3 RUNNING
Clique em Verificar meu progresso para conferir o objetivo.
Configurar o aplicativo de teste
Configure o componente do balanceador de carga do Cloud: grupo de instâncias
- No Cloud Shell, insira o seguinte comando para criar o grupo de instâncias não gerenciado:
gcloud compute instance-groups unmanaged create {{{project_0.startup_script.vm_instance_group| Instance Group}}} \
--zone={{{project_0.startup_script.zone| Zone}}}
Saída:
NAME LOCATION SCOPE NETWORK MANAGED INSTANCES
{{{project_0.startup_script.vm_instance_group| Instance Group}}} {{{project_0.startup_script.zone| Zone}}} zone 0
- Adicione a instância do Google Compute Engine (GCE) da Juice Shop ao grupo de instâncias não gerenciado:
gcloud compute instance-groups unmanaged add-instances {{{project_0.startup_script.vm_instance_group| Instance Group}}} \
--zone={{{project_0.startup_script.zone| Zone}}} \
--instances={{{project_0.startup_script.vm_instance| VM Instance}}}
Saída:
Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance_Group}}}].
- Defina a porta nomeada como a porta do aplicativo Juice Shop:
gcloud compute instance-groups unmanaged set-named-ports \
{{{project_0.startup_script.vm_instance_group| Instance Group}}} \
--named-ports=http:3000 \
--zone={{{project_0.startup_script.zone| Zone}}}
Saída:
Updated [https://www.googleapis.com/compute/v1/projects//zones/{{{project_0.startup_script.zone| Zone}}}/instanceGroups/{{{project_0.startup_script.vm_instance_group| Instance Group}}}].
Clique em Verificar meu progresso para conferir o objetivo.
Configurar o componente de balanceamento de carga do Cloud: grupo de instâncias
Configure o componente do balanceador de carga do Cloud: verificação de integridade
Agora que você criou o grupo de instâncias não gerenciado, crie uma verificação de integridade, um serviço de back-end, um mapa de URLs, um proxy de destino e uma regra de encaminhamento.
- No Cloud Shell, insira o comando a seguir para criar a verificação de integridade da porta de serviço do Juice Shop:
gcloud compute health-checks create tcp tcp-port-3000 \
--port 3000
Saída:
Created
NAME PROTOCOL
tcp-port-3000 TCP
Configure o componente do balanceador de carga do Cloud: serviço de back-end
- No Cloud Shell, insira o comando a seguir para criar os parâmetros do serviço de back-end:
gcloud compute backend-services create juice-shop-backend \
--protocol HTTP \
--port-name http \
--health-checks tcp-port-3000 \
--enable-logging \
--global
Saída:
NAME BACKENDS PROTOCOL
juice-shop-backend HTTP
- Adicione o grupo de instâncias do Juice Shop ao serviço de back-end:
gcloud compute backend-services add-backend juice-shop-backend \
--instance-group={{{project_0.startup_script.vm_instance_group| Instance Group}}} \
--instance-group-zone={{{project_0.startup_script.zone| Zone}}} \
--global
Saída:
Updated [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/backendServices/juice-shop-backend].
Configure o componente do balanceador de carga do Cloud: mapa de URLs
- No Cloud Shell, insira o seguinte comando para criar o mapa de URLs para enviar as solicitações recebidas ao back-end:
gcloud compute url-maps create juice-shop-loadbalancer \
--default-service juice-shop-backend
Saída:
NAME DEFAULT_SERVICE
juice-shop-loadbalancer backendServices/juice-shop-backend
Configure o componente do balanceador de carga do Cloud: proxy de destino
- No Cloud Shell, insira o seguinte comando para criar o proxy de destino para rotear as solicitações recebidas para o mapa de URLs:
gcloud compute target-http-proxies create juice-shop-proxy \
--url-map juice-shop-loadbalancer
Saída:
NAME URL_MAP
juice-shop-proxy juice-shop-loadbalancer
Configure o componente do balanceador de carga do Cloud: regra de encaminhamento
- No Cloud Shell, insira o seguinte comando para criar a regra de encaminhamento do balanceador de carga:
gcloud compute forwarding-rules create juice-shop-rule \
--global \
--target-http-proxy=juice-shop-proxy \
--ports=80
Saída:
Created [https://www.googleapis.com/compute/v1/projects/cythom-host1/global/forwardingRules/juice-shop-rule].
Verifique se o serviço Juice Shop está on-line
- No Cloud Shell:
PUBLIC_SVC_IP="$(gcloud compute forwarding-rules describe juice-shop-rule --global --format="value(IPAddress)")"
echo $PUBLIC_SVC_IP
Saída:
<public VIP of service>
Aguarde alguns minutos antes de continuar, caso contrário, você poderá receber uma resposta HTTP/1.1 404 Not Found.
- No Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP
Saída:
HTTP/1.1 200 OK
<...>
Você também pode acessar o navegador para visualizar a Juice Shop.

Agora você já pode analisar as vulnerabilidades do Juice Shop e se proteger contra elas com os conjuntos de regras do WAF do Cloud Armor.
Clique em Verificar meu progresso para conferir o objetivo.
Configurar o componente de verificação de integridade do balanceador de carga do Cloud
Tarefa 3: Demonstrar vulnerabilidades conhecidas
Neste laboratório, você vai demonstrar os estados antes e depois da propagação das regras de WAF do Cloud Armor em etapas condensadas.
Observar uma vulnerabilidade de LFI: travessia de caminho
A inclusão de arquivos locais é o processo de observar arquivos presentes no servidor explorando a falta de validação de entrada na solicitação para potencialmente expor dados sensíveis. A seguir, vemos que a travessia de caminho é possível. No navegador ou com curl, observe um caminho atual veiculado pelo aplicativo.
- No Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp
Saída:
HTTP/1.1 200 OK
<...>
Observe que a travessia de caminho também funciona.
- No Cloud Shell:
curl -Ii http://$PUBLIC_SVC_IP/ftp/../
Saída:
HTTP/1.1 200 OK
<...>
Observar uma vulnerabilidade de RCE
A execução remota de código inclui vários cenários de injeção de comandos UNIX e Windows que permitem que invasores executem comandos do SO normalmente restritos a usuários privilegiados. O exemplo a seguir mostra a execução de um simples comando ls
inserido.
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
Saída:
HTTP/1.1 200 OK
<...>
Remova as flags do curl para observar a saída completa.
Observar o acesso de um verificador conhecido
Os aplicativos de verificação comerciais e de código aberto têm várias finalidades, incluindo a busca de vulnerabilidades. Essas ferramentas usam o user agent e outros cabeçalhos. Observe que o curl funciona com um cabeçalho de user agent conhecido.
- No Cloud Shell, faça o seguinte:
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
Saída:
HTTP/1.1 200 OK
<...>
Observar um ataque de protocolo: divisão de HTTP
Alguns aplicativos da Web usam a entrada do usuário para gerar os cabeçalhos nas respostas. Se o aplicativo não filtrar a entrada corretamente, um invasor poderá contaminar o parâmetro de entrada com a sequência %0d%0a
(a sequência CRLF usada para separar diferentes linhas).
A resposta pode ser interpretada como duas respostas por qualquer coisa que a analise, como um servidor proxy intermediário, o que pode veicular conteúdo falso em solicitações subsequentes. Insira a sequência %0d%0a
no parâmetro de entrada, o que pode levar à exibição de uma página enganosa.
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
Saída:
HTTP/1.1 200 OK
<...>
Observar a fixação da sessão
- No Cloud Shell, faça o seguinte:
curl -Ii http://$PUBLIC_SVC_IP -H session_id=X
Saída:
HTTP/1.1 200 OK
<...>
Tarefa 4: Definir regras de WAF do Cloud Armor
- Liste as regras de WAF pré-configuradas usando o seguinte comando no Cloud Shell:
gcloud compute security-policies list-preconfigured-expression-sets
EXPRESSION_SET
Sqli-canary
RULE_ID
owasp-crs-v030001-id942110-sqli
owasp-crs-v030001-id942120-sqli
<...>
- Crie a política de segurança do Cloud Armor usando o seguinte comando no Cloud Shell:
gcloud compute security-policies create {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "Block with OWASP ModSecurity CRS"
- No Cloud Shell, atualize a regra padrão da política de segurança.
Observação: a prioridade da regra padrão tem um valor numérico de 2147483647.
gcloud compute security-policies rules update 2147483647 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--action "deny-403"
- Como a regra padrão está configurada com a ação "negar", você precisa permitir o acesso do seu IP. Encontre seu IP público (curl, ipmonkey, whatismyip etc.):
MY_IP=$(curl ifconfig.me)
- Adicione a primeira regra para permitir o acesso do seu IP (INSIRA SEU IP ABAIXO):
gcloud compute security-policies rules create 10000 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "allow traffic from my IP" \
--src-ip-ranges "$MY_IP/32" \
--action "allow"
- No Cloud Shell, atualize a política de segurança para bloquear ataques de LFI.
Aplique o conjunto de regras essenciais do OWASP ModSecurity que impede a travessia de caminhos para inclusões de arquivos locais.
gcloud compute security-policies rules create 9000 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "block local file inclusion" \
--expression "evaluatePreconfiguredExpr('lfi-stable')" \
--action deny-403
- No Cloud Shell, atualize a política de segurança para bloquear a execução remota de código (RCE).
De acordo com o conjunto de regras essenciais do OWASP ModSecurity, aplique regras que procurem RCE, incluindo injeção de comandos. Comandos típicos do SO são detectados e bloqueados.
gcloud compute security-policies rules create 9001 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "block rce attacks" \
--expression "evaluatePreconfiguredExpr('rce-stable')" \
--action deny-403
- Atualize a política de segurança para bloquear verificadores de segurança.
Aplique o conjunto de regras essenciais do OWASP ModSecurity para bloquear verificadores de segurança conhecidos, clientes HTTP de scripting e rastreadores da Web.
gcloud compute security-policies rules create 9002 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "block scanners" \
--expression "evaluatePreconfiguredExpr('scannerdetection-stable')" \
--action deny-403
- No Cloud Shell, atualize a política de segurança para bloquear ataques de protocolo.
De acordo com o conjunto de regras essenciais do OWASP ModSecurity, aplique regras que procurem caracteres de retorno de carro (CR) %0d
e quebra de linha (LF) %0a
e outros tipos de ataques de protocolo, como o contrabando de solicitações HTTP.
gcloud compute security-policies rules create 9003 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "block protocol attacks" \
--expression "evaluatePreconfiguredExpr('protocolattack-stable')" \
--action deny-403
- Atualize a política de segurança para bloquear a fixação de sessão.
De acordo com o conjunto de regras essenciais do OWASP ModSecurity, aplique as seguintes regras usando o Cloud Shell:
gcloud compute security-policies rules create 9004 \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--description "block session fixation attacks" \
--expression "evaluatePreconfiguredExpr('sessionfixation-stable')" \
--action deny-403
- Anexe a política de segurança ao serviço de back-end:
gcloud compute backend-services update juice-shop-backend \
--security-policy {{{project_0.startup_script.policy_name| Policy Name}}} \
--global
As regras podem levar algum tempo para serem propagadas (mas não mais de 10 minutos).
- Depois de um tempo suficiente, teste as vulnerabilidades demonstradas anteriormente para confirmar a aplicação da regra do WAF do Cloud Armor na próxima etapa.
Clique em Verificar meu progresso para conferir o objetivo.
Criar a política de segurança do Cloud Armor
Observar a proteção do Cloud Armor com o conjunto de regras essenciais do OWASP ModSecurity
- No Cloud Shell, confirme se a vulnerabilidade de LFI foi mitigada:
curl -Ii http://$PUBLIC_SVC_IP/?a=../
Saída:
HTTP/1.1 403 Forbidden
<...>
- No Cloud Shell, confirme se o ataque de RCE foi mitigado:
curl -Ii http://$PUBLIC_SVC_IP/ftp?doc=/bin/ls
Saída:
HTTP/1.1 403 Forbidden
<..>
- No Cloud Shell, confirme a detecção de um verificador conhecido.
curl -Ii http://$PUBLIC_SVC_IP -H "User-Agent: blackwidow"
Saída:
HTTP/1.1 403 Forbidden
<..>
- No Cloud Shell, confirme que um ataque de protocolo foi mitigado.
De acordo com o conjunto de regras essenciais do OWASP ModSecurity ver. 3.0.2, o ataque de protocolo é mitigado por:
curl -Ii "http://$PUBLIC_SVC_IP/index.html?foo=advanced%0d%0aContent-Length:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContent-Type:%20text/html%0d%0aContent-Length:%2035%0d%0a%0d%0a<html>Sorry,%20System%20Down</html>"
Saída:
HTTP/1.1 403 Forbidden
<..>
- No Cloud Shell, confirme se as tentativas de fixação de sessão foram bloqueadas:
curl -Ii http://$PUBLIC_SVC_IP/?session_id=a
Saída:
HTTP/1.1 403 Forbidden
<..>
Tarefa 5: Revisar as regras de segurança do Cloud Armor
Agora que você criou a política de segurança, confira as regras que foram configuradas.

As regras são avaliadas por prioridade: números menores são avaliados primeiro e, uma vez acionadas, o processamento não continua para regras com valores de prioridade mais altos.
- Prioridade
9000
: bloquear LFI (inclusão de arquivos locais)
- Prioridade
9001
: bloquear RCE (execução remota de código/injeção de comandos)
- Prioridade
9002
: bloquear verificadores detectados
- Prioridade
9003
: bloquear ataques de protocolo, como divisão e contrabando de HTTP
- Prioridade
9004
: bloquear ataques de fixação de sessão
- Prioridade
10000
: permitir que seu IP acesse o site
- Prioridade
Default
: negar.
Observação: a regra "permitir seu IP" está configurada com o número de prioridade mais alto para permitir o acesso ao site, mas bloqueia qualquer ataque.
Tarefa 6: Observar registros de políticas de segurança do Cloud Armor
Na página do console do Cloud Armor, veja os detalhes da política de segurança e clique na guia "Registros" e no link "Ver registros da política" para ser direcionado à página do Cloud Logging. Ele filtra automaticamente com base na política de segurança de interesse, por exemplo, resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:. Observe os códigos de resposta de erro 403 e expanda os detalhes do registro para observar o nome da política de segurança aplicada, o valor do campo correspondente e, mais abaixo, os IDs de expressão pré-configurados (ou o ID da assinatura).
Ele filtra automaticamente com base na política de segurança de interesse, por exemplo, resource.type:(http_load_balancer) AND jsonPayload.enforcedSecurityPolicy.name:().
- Observe os códigos de resposta de erro 403 e expanda os detalhes do registro para observar o nome da política de segurança aplicada, o valor do campo correspondente e, mais abaixo, os IDs de expressão pré-configurados (ou o ID da assinatura).
As capturas de telas a seguir mostram exemplos dos registros das políticas de segurança aplicadas configuradas neste laboratório.
Registro de LFI

Registro de RCE

Registro de detecção de verificadores

Registro de ataques de protocolo

Registro de fixação de sessão

Parabéns!
Você mitigou algumas das vulnerabilidades comuns usando regras do WAF do Google Cloud Armor.
Manual atualizado em 12 de maio de 2025
Laboratório testado em 12 de maio de 2025
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.