Recopilar registros de flujo de VPC de AWS

Disponible en:

En este documento se explica cómo ingerir registros de flujo de VPC de AWS en Google Security Operations mediante tres métodos diferentes: Amazon S3 (formato de texto), registros de Amazon CloudWatch con Kinesis Data Firehose y formato CSV en Amazon S3. Los registros de flujo de VPC de AWS son una función que te permite obtener información sobre el tráfico de IPs que entra y sale de las interfaces de red de tu VPC. Esta integración le permite enviar estos registros a Google SecOps para analizarlos y monitorizarlos.

Formatos de registros de flujo de VPC de AWS admitidos

Google SecOps admite la ingestión de registros de flujo de VPC de AWS en dos formatos de texto principales:

  • Formato JSON: el tipo de registro AWS_VPC_FLOW analiza los registros en formato JSON. En este formato, cada entrada de registro incluye una clave y su valor correspondiente, lo que hace que los datos se describan por sí mismos.
  • Formato CSV: Google SecOps también proporciona un analizador para los registros de flujo de VPC de AWS en formato CSV. En este formato, las claves de campo solo se indican una vez en la fila de encabezado, y las filas posteriores solo contienen valores separados por comas.

Como el formato CSV no incluye claves de campo en cada entrada de registro, el analizador AWS_VPC_FLOW_CSV se basa en un orden de valores estricto y predefinido. Para que los archivos CSV se analicen correctamente, deben seguir el orden de los campos que se indica a continuación:

   Version,Account_id,Interface_id,Srcaddr,Dstaddr,Srcport,Dstport,Protocol,Packets,Bytes,Start,End,Action,Log_status,Vpc_id,Subnet_id,Instance_id,Tcp_flags,Type,Pkt_srcaddr,Pkt_dstaddr,Region,Az_id,Sublocation_type,Sublocation_id,Pkt_src_aws_service,Pkt_dst_aws_service,Flow_direction,Traffic_path,Ecs_cluster_arn,Ecs_cluster_name,Ecs_container_instance_arn,Ecs_container_instance_id,Ecs_container_id,Ecs_second_container_id,Ecs_service_name,Ecs_task_definition_arn,Ecs_task_arn,Ecs_task_id

A continuación, se muestra un ejemplo de una línea de registro CSV:

   7,369096419186,eni-0520bb5efed19d33a,10.119.32.34,10.119.223.3,51256,16020,6,14,3881,1723542839,1723542871,ACCEPT,OK,vpc-0769a6844ce873a6a,subnet-0cf9b2cb32f49f258,i-088d6080f45f5744f,0,IPv4,10.119.32.34,10.119.223.3,ap-northeast-1,apne1-az4,-,-,-,-,ingress,,-,-,-,-,-,-,-,-,-,-

En los campos en los que no haya ningún valor disponible, se debe enviar un valor vacío (por ejemplo, , ,) para mantener el orden posicional correcto en la fila del archivo CSV.

Antes de empezar

Asegúrate de que cumples los siguientes requisitos previos:

  • Instancia de Google SecOps.
  • Acceso privilegiado a AWS.

Opción 1: Configurar la exportación de registros de flujo de VPC de AWS mediante AWS S3 (formato de texto)

En la siguiente sección se explica cómo configurar los permisos de Amazon S3 y de gestión de identidades y accesos para habilitar la exportación de registros de flujo de VPC para que Google SecOps los analice.

Configurar un segmento de AWS S3 y IAM para Google SecOps

  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 segmento para consultarlos más adelante (por ejemplo, aws-vpc-flowlogs).
  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 en 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 futuras consultas.
  12. Haz clic en Listo.
  13. Selecciona la pestaña Permisos.
  14. Haz clic en Añadir permisos en la sección Políticas de permisos.
  15. Selecciona Añadir permisos.
  16. Seleccione Adjuntar políticas directamente.
  17. Busca la política AmazonS3FullAccess.
  18. Selecciona la política.
  19. Haz clic en Siguiente.
  20. Haz clic en Añadir permisos.

