Recoger registros de hosts de AWS EC2

Disponible en:

En este documento se explica cómo integrar los registros de hosts de AWS EC2 en Google Security Operations para monitorizarlos y analizarlos. La integración implica analizar y asignar registros de host de EC2 al modelo de datos unificado (UDM), transformar los datos y crear relaciones entre los hosts y las instancias de EC2. Los registros proporcionan información valiosa sobre las instancias, las propiedades del host, los tipos de instancia y las métricas de rendimiento que se pueden usar para la monitorización de la seguridad, la auditoría y el cumplimiento.

Antes de empezar

  • Asegúrate de que tienes una instancia de Google SecOps.
  • Asegúrate de que tienes acceso con privilegios a AWS.

Configurar AWS IAM y S3

  1. Crea un segmento de Amazon S3 siguiendo esta guía de usuario: Crear un segmento.
  2. Guarda el nombre y la región del bucket para usarlos más adelante.
  3. Crea un usuario siguiendo esta guía: Crear un usuario de gestión de identidades y accesos.
  4. Selecciona el usuario creado.
  5. Selecciona la pestaña Credenciales de seguridad.
  6. En la sección Claves de acceso, haz clic en Crear clave de acceso.
  7. Selecciona Servicio de terceros como Caso práctico.
  8. Haz clic en Siguiente.
  9. Opcional: añade una etiqueta de descripción.
  10. Haz clic en Crear clave de acceso.
  11. Haz clic en Descargar archivo CSV para guardar la clave de acceso y la clave de acceso secreta para usarlas más adelante.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. En la sección Políticas de permisos, haz clic en Añadir permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca y selecciona la política AmazonS3FullAccess.
  18. Haz clic en Siguiente.
  19. Haz clic en Añadir permisos.

