Neste artigo, detalhamos a instrumentação e as ferramentas usadas na análise forense para aplicativos implantados no Google Kubernetes Engine (GKE).
Criar e manter um ambiente seguro para seu código, aplicativos e infraestrutura é uma prioridade para qualquer organização. Se ocorrer um incidente de segurança, também será fundamental saber como reagir a ele e investigá-lo.
O Google Cloud simplifica a proteção de aplicativos do GKE fornecendo recursos avançados relacionados à segurança para proteger seu cluster e o ambiente do Google Cloud. Os registros de auditoria do Cloud fornecem detalhes que podem ser usados na análise forense. Juntos, os recursos avançados de segurança e a geração de registros fornecem uma plataforma robusta para proteger os aplicativos do GKE da sua organização.
O objetivo deste artigo é proteger sua infraestrutura do Google Cloud e o código baseado em contêiner no GKE, além de ajudar você a se preparar para um incidente de segurança.
Proteger seu ambiente e se preparar para análise forense com o Google Cloud requer várias etapas importantes:
- Proteger seu ambiente do Google Cloud. Configure o Google Cloud e implante cargas de trabalho usando os controles e a configuração apropriados relacionados à segurança.
- Preparar um plano de resposta a incidentes. Planeje como responder a um incidente de segurança.
- Coletar todos os registros e origens de dados relevantes. Colete registros e dados apropriados sobre seu ambiente do Google Cloud com antecedência e saiba como acessá-los.
- Usar a detecção automática de eventos. Configure a verificação proativa para alertar você sobre possíveis eventos de segurança, configurações incorretas e vulnerabilidades.
- Usar ferramentas analíticas para análise forense. Use as ferramentas de análise para descobrir e documentar um incidente de segurança.
Como proteger seu ambiente do Google Cloud
O Google Cloud oferece uma variedade de configurações e ferramentas que podem ser usadas para proteger sua organização e seus projetos.
- No nível da infraestrutura, políticas do Identity and Access Management (IAM), regras de firewall, identidade de carga de trabalho do GKE e PodSecurityPolicies podem ajudar você a criar um ambiente do Google Cloud com menos privilégios.
- No nível do cluster do GKE, use ferramentas focadas em contêiner, como autorização binária e análise de contêiner, em uma abordagem de segurança em camadas.
- Na camada de rede, recursos como VPCs, balanceadores de carga e Google Cloud Armor fornecem controles relacionados à segurança no tráfego de rede.
- No nível do aplicativo, ferramentas como o Cloud Endpoints e o Identity-Aware Proxy (IAP) fornecem ferramentas para melhorar a segurança dos aplicativos do GKE.
Modelo de responsabilidade compartilhada
A segurança na nuvem é uma responsabilidade compartilhada entre o provedor de nuvem e o cliente. Para ajudar a proteger a infraestrutura subjacente, o Google Cloud criptografia em repouso por padrão e fornece recursos que podem ser usados para ajudar a proteger suas cargas de trabalho, como controles de acesso no IAM e nos registros de auditoria do Cloud. Para o GKE, o Google Cloud protege o plano de controle, e os clientes são responsáveis pela segurança das cargas de trabalho. Para uma discussão detalhada do modelo de segurança compartilhada, consulte a postagem do blog Como explorar a segurança do contêiner: o modelo de responsabilidade compartilhada no GKE.
Segurança do GKE
O Kubernetes e o GKE fornecem vários mecanismos para proteger o cluster e as cargas de trabalho dele. Criar um ambiente com acesso de privilégio mínimo e controles apropriados relacionados à segurança reduz a superfície de ataque. Vários guias fornecem informações detalhadas sobre como proteger o cluster e as cargas de trabalho dele:
- A visão geral de segurança do GKE descreve os mecanismos de segurança disponíveis no GKE para ajudar a proteger o cluster e as cargas de trabalho.
- O guia descritivo de endurecimento da segurança do cluster contém nossas recomendações atuais para proteger o cluster do GKE.
- A série de blogs sobre segurança de contêineres descreve maneiras de criar e executar cargas de trabalho com segurança aprimorada.
Como preparar um plano de resposta a incidentes
Uma resposta eficaz a incidentes é fundamental para gerenciar e se recuperar de incidentes, bem como para evitar incidentes futuros. Para ideias sobre como criar ou melhorar seu plano de resposta a incidentes, consulte o plano de resposta a incidentes do Google Cloud.
As fases a seguir fornecem uma visão geral do processo:
- Identificação. A identificação precoce e precisa dos incidentes é fundamental para um gerenciamento de incidentes forte e eficaz. O foco dessa fase é monitorar eventos de segurança para detectar e relatar possíveis incidentes de dados.
- Coordenação. Quando um incidente é relatado, o responsável responde e avalia a natureza do relatório do incidente para determinar se ele representa um possível incidente de dados e inicia o processo de resposta a incidentes do Google.
- Resolução. Nesta etapa, o foco é investigar a causa raiz, limitar o impacto do incidente, resolver os riscos de segurança imediatos, implementar as correções necessárias como parte da correção e recuperar os sistemas, dados e serviços afetados.
- Melhoria contínua. A cada novo incidente, você recebe novos insights que podem melhorar suas ferramentas, treinamentos e processos.
Seguir o plano e saber quando chamar os especialistas
Antes de iniciar qualquer código em um cluster de produção, é essencial entender o modelo de segurança do aplicativo e da infraestrutura (incluindo o Google Cloud) e criar um plano de resposta a incidentes. No seu plano, inclua um caminho de escalonamento que descreva quais equipes envolver em qual fase da resposta.
Por exemplo, uma resposta a incidente pode começar com a equipe de operações enviando um possível incidente que é classificado posteriormente como um incidente de segurança. O incidente é atribuído aos membros da equipe de segurança apropriados. O plano de resposta a incidentes define quando ligar para profissionais de segurança externos e como envolvê-los. Desenvolver um processo como esse é uma parte essencial da preparação de uma resposta eficaz a incidentes.
Como coletar todos os registros e origens de dados relevantes
Depois de implementar os mecanismos de proteção de segurança necessários para o ambiente do Kubernetes e elaborar um plano de resposta a incidentes, verifique se é possível acessar todas as informações necessárias para análise forense. Comece coletando registros assim que você implantar um aplicativo ou configurar um projeto do Google Cloud. Capturar os registros garante que eles estejam disponíveis se você precisar deles para análise. Em geral, algumas origens de dados são exclusivas dos ambientes do Google Cloud (outras são comuns para contêineres). Ambas as origens são essenciais para manter e disponibilizar para análise.
Registros relacionados à segurança
Os registros fornecem um conjunto de dados avançado para identificar eventos de segurança específicos. Cada uma das origens de registro a seguir fornece detalhes que podem ser usados na análise.
Registros de auditoria do Cloud
Os serviços do Google Cloud gravam registros de auditoria chamados registros de auditoria do Cloud. Esses registros ajudam você a responder às perguntas: "Quem fez o quê, onde e quando?" Há três tipos de registros de auditoria para cada projeto, pasta e organização: atividade do administrador, acesso a dados e evento do sistema. Esses registros ajudam você a entender quais chamadas de API administrativas foram feitas, quais dados foram acessados e quais eventos do sistema ocorreram. Essas informações são essenciais para qualquer análise. Para ver uma lista de serviços do Google Cloud que fornecem registros de auditoria, consulte Serviços do Google com registros de auditoria.
Os registros de auditoria do Cloud para GKE também expõem o Kubernetes Audit Logging (em inglês), que fornece um registro cronológico de chamadas feitas para o servidor da API Kubernetes. Esses registros também são coletados nos registros de auditoria do Cloud.
Registros de aplicativo
O Cloud Logging coleta os registros de saída e de erro padrão do contêiner. É possível
adicionar outros registros usando a
abordagem de arquivo secundário.
Para clusters com o Istio e o Cloud Logging ativados, o
adaptador stackdriver
do Istio
coleta e relata os registros específicos do Istio e os envia para o
Cloud Logging.
Registros de infraestrutura
Os registros de infraestrutura oferecem insights sobre as atividades e os eventos nos níveis de sistema operacional, cluster e rede.
Registros de auditoria do GKE
O GKE envia dois tipos de registros de auditoria: registros de auditoria do GKE e Kubernetes Audit Logging. O Kubernetes grava registros de auditoria no registro de auditoria do Cloud para chamadas feitas ao servidor da API Kubernetes. As entradas de registro de auditoria do Kubernetes são úteis para investigar solicitações de API suspeitas, coletar estatísticas e criar alertas de monitoramento para chamadas de API indesejadas. Além disso, o GKE grava os próprios registros de auditoria que identificam o que ocorre em um cluster do GKE.
Registros de auditoria do Cloud do Compute Engine para nós do GKE
O GKE é executado sobre nós do Compute Engine, que geram os próprios registros de auditoria. Além disso, é possível configurar o auditd para capturar registros do sistema Linux. O auditd fornece informações valiosas, como mensagens de erro, tentativas de login e execuções binárias para os nós do cluster. Os registros de auditoria do Compute Engine e auditd fornecem insights sobre as atividades que ocorrem no nível da infraestrutura de cluster subjacente.
Registros do contêiner
Para registros de contêiner e sistema, o GKE implanta um agente de geração de registros por nó que lê registros de contêiner, adiciona metadados úteis e armazena os registros. O agente de geração de registros verifica se há registros de contêiner nas fontes abaixo:
- Saídas e registros de erros padrão de processos em contêiner
- kubelet e registros de ambiente de execução em contêiner
- Registros de componentes do sistema, como scripts de inicialização de VM
Para eventos, o GKE usa uma implantação no namespace kube-system
que coleta eventos automaticamente e os envia para o Cloud Logging.
Os registros são coletados para clusters, nós, pods e contêineres.
Istio no Google Kubernetes Engine
Para clusters com
Istio,
o
adaptador stackdriver
(em inglês)
é instalado durante a criação do cluster, que envia métricas, registros e dados
do trace da malha para o pacote de operações do Google Cloud.
Auditoria para o Container-Optimized OS no GKE
Para sistemas Linux, o daemon auditd fornece acesso a comandos no nível do sistema operacional e pode fornecer informações valiosas sobre os eventos dentro dos contêineres. No GKE, é possível coletar registros auditd e enviá-los para o Cloud Logging.
Registros de fluxo de VPC
Os registros de fluxo de VPC registram uma amostra de fluxos de rede enviados e recebidos por instâncias de VM. Essas informações são úteis para analisar a comunicação de rede. Os registros de fluxo de VPC incluem todo o tráfego entre pods por meio do recurso de visibilidade intranós no cluster do Kubernetes.
Outros serviços do Google Cloud
Os serviços do Google Cloud geram registros de auditoria do Cloud, e alguns serviços (como o Cloud Load Balancing) geram mais registros. Depois que um serviço é ativado, o Cloud Logging começa a gerar registros. Para os registros de auditoria do Cloud, apenas os registros de atividade do administrador são ativados por padrão. É possível ativar os registros de auditoria para os outros serviços quando eles estiverem ativados.
Snapshots
Os snapshots podem ser úteis para analisar o conteúdo do armazenamento em um determinado ponto. É possível tirar snapshots do armazenamento anexado a um nó de cluster do Google Kubernetes Engine e programá-los em intervalos regulares. Como os snapshots operam no nível do nó do cluster e os nós do cluster podem mudar ao longo do tempo, automatize a captura de snapshots sempre que um nó com novo armazenamento for criado. Ter um snapshot regular do armazenamento do nó garante que você tenha dados de armazenamento disponíveis para análise.
Como usar a detecção automática de eventos
Além dos alertas, a automação é fundamental para monitorar qualquer ambiente em escala. Use as ferramentas do Google Cloud e do Kubernetes para identificar possíveis ameaças e configurações incorretas.
Security Command Center
O Security Command Center é uma plataforma de segurança e risco para o Google Cloud. O Security Command Center pode facilitar a prevenção, a detecção e a resposta a ameaças, coletando dados, identificando ameaças e recomendando ações. Muitas ferramentas de verificação de segurança disponíveis no Google Cloud informam os resultados ao Security Command Center, o que torna essa plataforma útil para a detecção automática. O Security Command Center é uma ferramenta importante para suas equipes de SecOps ou DevSecOps.
Event Threat Detection
O Event Threat Detection foi criado para detectar automaticamente as ameaças mais graves enfrentadas pelas organizações e publicar resultados no Security Command Center. Exemplos de ameaças incluem a adição de usuários e contas de serviço potencialmente mal-intencionados, instâncias do Compute Engine comprometidas e tráfego de rede mal-intencionado. O Event Threat Detection usa a inteligência de código aberto e de código fechado do Google e detecta ameaças em registros disponíveis no Cloud Logging.
Security Health Analytics
O Security Health Analytics é um serviço do Google Cloud que verifica automaticamente vulnerabilidades comuns e configurações incorretas nas ofertas do Google Cloud. O Security Health Analytics pode detectar vulnerabilidades relacionadas a contêineres. As vulnerabilidades incluem a geração de registros ou o monitoramento desativados e a ativação do painel da IU da Web do gerenciamento do Kubernetes. As descobertas são gravadas na Central de comando de segurança.
Segurança Forseti
O projeto de código aberto Forseti pode criar um inventário dos recursos do Google Cloud, verificar o ambiente e definir políticas para aplicar. O Forseti é integrado e pode relatar descobertas ao Security Command Center. Use o Forseti para verificar valores de configuração arbitrários nos clusters do GKE para garantir que eles sejam consistentes com as especificações. Se você estiver usando o Anthos, poderá usar o Anthos Config Management para definir configurações comuns, aplicá-las e monitorar a alteração delas.
kube-hunter
As verificações kube-hunter de segurança nos clusters do Kubernetes são feitas por meio da verificação remota, interna e de rede. Ele pode ser usado no modo interativo ou como teste automatizado de invasão remota para o cluster.
Como usar ferramentas analíticas para análise forense de contêineres
Muitas ferramentas no ecossistema do Google Cloud e do Kubernetes são úteis para análise forense. Esta seção inclui três para referência.
Análise de registro do Google Cloud usando o BigQuery
Os registros de auditoria do Cloud podem ser exportados para o Cloud Storage, o Pub/Sub ou o BigQuery para uma análise mais detalhada. Por exemplo, convém analisar todas as alterações de regras de firewall nos seus projetos do Google Cloud em um determinado período. Para fazer isso, exporte os registros de auditoria do Cloud para o BigQuery. Em seguida, usando o BigQuery, é possível criar uma consulta SQL para retornar essas informações.
Docker-explorer
O Docker-explorer é um projeto que ajuda analistas forenses a explorar sistemas de arquivos off-line do Docker. Essa abordagem pode ser útil quando um contêiner do Docker é comprometido.
Kubectl Sysdig Capture + Sysdig Inspect
O Kubectl Sysdig Capture é um plug-in kubectl de código aberto que aciona uma captura da atividade do sistema em um pod. O Sysdig disponibiliza informações de pod para o Sysdig Inspect, uma ferramenta de código aberto usada para solucionar problemas de contêineres e investigações de segurança. O Sysdig Inspect organiza visualmente a atividade granular do sistema, da rede e do app de um sistema Linux e correlaciona atividades dentro de um pod.
A seguir
- Saiba mais na visão geral de segurança do GKE.
- Confira a série do blog sobre segurança de contêineres.
- Assista à palestra do Cloud Forensics 101 (em inglês) do Next '18.
- Assista à palestra do Container Forensics (em inglês) da KubeCon EU 2019.
- Confira arquiteturas de referência, diagramas e práticas recomendadas do Google Cloud. Confira o Centro de arquitetura do Cloud.