Crear registros de flujo de VPC (destino: Amazon S3, formato de texto)

  1. Abre AWS Console > VPC > Tus VPCs/Subredes/Interfaces de red y selecciona el ámbito que quieras registrar.
  2. Haga clic en Acciones > Crear registro de flujo.
  3. Proporcione los siguientes detalles de configuración:
    • Filtrar: elija Todo (o Aceptar / Rechazar) según su política.
    • Intervalo de agregación máximo: selecciona 1 minuto (opción recomendada) o 10 minutos.
    • Destino: Enviar a un segmento de Amazon S3.
    • ARN del segmento de S3: introduzca el nombre del segmento creado en la sección anterior con el siguiente formato: arn:aws:s3:::<your-bucket>.
    • Formato de registro: selecciona Formato predeterminado de AWS.
    • Formato del archivo de registro: selecciona Texto (sin formato).
    • Opcional: Inhabilita los prefijos compatibles con Hive y las particiones por horas, a menos que los necesites.
  4. Haga clic en Crear registro de flujo.

Configurar un feed en Google SecOps para ingerir registros de flujo de VPC de AWS (texto de S3)

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, AWS VPC Flow Logs - S3 (Text)).
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Selecciona Flujo de VPC de AWS como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:
    • URI de S3: introduce la dirección del segmento de S3 (por ejemplo, s3://<your-bucket>/AWSLogs/<account-id>/vpcflowlogs/<region>/).
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
    • Antigüedad máxima de los archivos: 180 días de forma predeterminada.
    • ID de clave de acceso: clave de acceso de usuario con acceso al bucket de S3.
    • Clave de acceso secreta: clave secreta del usuario con acceso al bucket de S3.
    • Espacio de nombres de recursos: el espacio de nombres de recursos.
    • Etiquetas de ingestión: la etiqueta aplicada 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.

Opción 2: Configurar la exportación de registros de flujo de VPC de AWS mediante Amazon CloudWatch Logs y Kinesis Data Firehose

Después de configurar los registros de flujo para que se envíen a CloudWatch, esta opción proporciona una capa adicional de exportación de datos, ya que transmite esos datos de registro a un destino de su elección mediante Kinesis Data Firehose.

Crear registros de flujo de VPC (destino: Amazon CloudWatch Logs)

  1. Abre AWS Console > VPC > Your VPCs/Subnets/Network interfaces.
  2. Haga clic en Acciones > Crear registro de flujo.
  3. Proporcione los siguientes detalles de configuración:
    • Filtrar: elija Todo (o Aceptar/Rechazar) según su política.
    • Intervalo de agregación máximo: selecciona 1 minuto (opción recomendada) o 10 minutos.
    • Destino: selecciona Enviar a CloudWatch Logs.
    • Grupo de registro de destino: selecciona o crea un grupo de registro (por ejemplo, /aws/vpc/flowlogs).
    • Rol de gestión de identidades y accesos: selecciona un rol que pueda escribir en CloudWatch Logs.
    • Formato de registro: selecciona Predeterminado de AWS (versión 2) o Personalizado (incluye campos adicionales).
  4. Haga clic en Crear registro de flujo.

Crear un feed en Google SecOps para obtener la URL del endpoint y la clave secreta

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, AWS VPC Flow Logs - CloudWatch via Firehose).
  4. Seleccione Amazon Data Firehose como Tipo de fuente.
  5. Selecciona Flujo de VPC de AWS como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:
    • Delimitador de división: n (opcional).
    • Espacio de nombres de recursos: el espacio de nombres de recursos (por ejemplo, aws.vpc.flowlogs.cwl).
    • Etiquetas de ingestión: la etiqueta que se aplicará a los eventos de este feed (por ejemplo, source=vpc_flow_firehose).
  8. Haz clic en Siguiente.
  9. Revisa la configuración del feed y haz clic en Enviar.
  10. Haz clic en Generar clave secreta para generar una clave secreta que autentique este feed.
  11. Copia y guarda la clave secreta, ya que no podrás volver a verla.
  12. Ve a la pestaña Detalles.
  13. Copia la URL del endpoint del feed del campo Endpoint Information (Información del endpoint).
  14. Haz clic en Listo.

Crear una clave de API para el feed de Amazon Data Firehose

  1. Ve a la página Credenciales de la consola de Google Cloud.
  2. Haz clic en Crear credenciales y, a continuación, selecciona Clave de API.
  3. Copia y guarda la clave en un lugar seguro.
  4. Restringe el acceso de la clave de API a la API Google SecOps.

