Recolha registos de anfitriões do AWS EC2

Compatível com:

Este documento explica como integrar os registos de anfitriões do AWS EC2 no Google Security Operations para monitorização e análise. A integração envolve a análise e o mapeamento dos registos do anfitrião do EC2 para o modelo de dados unificado (UDM), a realização da transformação de dados e a criação de relações entre anfitriões e instâncias do EC2. Os registos fornecem informações valiosas sobre as instâncias, as propriedades do anfitrião, os tipos de instâncias e as métricas de desempenho que podem ser usadas para monitorização de segurança, auditoria e conformidade.

Antes de começar

  • Certifique-se de que tem uma instância do Google SecOps.
  • Certifique-se de que tem acesso privilegiado à AWS.

Configure o AWS IAM e o S3

  1. Crie um contentor do Amazon S3 seguindo este guia do utilizador: Criar um contentor.
  2. Guarde o Nome e a Região do contentor para utilização posterior.
  3. Crie um utilizador seguindo este guia do utilizador: Criar um utilizador do IAM.
  4. Selecione o utilizador criado.
  5. Selecione o separador Credenciais de segurança.
  6. Clique em Criar chave de acesso na secção Chaves de acesso.
  7. Selecione Serviço de terceiros como o Exemplo de utilização.
  8. Clicar em Seguinte.
  9. Opcional: adicione uma etiqueta de descrição.
  10. Clique em Criar chave de acesso.
  11. Clique em Transferir ficheiro CSV para guardar a chave de acesso e a chave de acesso secreta para utilização posterior.
  12. Clique em Concluído.
  13. Selecione o separador Autorizações.
  14. Clique em Adicionar autorizações na secção Políticas de autorizações.
  15. Selecione Adicionar autorizações.
  16. Selecione Anexar políticas diretamente
  17. Pesquise e selecione a política AmazonS3FullAccess.
  18. Clicar em Seguinte.
  19. Clique em Adicionar autorizações.

