Coletar registros de hosts do AWS EC2

Compatível com:

Neste documento, explicamos como integrar os registros de hosts do AWS EC2 ao Google Security Operations para monitoramento e análise. A integração envolve analisar e mapear registros de host do EC2 para o modelo de dados unificado (UDM, na sigla em inglês), realizar a transformação de dados e criar relações entre hosts e instâncias do EC2. Os registros fornecem informações valiosas sobre as instâncias, propriedades do host, tipos de instância e métricas de desempenho que podem ser usadas para monitoramento de segurança, auditoria e compliance.

Antes de começar

  • Verifique se você tem uma instância do Google SecOps.
  • Verifique se você tem acesso privilegiado à AWS.

Configurar o AWS IAM e o S3

  1. Crie um bucket do Amazon S3 seguindo este guia do usuário: Como criar um bucket.
  2. Salve o Nome e a Região do bucket para uso posterior.
  3. Crie um usuário seguindo este guia: Como criar um usuário do IAM.
  4. Selecione o usuário criado.
  5. Selecione a guia Credenciais de segurança.
  6. Clique em Criar chave de acesso na seção Chaves de acesso.
  7. Selecione Serviço de terceiros como o Caso de uso.
  8. Clique em Próxima.
  9. Opcional: adicione uma tag de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Fazer o download do arquivo CSV para salvar a chave de acesso e a chave de acesso secreta para uso posterior.
  12. Clique em Concluído.
  13. Selecione a guia Permissões.
  14. Clique em Adicionar permissões na seção Políticas de permissões.
  15. Selecione Adicionar permissões.
  16. Selecione Anexar políticas diretamente.
  17. Pesquise e selecione a política AmazonS3FullAccess.
  18. Clique em Próxima.
  19. Clique em Adicionar permissões