Configurar los permisos de gestión de identidades y accesos de CloudWatch Logs en Firehose

  1. En la consola de AWS, vaya a IAM > Policies > Create policy > JSON.
  2. Pega el siguiente JSON de la política y sustituye <region> y <account-id> por tu región de AWS y tu ID de cuenta:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Action": [
          "firehose:PutRecord",
          "firehose:PutRecordBatch"
          ],
          "Resource": "arn:aws:firehose:<region>:<account-id>:deliverystream/cwlogs-to-secops"
       }
    ]
    }
    
  3. Ponle un nombre a la política CWLtoFirehoseWrite y haz clic en Crear política.

  4. Ve a IAM > Roles > Crear rol.

  5. Selecciona Política de confianza personalizada y pega lo siguiente:

    {
    "Version": "2012-10-17",
    "Statement": [
       {
          "Effect": "Allow",
          "Principal": {
          "Service": "logs.<region>.amazonaws.com"
          },
          "Action": "sts:AssumeRole"
       }
    ]
    }
    
  6. Asigna la política CWLtoFirehoseWrite al rol.

  7. Dale el nombre CWLtoFirehoseRole al rol y haz clic en Crear rol.

Configurar Amazon Kinesis Data Firehose en Google SecOps

  1. En la consola de AWS, ve a Kinesis > Data Firehose > Create delivery stream.
  2. Proporcione los siguientes detalles de configuración:
    • Fuente: seleccione PUT directo u otras fuentes.
    • Destino: elige Endpoint HTTP.
    • Nombre: cwlogs-to-secops
    • URL del endpoint HTTP: introduzca la URL del endpoint HTTPS de la feed de Google SecOps con la clave de API añadida: <ENDPOINT_URL>?key=<API_KEY>.
    • Método HTTP: selecciona POST.
  3. En Clave de acceso:
    • Introduce la clave secreta generada en el feed de Google SecOps (se convertirá en el encabezado X-Amz-Firehose-Access-Key).
    • Sugerencias para el almacenamiento en búfer: define Tamaño del búfer = 1 MiB y Intervalo del búfer = 60 segundos.
    • Compresión: selecciona Inhabilitada.
    • Copia de seguridad de S3: selecciona Inhabilitada.
    • Deja la configuración de reintentos y registros como predeterminada.
  4. Haga clic en Crear flujo de entrega.

Suscribir el grupo de registros de CloudWatch al flujo de Firehose

  1. Ve a CloudWatch > Registros > Grupos de registros.
  2. Seleccione el grupo de registros de destino (por ejemplo, /aws/vpc/flowlogs).
  3. Abre la pestaña Filtros de suscripción y haz clic en Crear.
  4. Elige Create Amazon Kinesis Data Firehose subscription filter (Crear filtro de suscripción de Amazon Kinesis Data Firehose).
  5. Proporcione los siguientes detalles de configuración:
    • Destino: selecciona el flujo de entrega cwlogs-to-secops.
    • Conceder permiso: elige el rol CWLtoFirehoseRole.
    • Nombre del filtro: escribe all-events.
    • Patrón de filtro: déjelo vacío para enviar todos los eventos.
  6. Haz clic en Iniciar emisión.

Opción 3: Configurar los registros de flujo de VPC de AWS en formato CSV mediante Amazon S3

Transformar registros a formato CSV (opcional)

  1. Asegúrate de que las filas del archivo CSV sigan un orden de columnas estricto y coherente que coincida con los campos que hayas seleccionado en el formato personalizado de los registros de flujo de VPC (por ejemplo, el conjunto de campos canónico de la versión 2 o el conjunto de la versión 5 o 7). No incluya una fila de encabezado en los archivos de producción, a menos que su opción de analizador espere una.
  2. Escribe archivos CSV en un prefijo estable, por ejemplo: s3://<your-bucket>/vpcflowlogs-csv/<region>/year=<year>/month=<month>/day=<day>/.