Configurar CloudTrail para AWS KMS

  1. Inicia sesión en la consola de administración de AWS.
  2. En la barra de búsqueda, escriba y seleccione CloudTrail en la lista de servicios.
  3. Haz clic en Crear recorrido.
  4. Proporciona un nombre de ruta; por ejemplo, EC2-Activity-Trail.
  5. Selecciona la casilla Habilitar en todas las cuentas de mi organización.
  6. Escribe el URI del segmento de S3 que has creado antes (el formato debe ser s3://your-log-bucket-name/) o crea un segmento de S3.
  7. Si SSE-KMS está habilitado, proporciona un nombre para el alias de KMS de AWS o elige una clave de KMS de AWS.
  8. Puedes dejar el resto de los ajustes como predeterminados.
  9. Haz clic en Siguiente.
  10. Seleccione Eventos de gestión y Eventos de datos en Tipos de eventos para registrar la actividad del host de EC2.
  11. Haz clic en Siguiente.
  12. Revisa los ajustes en Revisar y crear.
  13. Haz clic en Crear recorrido.
  14. Opcional: Si has creado un nuevo contenedor, sigue estos pasos:
    • Ve a S3.
    • Identifica y selecciona el segmento de registro que acabas de crear.
    • Selecciona la carpeta AWSLogs.
    • Haz clic en Copiar URI de S3 y guárdalo.

Configurar un feed en Google SecOps para ingerir hosts de AWS EC2

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en Añadir nuevo.
  3. En el campo Nombre del feed, introduce un nombre para el feed. Por ejemplo, Registros de hosts de AWS EC2.
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Seleccione AWS EC2 Hosts (Hosts de AWS EC2) como Log type (Tipo de registro).
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:

    • URI de S3: el URI del segmento.
      • s3://your-log-bucket-name/
        • Sustituye your-log-bucket-name por el nombre real del segmento.
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.

    • Antigüedad máxima del archivo: incluye los archivos modificados en los últimos días. El valor predeterminado es de 180 días.

    • ID de clave de acceso: la clave de acceso del usuario con acceso al segmento de S3.

    • Clave de acceso secreta: la clave secreta del usuario con acceso al segmento de S3.

    • Espacio de nombres de recursos: el espacio de nombres de recursos.

    • Etiquetas de ingestión: etiqueta que se aplicará a los eventos de este feed.

  8. Haz clic en Siguiente.

  9. Revise la configuración de la nueva fuente en la pantalla Finalizar y, a continuación, haga clic en Enviar.

Tabla de asignación de UDM

Campo de registro Asignación de UDM Lógica
AllocationTime entity.metadata.creation_timestamp El campo AllocationTime se analiza como una marca de tiempo y se asigna al campo creation_timestamp. El analizador intenta usar varios formatos (aaaa-MM-dd HH:mm:ss, RFC 3339, UNIX e ISO8601).
AllowsMultipleInstanceTypes entity.entity.asset.attribute.labels.value El valor de AllowsMultipleInstanceTypes del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es allows_multiple_instance_types.
AutoPlacement entity.entity.asset.attribute.labels.value El valor de AutoPlacement del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es auto_placement.
AvailabilityZone entity.entity.asset.attribute.cloud.availability_zone El campo AvailabilityZone se asigna directamente al campo availability_zone.
AvailabilityZoneID entity.entity.asset.attribute.labels.value El valor de AvailabilityZoneID del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es availability_zone_id.
AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity entity.entity.asset.attribute.labels.value El valor de AvailableCapacity.AvailableInstanceCapacity.AvailableCapacity (o AvailableCapacity.Instance.Available después de cambiarle el nombre) se convierte en una cadena y se usa como valor de una etiqueta. La tecla está configurada como available_instance_capacity_available_capacity.
AvailableCapacity.AvailableInstanceCapacity.InstanceType entity.entity.asset.attribute.labels.value El valor de AvailableCapacity.AvailableInstanceCapacity.InstanceType (o AvailableCapacity.Instance.Type después de cambiarle el nombre) se usa como valor de una etiqueta. La tecla está configurada como available_instance_capacity_instance_type.
AvailableCapacity.AvailableInstanceCapacity.TotalCapacity entity.entity.asset.attribute.labels.value El valor de AvailableCapacity.AvailableInstanceCapacity.TotalCapacity (o AvailableCapacity.Instance.Total después de cambiarle el nombre) se convierte en una cadena y se usa como valor de una etiqueta. La tecla está configurada como total_capacity.
AvailableCapacity.AvailableVCpus entity.entity.asset.attribute.labels.value El valor de AvailableCapacity.AvailableVCpus (o AvailableCapacity.VCPUs después de cambiarle el nombre) se convierte en una cadena y se usa como valor de una etiqueta. La tecla está configurada como available_v_cpus.
ClientToken entity.entity.asset.attribute.labels.value El valor de ClientToken del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es client_token.
HostID entity.metadata.product_entity_id El campo HostID (o ID después de cambiarle el nombre) se asigna directamente al campo product_entity_id.
HostID entity.entity.asset.asset_id El campo HostID (o ID después de cambiarle el nombre) se asigna directamente al campo asset_id.
HostMaintenance entity.entity.asset.attribute.labels.value El valor de HostMaintenance (o Maintenance después de cambiar el nombre) del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es host_maintenance.
HostProperties.Cores entity.entity.asset.hardware.cpu_number_cores El valor de HostProperties.Cores se convierte en un número entero sin signo y se asigna a cpu_number_cores.
HostProperties.InstanceFamily entity.entity.asset.attribute.labels.value El valor de HostProperties.InstanceFamily del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es host_properties_instance_family.
HostProperties.InstanceType entity.entity.asset.attribute.labels.value El valor de HostProperties.InstanceType del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es host_properties_instance_type.
HostProperties.Sockets entity.entity.asset.attribute.labels.value El valor de HostProperties.Sockets se convierte en una cadena y se usa como valor de una etiqueta. La tecla está configurada como host_properties_sockets.
HostProperties.TotalVCpus entity.entity.asset.attribute.labels.value El valor de HostProperties.TotalVCpus (o HostProperties.TotalVCPUs después de cambiarle el nombre) se convierte en una cadena y se usa como valor de una etiqueta. La tecla está configurada como host_properties_total_v_cpus.
HostRecovery entity.entity.asset.attribute.labels.value El valor de HostRecovery (o Recovery después de cambiar el nombre) del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es host_recovery.
HostReservationID entity.entity.asset.attribute.labels.value El valor de HostReservationID (o ReservationID después de cambiar el nombre) del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es host_reservation_id.
MemberOfServiceLinkedResourceGroup entity.entity.asset.attribute.labels.value El valor de MemberOfServiceLinkedResourceGroup se convierte en una cadena y se usa como valor de una etiqueta. La tecla está configurada como member_of_service_linked_resource_group.
OwnerID entity.entity.asset.attribute.labels.value El valor de OwnerID del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es owner_id.
ReleaseTime entity.entity.asset.attribute.labels.value El valor de ReleaseTime del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es release_time.
State entity.entity.asset.attribute.labels.value El valor de State del registro sin procesar se usa como valor de una etiqueta. La clave de esta etiqueta es state.
TagSet entity.entity.asset.attribute.labels Se itera sobre la matriz TagSet y se usan los elementos Key y Value de cada etiqueta como clave y valor de una etiqueta, respectivamente. El analizador asigna el valor AMAZON_WEB_SERVICES a este campo. El collection_time del registro sin procesar se asigna al campo collected_timestamp. El analizador asigna el valor ASSET a este campo. El analizador asigna el valor AWS EC2 HOSTS a este campo. El analizador asigna el valor AWS a este campo. Las relaciones se derivan de los campos Instances y OutpostArn, pero estos campos no se asignan directamente al objeto IDM. La lógica del analizador crea objetos de relación basados en estos campos y los combina en la matriz relations.
collection_time entity.metadata.collected_timestamp El collection_time del registro se usa como collected_timestamp del evento.

¿Necesitas más ayuda? Recibe respuestas de los miembros de la comunidad y de los profesionales de Google SecOps.