Configurar o CloudTrail para o AWS KMS

  1. Faça login no Console de Gerenciamento da AWS.
  2. Na barra de pesquisa, digite e selecione CloudTrail na lista de serviços.
  3. Clique em Criar rastreamento.
  4. Forneça um Nome do rastreamento, por exemplo, EC2-Activity-Trail.
  5. Marque a caixa de seleção Ativar para todas as contas na minha organização.
  6. Digite o URI do bucket do S3 criado anteriormente (o formato deve ser: s3://your-log-bucket-name/) ou crie um novo bucket do S3.
  7. Se o SSE-KMS estiver ativado, forneça um nome para o alias do KMS da AWS ou escolha uma chave do KMS da AWS.
  8. Você pode deixar as outras configurações como padrão.
  9. Clique em Próxima.
  10. Selecione Eventos de gerenciamento e Eventos de dados em Tipos de eventos para capturar a atividade do host do EC2.
  11. Clique em Próxima.
  12. Revise as configurações em Revisar e criar.
  13. Clique em Criar rastreamento.
  14. Opcional: se você criou um bucket, continue com o processo a seguir:
    • Acesse S3.
    • Identifique e selecione o bucket de registros recém-criado.
    • Selecione a pasta AWSLogs.
    • Clique em Copiar URI do S3 e salve.

Configurar um feed no Google SecOps para ingerir hosts do EC2 da AWS

  1. Acesse Configurações do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, insira um nome para o feed, por exemplo, Registros de hosts do AWS EC2.
  4. Selecione Amazon S3 como o Tipo de origem.
  5. Selecione Hosts do AWS EC2 como o Tipo de registro.
  6. Clique em Próxima.
  7. Especifique valores para os seguintes parâmetros de entrada:

    • Região: a região em que o bucket do Amazon S3 está localizado.
    • URI do S3: o URI do bucket.
      • s3://your-log-bucket-name/
        • Substitua your-log-bucket-name pelo nome real do bucket.
    • URI é um: selecione Diretório ou Diretório que inclui subdiretórios.
    • Opções de exclusão de fontes: selecione a opção de exclusão de acordo com sua preferência.

    • ID da chave de acesso: a chave de acesso do usuário com acesso ao bucket do S3.

    • Chave de acesso secreta: a chave secreta do usuário com acesso ao bucket do S3.

    • Namespace do recurso: o namespace do recurso.

    • Rótulos de ingestão: o rótulo a ser aplicado aos eventos deste feed.

  8. Clique em Próxima.

  9. Revise a nova configuração do feed na tela Finalizar e clique em Enviar.

Tabela de mapeamento do UDM

Campo de registro Mapeamento do UDM Lógica
AllocationTime entity.metadata.creation_timestamp O campo AllocationTime é analisado como um carimbo de data/hora e mapeado para o campo creation_timestamp. O analisador tenta vários formatos (aaaa-MM-dd HH:mm:ss, RFC 3339, UNIX, ISO8601).
AllowsMultipleInstanceTypes entity.entity.asset.attribute.labels.value O valor de AllowsMultipleInstanceTypes do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como allows_multiple_instance_types.
AutoPlacement entity.entity.asset.attribute.labels.value O valor de AutoPlacement do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como auto_placement.
AvailabilityZone entity.entity.asset.attribute.cloud.availability_zone O campo AvailabilityZone é mapeado diretamente para o campo availability_zone.
AvailabilityZoneID entity.entity.asset.attribute.labels.value O valor de AvailabilityZoneID do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como availability_zone_id.
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity entity.entity.asset.attribute.labels.value O valor de AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (ou AvailableCapacity.Instance.Available após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como available_instance_capacity_available_capacity.
AvailableCapacity.AvailableInstanceCapacity.InstanceType entity.entity.asset.attribute.labels.value O valor de AvailableCapacity.AvailableInstanceCapacity.InstanceType (ou AvailableCapacity.Instance.Type após a renomeação) é usado como o valor de um rótulo. A chave está definida como available_instance_capacity_instance_type.
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity entity.entity.asset.attribute.labels.value O valor de AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (ou AvailableCapacity.Instance.Total após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como total_capacity.
AvailableCapacity.AvailableVCpus entity.entity.asset.attribute.labels.value O valor de AvailableCapacity.AvailableVCpus (ou AvailableCapacity.VCPUs após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como available_v_cpus.
ClientToken entity.entity.asset.attribute.labels.value O valor de ClientToken do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como client_token.
HostID entity.metadata.product_entity_id O campo HostID (ou ID após a renomeação) é mapeado diretamente para o campo product_entity_id.
HostID entity.entity.asset.asset_id O campo HostID (ou ID após a renomeação) é mapeado diretamente para o campo asset_id.
HostMaintenance entity.entity.asset.attribute.labels.value O valor de HostMaintenance (ou Maintenance após a renomeação) do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como host_maintenance.
HostProperties.Cores entity.entity.asset.hardware.cpu_number_cores O valor de HostProperties.Cores é convertido em um número inteiro sem sinal e mapeado para cpu_number_cores.
HostProperties.InstanceFamily entity.entity.asset.attribute.labels.value O valor de HostProperties.InstanceFamily do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como host_properties_instance_family.
HostProperties.InstanceType entity.entity.asset.attribute.labels.value O valor de HostProperties.InstanceType do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como host_properties_instance_type.
HostProperties.Sockets entity.entity.asset.attribute.labels.value O valor de HostProperties.Sockets é convertido em uma string e usado como o valor de um rótulo. A chave está definida como host_properties_sockets.
HostProperties.TotalVCpus entity.entity.asset.attribute.labels.value O valor de HostProperties.TotalVCpus (ou HostProperties.TotalVCPUs após a mudança de nome) é convertido em uma string e usado como o valor de um marcador. A chave está definida como host_properties_total_v_cpus.
HostRecovery entity.entity.asset.attribute.labels.value O valor de HostRecovery (ou Recovery após a renomeação) do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como host_recovery.
HostReservationID entity.entity.asset.attribute.labels.value O valor de HostReservationID (ou ReservationID após a renomeação) do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como host_reservation_id.
MemberOfServiceLinkedResourceGroup entity.entity.asset.attribute.labels.value O valor de MemberOfServiceLinkedResourceGroup é convertido em uma string e usado como o valor de um rótulo. A chave está definida como member_of_service_linked_resource_group.
OwnerID entity.entity.asset.attribute.labels.value O valor de OwnerID do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como owner_id.
ReleaseTime entity.entity.asset.attribute.labels.value O valor de ReleaseTime do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como release_time.
State entity.entity.asset.attribute.labels.value O valor de State do registro bruto é usado como o valor de um rótulo. A chave desse rótulo é definida como state.
TagSet entity.entity.asset.attribute.labels A matriz TagSet é iterada, e o Key e o Value de cada tag são usados como a chave e o valor de um rótulo, respectivamente. O valor AMAZON_WEB_SERVICES é atribuído a esse campo pelo analisador. O collection_time do registro bruto é mapeado para o campo collected_timestamp. O valor ASSET é atribuído a esse campo pelo analisador. O valor AWS EC2 HOSTS é atribuído a esse campo pelo analisador. O valor AWS é atribuído a esse campo pelo analisador. As relações são derivadas dos campos Instances e OutpostArn, mas esses campos não são mapeados diretamente para o objeto IDM. A lógica do analisador cria objetos de relação com base nesses campos e os mescla na matriz relations.
collection_time entity.metadata.collected_timestamp O collection_time do registro é usado como o collected_timestamp do evento.

Precisa de mais ajuda? Receba respostas de membros da comunidade e profissionais do Google SecOps.