Configure o CloudTrail para o AWS KMS

  1. Inicie sessão na AWS Management Console.
  2. Na barra de pesquisa, escreva e selecione CloudTrail na lista de serviços.
  3. Clique em Criar trilho.
  4. Indique um nome do rasto; por exemplo, EC2-Activity-Trail.
  5. Selecione a caixa de verificação Ativar para todas as contas na minha organização.
  6. Escreva o URI do contentor do S3 criado anteriormente (o formato deve ser: s3://your-log-bucket-name/) ou crie um novo contentor do S3.
  7. Se a SSE-KMS estiver ativada, indique um nome para o alias do AWS KMS ou escolha uma chave do AWS KMS existente.
  8. Pode deixar as outras definições como predefinições.
  9. Clicar em Seguinte.
  10. Selecione Eventos de gestão e Eventos de dados em Tipos de eventos para capturar a atividade do anfitrião do EC2.
  11. Clicar em Seguinte.
  12. Reveja as definições em Rever e criar.
  13. Clique em Criar trilho.
  14. Opcional: se criou um novo contentor, continue com o processo seguinte:
    • Aceda ao S3.
    • Identifique e selecione o contentor de registos recém-criado.
    • Selecione a pasta AWSLogs.
    • Clique em Copiar URI do S3 e guarde-o.

Configure um feed no Google SecOps para carregar hosts do AWS EC2

  1. Aceda a Definições do SIEM > Feeds.
  2. Clique em Adicionar novo.
  3. No campo Nome do feed, introduza um nome para o feed; por exemplo, Registos de anfitriões do AWS EC2.
  4. Selecione Amazon S3 V2 como o Tipo de origem.
  5. Selecione AWS EC2 Hosts como o Tipo de registo.
  6. Clicar em Seguinte.
  7. Especifique valores para os seguintes parâmetros de entrada:

    • URI do S3: o URI do contentor.
      • s3://your-log-bucket-name/
        • Substitua your-log-bucket-name pelo nome real do contentor.
    • Opções de eliminação da origem: selecione a opção de eliminação de acordo com a sua preferência.

    • Idade máxima do ficheiro: inclua ficheiros modificados no último número de dias. A predefinição é 180 dias.

    • ID da chave de acesso: a chave de acesso do utilizador com acesso ao contentor do S3.

    • Chave de acesso secreta: a chave secreta do utilizador com acesso ao contentor do S3.

    • Espaço de nomes do recurso: o espaço de nomes do recurso.

    • Etiquetas de carregamento: a etiqueta a aplicar aos eventos deste feed.

  8. Clicar em Seguinte.

  9. Reveja a nova configuração do feed no ecrã Finalizar e, de seguida, clique em Enviar.

Tabela de mapeamento da UDM

Campo de registo Mapeamento de UDM Lógica
AllocationTime entity.metadata.creation_timestamp O campo AllocationTime é analisado como uma 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 registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como allows_multiple_instance_types.
AutoPlacement entity.entity.asset.attribute.labels.value O valor de AutoPlacement do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como auto_placement.
AvailabilityZone entity.entity.asset.attribute.cloud.availability_zone O campo AvailabilityZone está diretamente mapeado para o campo availability_zone.
AvailabilityZoneID entity.entity.asset.attribute.labels.value O valor de AvailabilityZoneID do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla 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 mudança do nome) é usado como o valor de uma etiqueta. A tecla 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla está definida como available_v_cpus.
ClientToken entity.entity.asset.attribute.labels.value O valor de ClientToken do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como client_token.
HostID entity.metadata.product_entity_id O campo HostID (ou ID após a mudança do nome) é mapeado diretamente para o campo product_entity_id.
HostID entity.entity.asset.asset_id O campo HostID (ou ID após a mudança do nome) é mapeado diretamente para o campo asset_id.
HostMaintenance entity.entity.asset.attribute.labels.value O valor de HostMaintenance (ou Maintenance após a mudança do nome) do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_maintenance.
HostProperties.Cores entity.entity.asset.hardware.cpu_number_cores O valor de HostProperties.Cores é convertido num 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 registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_properties_instance_family.
HostProperties.InstanceType entity.entity.asset.attribute.labels.value O valor de HostProperties.InstanceType do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_properties_instance_type.
HostProperties.Sockets entity.entity.asset.attribute.labels.value O valor de HostProperties.Sockets é convertido numa string e usado como o valor de uma etiqueta. A tecla 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 do nome) é convertido numa string e usado como o valor de uma etiqueta. A tecla está definida como host_properties_total_v_cpus.
HostRecovery entity.entity.asset.attribute.labels.value O valor de HostRecovery (ou Recovery após a mudança do nome) do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_recovery.
HostReservationID entity.entity.asset.attribute.labels.value O valor de HostReservationID (ou ReservationID após a mudança do nome) do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como host_reservation_id.
MemberOfServiceLinkedResourceGroup entity.entity.asset.attribute.labels.value O valor de MemberOfServiceLinkedResourceGroup é convertido numa string e usado como o valor de uma etiqueta. A tecla está definida como member_of_service_linked_resource_group.
OwnerID entity.entity.asset.attribute.labels.value O valor de OwnerID do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como owner_id.
ReleaseTime entity.entity.asset.attribute.labels.value O valor de ReleaseTime do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como release_time.
State entity.entity.asset.attribute.labels.value O valor de State do registo não processado é usado como o valor de uma etiqueta. A chave desta etiqueta está definida como state.
TagSet entity.entity.asset.attribute.labels A matriz TagSet é iterada e os elementos Key e Value de cada etiqueta são usados como a chave e o valor de uma etiqueta, respetivamente. O valor AMAZON_WEB_SERVICES é atribuído a este campo pelo analisador. O collection_time do registo não processado é mapeado para o campo collected_timestamp. O valor ASSET é atribuído a este campo pelo analisador. O valor AWS EC2 HOSTS é atribuído a este campo pelo analisador. O valor AWS é atribuído a este campo pelo analisador. As relações são derivadas dos campos Instances e OutpostArn, mas estes campos não são mapeados diretamente para o objeto IDM. A lógica do analisador cria objetos de relação com base nestes campos e junta-os à matriz relations.
collection_time entity.metadata.collected_timestamp O collection_time do registo é usado como o collected_timestamp do evento.

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