Checkpoints
Build GCP networking footprint
/ 15
Create Cloud Firewall Rules and CloudNAT
/ 15
Create a CloudRouter and Configure a CloudNAT
/ 20
Create Virtual Machines
/ 20
Create Internal LoadBalancer
/ 20
Configure Packet Mirror Policy
/ 10
Espelhamento de pacotes do Google Cloud com um IDS de código aberto
- GSP474
- Visão geral
- Descrição do laboratório sobre Espelhamento de pacotes
- Configuração e requisitos
- Tarefa 1: criar uma base de rede
- Tarefa 2: criar regras de firewall e um Cloud NAT
- Tarefa 3: criar máquinas virtuais
- Tarefa 4: criar um balanceador de carga interno
- Tarefa 5: instalar o IDS de código aberto Suricata
- Tarefa 6: configurar e analisar o Suricata
- Tarefa 7: configurar a política de Espelhamento de pacotes
- Tarefa 8: testar o Espelhamento de pacotes
- Tarefa 9: testar a inspeção e os alertas do IDS do Suricata
- Parabéns!
GSP474
Visão geral
O espelhamento de tráfego é um recurso importante na rede do Google Cloud para a análise e a segurança. Esse recurso tem funcionalidades semelhantes à de um TAP de rede ou uma sessão de SPAN em uma rede tradicional. Em resumo, o Espelhamento de pacotes captura o tráfego de rede (entrada e saída) de determinadas origens espelhadas, faz uma cópia e a encaminha para coletores.
O Espelhamento de pacotes captura todo o payload de cada pacote, por isso consome mais largura de banda. Como esse processo não se baseia em um período de amostragem, ele pode ser usado para melhorar a solução de problemas, as soluções de segurança e a análise com base em aplicativos de camadas.
O Espelhamento de pacotes depende de uma política de Espelhamento de pacotes que tem os atributos a seguir:
- Região
- Redes VPC
- Origens espelhadas
- Coletor (destino)
- Tráfego espelhado (filtro)
Veja alguns pontos importantes que também precisam ser considerados:
- Somente os tráfegos TCP, UDP e ICMP podem ser espelhados. Isso atende à maioria dos casos de uso.
- As origens espelhadas e os coletores devem estar na mesma região, mas podem estar em zonas diferentes e até mesmo em VPCs diferentes, desde que elas estejam devidamente pareadas.
- Há cobrança adicional de largura de banda, principalmente entre zonas. É possível usar filtros para limitar o tráfego que está sendo espelhado.
Um dos principais casos de uso do Espelhamento de pacotes é em soluções de Sistema de detecção de intrusões (IDS). Com algumas soluções de IDS baseadas em nuvem, é preciso executar um serviço especial em cada VM de origem ou colocar um dispositivo virtual IDS in-line entre a origem e o destino da rede. Nos dois casos, é necessário considerar aspectos importantes. Por exemplo, a solução baseada em serviço, embora totalmente distribuída, precisa de um sistema operacional convidado que ofereça suporte ao software. A solução in-line pode criar um gargalo porque todo o tráfego de rede precisa passar pelo dispositivo IDS. Com a solução in-line, também não é possível capturar o tráfego "de leste a oeste" nas VMs da mesma VPC.
O Espelhamento de pacotes do Google Cloud não requer o uso de software adicional nas VMs e é totalmente distribuído em cada uma das máquinas virtuais espelhadas. O IDS do coletor é desviado do caminho com um balanceador de carga de rede interno (ILB, na sigla em inglês) e recebe o tráfego "de norte a sul" e "de leste a oeste".
Descrição do laboratório sobre Espelhamento de pacotes
Para demonstrar como o Espelhamento de pacotes pode ser usado com um IDS, veja este exemplo com o IDS de código aberto Suricata.
- Uma única VPC com duas sub-redes, uma para origens espelhadas e outra para o coletor
- Dois servidores da Web criados com um endereço IP público
- Um servidor de coletor (IDS) criado sem IP público por motivos de segurança
- Um Cloud NAT ativado para acesso à Internet conforme necessário
- Todas as VMs criadas na mesma região e zona, por motivos de custo e simplicidade
Neste laboratório, você vai criar um ambiente do Google Cloud, definir o ILB do coletor, configurar a política de Espelhamento de pacotes, além de instalar e configurar o [Suricata] (https://suricata-ids.org/) em uma instância virtual para atuar como um IDS. Depois disso, testes de rede serão feitos para validar a configuração e o uso do Espelhamento de pacotes com o IDS de código aberto. Usaremos uma configuração bastante reduzida do Suricata e do conjunto de regras para simplificar a demonstração.
Objetivos:
- Criar um ambiente de rede do Google Cloud como mostrado no diagrama acima
- Criar duas máquinas virtuais com comandos
gcloud
para atuar como servidores da Web - Criar uma única máquina virtual com comandos
gcloud
para atuar como IDS - Criar um balanceador de carga interno (ILB) para atuar como um coletor para o Espelhamento de pacotes
- Instalar e configurar um IDS de código aberto (Suricata) na VM do IDS
- Analisar algumas regras básicas de alerta do IDS
- Criar uma política de Espelhamento de pacotes
- Testar o Espelhamento de pacotes gerando tráfego de rede para a sub-rede espelhada
- Testar o IDS Suricata gerando tráfego de rede para simular um evento de IDS e analisar a geração de registros do IDS
Configuração e requisitos
Antes de clicar no botão Start Lab
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o 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, 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).
- Tempo para concluir o laboratório---não se esqueça: depois de começar, não será possível pausar o laboratório.
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, você verá um pop-up para 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 | "Nome de usuário"}}} Você também encontra o Nome de usuário no painel Detalhes do laboratório.
-
Clique em Seguinte.
-
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
{{{user_0.password | "Senha"}}} Você também encontra a Senha no painel Detalhes do laboratório.
-
Clique em Seguinte.
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.
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.
Depois de se conectar, vai notar 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:
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:
-
Clique em Autorizar.
-
A saída será parecida com esta:
Saída:
- (Opcional) É possível listar o ID do projeto usando este comando:
Saída:
Exemplo de saída:
gcloud
, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.
Tarefa 1: criar uma base de rede
Nesta seção, você criará uma VPC e duas sub-redes dentro dela. Para isso, você vai usar os comandos da CLI gcloud
no Google Cloud Shell.
- Execute o comando a seguir para criar uma rede privada virtual:
- Adicione uma sub-rede à VPC para tráfego espelhado em
:
- Adicione uma sub-rede à VPC para o coletor em
:
Clique em Verificar meu progresso para conferir o objetivo.
Tarefa 2: criar regras de firewall e um Cloud NAT
Serão necessárias três regras de firewall para concluir este laboratório.
- A regra 1 libera a porta HTTP padrão (TCP 80) e o protocolo ICMP para as VMs de todas as origens.
- A regra 2 permite que o IDS receba todo o tráfego de todas as origens. Tenha cuidado para NÃO fornecer um IP público à VM do IDS nas próximas seções.
- A regra nº 3 permite a porta TCP 22 do intervalo de IP "Google Cloud IAP Proxy" para TODAS as VMs, possibilitando conexões via SSH às VMs pelo console do Cloud
Execute os comandos a seguir para criar as regras de firewall:
Clique em Verificar meu progresso para conferir o objetivo.
Crie um Cloud Router
- Como pré-requisito do Cloud NAT, é necessário configurar o Cloud Router na respectiva região:
Configure um Cloud NAT
- Para que as VMs tenham acesso à Internet sem um IP público, você precisa criar um Cloud NAT na respectiva região:
A VM do IDS será criada sem um IP público para impedir o acesso a ela pela Internet. No entanto, o acesso à Internet será necessário para o download das atualizações e a instalação dos pacotes do Suricata.
Clique em Verificar meu progresso para conferir o objetivo.
Tarefa 3: criar máquinas virtuais
Crie um modelo de instância para um servidor da Web
- Este modelo prepara um servidor Ubuntu em
e instala um serviço da Web simples:
Crie um grupo gerenciado de instâncias para os servidores da Web
- O comando vai usar o modelo de instância da etapa anterior para criar dois servidores da Web:
Crie um modelo de instância para a VM do IDS
- Este modelo prepara um servidor Ubuntu em
sem IP público:
Crie um grupo gerenciado de instâncias para a VM do IDS
- O comando vai usar o modelo de instância da etapa anterior para criar uma VM que será configurada como seu IDS. Vamos abordar a instalação do Suricata em outra seção.
Clique em Verificar meu progresso para conferir o objetivo.
Tarefa 4: criar um balanceador de carga interno
O Espelhamento de pacotes usa um balanceador de carga interno (ILB, na sigla em inglês) para encaminhar o tráfego espelhado a um grupo de coletores. Nesse caso, o grupo contém uma única VM.
- Crie uma verificação de integridade básica para os serviços de back-end:
- Crie um grupo de serviços de back-end para ser usado em um ILB:
- Acrescente o grupo gerenciado de instâncias do IDS ao grupo de serviços de back-end criado na etapa anterior:
- Crie uma regra de encaminhamento de front-end para atuar como endpoint de coleta:
--is-mirroring-collector,
foi definido.
Clique em Verificar meu progresso para conferir o objetivo.
Tarefa 5: instalar o IDS de código aberto Suricata
Observação: nas próximas duas seções, você terá que usar o SSH na VM do IDS e executar os comandos no shell. Tome cuidado e não execute os comandos no Cloud Shell.
Execute SSH na VM do IDS
-
No menu de navegação do console do Cloud, acesse Compute Engine > Instâncias de VM.
-
Clique no botão SSH da VM do IDS.
Isso abre uma janela onde é possível executar comandos dentro da VM do IDS.
- Atualize a VM do IDS:
- Instale as dependências do Suricata:
- Instale o Suricata:
Verifique a instalação
- Use o comando a seguir para verificar a instalação e a versão instalada do Suricata:
A resposta será semelhante a:
Tarefa 6: configurar e analisar o Suricata
Também é preciso executar os comandos e etapas da seção a seguir dentro do SSH da VM do IDS/Suricata.
- Pare o serviço do Suricata e faça backup do arquivo de configuração padrão:
Faça o download e substitua o novo arquivo de configuração do Suricata e o de regras resumidas
O novo arquivo de configuração atualiza a interface do coletor e só envia alertas sobre um conjunto de tráfego muito pequeno, como configurado nos arquivos my.rules
e suricata.yaml
. Os padrões dos conjuntos de regras e alertas do Suricata são abrangentes demais e desnecessários para este laboratório.
- Execute os comandos a seguir para copiar os arquivos:
Inicie o serviço do Suricata
Às vezes, é preciso reiniciar o serviço. Por isso, o comando restart
está incluído nesta etapa:
Analise as regras simples do Suricata para testes
As regras do Suricata foram reduzidas a apenas quatro neste laboratório. No entanto, o conjunto de regras é bem maior na instalação padrão do Suricata.
- Neste exercício, o alerta foi reduzido a uma lista simples e concisa para facilitar o teste de cada uma delas.
A resposta deve mostrar o total de quatro regras, com a descrição de cada uma delas.
/etc/suricata/rules/
ou /var/lib/suricata/rules
. Na etapa 2 deste laboratório, outro local foi definido.
Tarefa 7: configurar a política de Espelhamento de pacotes
Nesta seção do laboratório, volte para o Cloud Shell
É possível configurar a política do Espelhamento de pacotes com um simples comando ou executar um assistente na GUI. No comando, você especifica os cinco atributos mencionados na seção "Descrição do laboratório sobre Espelhamento de pacotes".
- Região
- Redes VPC
- Origens espelhadas
- Coletor (destino)
- Tráfego espelhado (filtro)
Observe que o tráfego espelhado não é mencionado. Isso se deve à configuração da política para espelhar todo o tráfego, e não é necessário usar filtros. A política espelha o tráfego de entrada e saída e o encaminha ao dispositivo de IDS do Suricata, que faz parte do ILB do coletor.
- Configure a política de Espelhamento de pacotes executando o código a seguir no Cloud Shell:
Agora a configuração do Suricata e o Espelhamento de pacotes já devem estar prontos. As seções a seguir testarão ambos.
Clique em Verificar meu progresso para conferir o objetivo.
Tarefa 8: testar o Espelhamento de pacotes
Nesta etapa, você terá que acessar o shell da VM do IDS. Use a janela do shell se ela ainda estiver aberta. Caso contrário, você vai precisar se reconectar.
Você também usará o Cloud Shell como cliente de Internet.
Reserve uns minutos para identificar o IP externo das duas VMs da Web.
No console do Cloud, no Menu de navegação, clique em Compute Engine > instâncias de VM e anote os IPs externos de cada VM da Web. Use os nomes [PUBLIC_IP_WEB1] e [PUBLIC_IP_WEB2], respectivamente.
Também é possível usar comandos gcloud
no Cloud Shell para coletar as mesmas informações:
Volte ao shell da VM do IDS
Teste o Espelhamento de pacotes
- Execute uma captura de pacote (tcpdump) na VM do IDS/Suricata com os filtros abaixo:
Gere tráfego para a sub-rede "espelhada"
- Use o terminal do Cloud Shell para dar um ping no endereço público atribuído a WEB1, substituindo [PUBLIC_IP_WEB1] pelo endereço IP público de "WEB1", que pode ser observado no console do Cloud:
O Espelhamento de pacotes precisa duplicar e encaminhar o tráfego para a VM do IDS. Isso pode ser observado na captura de pacote da Etapa 1. A resposta na VM do IDS deve ser parecida com esta, em que XXXX é o endereço IP de origem das solicitações ICMP. Na resposta do tcpdump, você deve ver o IP privado do servidor da Web. O Google Cloud traduz a rede na borda.
A mesma coisa vai acontecer se você der um ping no endereço público de WEB2.
- Para fazer isso, substitua [PUBLIC_IP_WEB2] pelo endereço IP público de WEB2.
O Espelhamento de pacotes vai encaminhar o tráfego para a VM do IDS. Isso pode ser observado na captura de pacote da Etapa 1. A resposta na VM do IDS será parecida com esta: Na resposta do tcpdump, você verá o IP privado do servidor da Web. O Google Cloud traduz a rede na borda.
Para demonstrar melhor como o Espelhamento de pacotes não exibe apenas os cabeçalhos de camada 3, o teste a seguir vai mostrar um HTTP GET padrão para um dos servidores da Web, incluindo o handshake TCP inicial de três vias.
-
Abra uma nova guia no navegador e o endereço público atribuído a WEB1 com o protocolo HTTP. Se preferir, use o utilitário "curl" do Console do Cloud.
-
Substitua [PUBLIC_IP_WEB1] pelo endereço IP público de "WEB1"
O Espelhamento de pacotes vai encaminhar o tráfego para a VM do IDS. Isso pode ser observado na captura de pacote da Etapa 1.
A resposta na VM do IDS será parecida com esta:
- O mesmo vai acontecer se você acessar o endereço público de WEB2. Substitua [PUBLIC_IP_WEB2] pelo endereço IP público de "WEB2"
O Espelhamento de pacotes vai encaminhar o tráfego para a VM do IDS. Isso pode ser observado na captura de pacote da Etapa 1.
A resposta na VM do IDS será parecida com esta:
Pressione ctrl+c
na VM do IDS para sair do tcpdump.
Tarefa 9: testar a inspeção e os alertas do IDS do Suricata
A seção final deste laboratório aborda o teste da integração do Espelhamento de pacotes com o IDS de código aberto Suricata. Dê uma conferida nas quatro regras do Suricata definidas para alertas mencionadas na etapa 4 da seção "Configurar e analisar o Suricata":
Nas quatro etapas a seguir, você vai gerar o tráfego de rede para acionar cada uma dessas regras. Os alertas de cada uma delas podem ser observados no arquivo do log de eventos do Suricata.
TEST1 e TEST2 serão iniciados pelo servidor da Web para testar o tráfego de saída.
TEST3 e TEST4 serão iniciados no Cloud Shell para testar o tráfego de entrada.
TEST 1: teste a regra/o alerta de saída UDP
- Execute o comando a seguir em um dos servidores da Web para gerar o tráfego DNS de saída:
- Agora confira o alerta no arquivo do log de eventos do Suricata na VM do IDS.
Alterne para a janela SSH da VM do IDS
- Execute o comando a seguir na janela SSH da VM IDS:
A entrada de registro será parecida com esta:
TEST 2: teste a regra/o alerta TCP de saída
- Execute o comando a seguir em um dos servidores da Web para gerar o tráfego TCP de saída, substituindo [PUBLIC_IP_WEB2] pelo endereço IP público de WEB2:
-
Pressione
ctrl+c
para sair. -
Agora confira o alerta no arquivo do log de eventos do Suricata na VM do IDS.
Alterne para a janela SSH da VM do IDS
- Execute o comando a seguir na janela de SSH da VM do IDS:
A entrada de registro será parecida com esta:
TEST 3: teste a regra/o alerta ICMP de entrada
-
Execute o comando a seguir no Cloud Shell para gerar o tráfego ICMP de entrada.
-
Substitua [PUBLIC_IP_WEB1] pelo endereço IP público de WEB1.
- Agora confira o alerta no arquivo do log de eventos do Suricata na VM do IDS:
A entrada de registro será parecida com esta:
TEST 4: teste a regra/o alerta HTTP de entrada
No navegador da Web da sua estação de trabalho local ou no curl
do Cloud Shell, procure o endereço público atribuído a WEB1 para a página index.php usando o protocolo HTTP.
- Substitua [PUBLIC_IP_WEB1] pelo endereço IP público de WEB1.
- Agora confira o alerta no arquivo do log de eventos do Suricata na VM do IDS:
A entrada de registro será parecida com esta:
Parabéns!
Chegamos ao fim do laboratório sobre o uso do Espelhamento de pacotes do Google Cloud com o IDS de código aberto Suricata.
Próximas etapas / Saiba mais
Veja mais informações sobre o Espelhamento de pacotes em:
Para mais informações sobre o Suricata, acesse https://suricata-ids.org/
Treinamento e certificação do Google Cloud
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 18 de novembro de 2024
Laboratório testado em 6 de setembro de 2023
Copyright 2024 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.