Configurar un feed en Google SecOps para ingerir registros de flujo de VPC de AWS (CSV)

  1. Ve a Configuración de SIEM > Feeds.
  2. Haz clic en + Añadir nuevo feed.
  3. En el campo Nombre del feed, introduce un nombre para el feed (por ejemplo, AWS VPC Flow Logs - S3 (CSV)).
  4. Selecciona Amazon S3 V2 como Tipo de fuente.
  5. Seleccione Flujo de VPC de AWS (CSV) como Tipo de registro.
  6. Haz clic en Siguiente.
  7. Especifique los valores de los siguientes parámetros de entrada:
    • URI de S3: introduce la dirección del segmento de S3 (por ejemplo, s3://<your-bucket>/vpcflowlogs-csv/<region>/).
    • Opciones de eliminación de la fuente: selecciona la opción de eliminación que prefieras.
    • Antigüedad máxima de los archivos: 180 días de forma predeterminada.
    • ID de clave de acceso: clave de acceso de usuario con acceso al bucket de S3.
    • Clave de acceso secreta: clave secreta del usuario con acceso al bucket de S3.
    • Espacio de nombres de recursos: el espacio de nombres de recursos.
    • Etiquetas de ingestión: la etiqueta aplicada 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
accountId read_only_udm.metadata.product_log_id Valor extraído del campo de registro sin procesar accountId.
acción read_only_udm.security_result.action_details Valor extraído del campo de registro sin procesar action.
acción read_only_udm.security_result.action Se asigna a ALLOW si action es ACCEPT y a BLOCK si action es REJECT.
az_id read_only_udm.principal.cloud.availability_zone Valor extraído del campo de registro sin procesar az_id.
bytes read_only_udm.network.received_bytes Valor extraído del campo de registro sin procesar bytes.
dstaddr read_only_udm.target.ip Valor extraído del campo de registro sin procesar dstaddr.
dstport read_only_udm.target.port Valor extraído del campo de registro sin procesar dstport.
end_time read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar end_time.
end_time read_only_udm.metadata.ingested_timestamp Valor extraído del campo de registro sin procesar end_time.
flow_direction read_only_udm.network.direction Se asigna a ENTRANTE si flow_direction es ingress y a SALIENTE si flow_direction es egress.
InstanceID read_only_udm.principal.cloud.project.id Valor extraído del campo de registro sin procesar InstanceID.
interfaceId read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar interfaceId.
logStatus read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar logStatus.
paquetes read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar packets.
pkt_dst_aws_service read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar pkt_dst_aws_service.
pkt_dstaddr read_only_udm.intermediary.ip Valor extraído del campo de registro sin procesar pkt_dstaddr.
pkt_srcaddr read_only_udm.intermediary.ip Valor extraído del campo de registro sin procesar pkt_srcaddr.
pkt_src_aws_service read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar pkt_src_aws_service.
protocolo read_only_udm.network.ip_protocol Se asigna a TCP si protocol es 6, a UDP si protocol es 17 y, en caso contrario, a UNKNOWN_IP_PROTOCOL.
Región read_only_udm.principal.location.country_or_region Valor extraído del campo de registro sin procesar Region.
srcaddr read_only_udm.principal.ip Valor extraído del campo de registro sin procesar srcaddr.
srcport read_only_udm.principal.port Valor extraído del campo de registro sin procesar srcport.
start_time read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar start_time.
start_time read_only_udm.metadata.event_timestamp Valor extraído del campo de registro sin procesar start_time.
SubnetID read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar SubnetID.
tcp_flags read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar tcp_flags.
traffic_path read_only_udm.about.resource.attribute.labels.value Valor extraído del campo de registro sin procesar traffic_path.
version read_only_udm.metadata.product_version Valor extraído del campo de registro sin procesar version.
vpcID read_only_udm.principal.cloud.vpc.id Valor extraído del campo de registro sin procesar vpcID.
read_only_udm.metadata.vendor_name Valor fijo establecido en el código fuente AMAZON.
read_only_udm.metadata.product_name Valor fijo establecido en el código fuente AWS VPC Flow.
read_only_udm.metadata.log_type Valor fijo establecido en el código fuente AWS_VPC_FLOW.
read_only_udm.metadata.event_type Se asigna a NETWORK_CONNECTION si dstaddr no está vacío. De lo contrario, se asigna a GENERIC_EVENT.

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