Publicar registros de flujo en CloudWatch Logs - Amazon Virtual Private Cloud

Publicar registros de flujo en CloudWatch Logs

Los registros de flujo pueden publicar datos de registro de flujo directamente en Amazon CloudWatch.

Al publicar en CloudWatch Logs, los datos de registro de flujo se publican en un grupo de registros y cada interfaz de red tiene una secuencia de registro única en el grupo de registros. Los flujos de logs contienen registros de logs de flujo. Puede crear varios logs de flujo que publiquen datos en el mismo grupo de logs. Si la misma interfaz de red está presente en uno o varios logs de flujo en el mismo grupo de logs, tendrá un flujo de logs combinado. Si ha especificado que un log de flujo debe capturar el tráfico rechazado y otro log de flujo debe capturar el tráfico aceptado, el flujo de logs combinado capturará todo el tráfico.

En CloudWatch Logs, el campo timestamp (marca temporal) corresponde a la hora de inicio capturada en la entrada de registro de flujo. El campo ingestionTime indica la fecha y hora en que CloudWatch Logs recibió la entrada de registro de flujo. Esta marca de tiempo es posterior a la hora de finalización capturada en el registro de flujo.

Para obtener más información acerca de CloudWatch Logs, consulte Registros enviados a CloudWatch Logs en la Guía del usuario de Amazon CloudWatch Logs.

Precios

Se aplican costos por incorporación y archivo de datos para los registros a la venta cuando se publican registros de flujo en CloudWatch Logs. Para obtener más información, abra Precios de Amazon CloudWatch seleccione Logs (Registros) y consulte Vended Logs (Registros distribuidos).

Rol de IAM para publicar registros de flujo en CloudWatch Logs

El rol de IAM asociado con el registro de flujo debe tener permisos suficientes para publicar registros de flujo en el grupo de registro especificado en CloudWatch Logs. El rol de IAM debe pertenecer a la cuenta de AWS.

La política de IAM asociada al rol de IAM debe incluir al menos los siguientes permisos.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": "*" } ] }

Asegúrese de que el rol posee la siguiente política de confianza, la cual permite al servicio de registros de flujo asumir ese rol.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vpc-flow-logs.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

Le recomendamos que utilice las claves de condición aws:SourceAccount y aws:SourceArn para protegerse contra el problema del suplente confuso. Por ejemplo, podría agregar el siguiente bloque de condición a la política de confianza anterior. La cuenta fuente es la propietaria del registro de flujo y el ARN fuente es el ARN del registro de flujo. Si no conoce el ID del registro de flujo, puede reemplazar esa parte del ARN por un comodín (*) y, a continuación, actualizar la política después de crear el registro de flujo.

"Condition": { "StringEquals": { "aws:SourceAccount": "account_id" }, "ArnLike": { "aws:SourceArn": "arn:aws:ec2:region:account_id:vpc-flow-log/flow-log-id" } }

Crear un rol de IAM para registros de flujo

Se puede actualizar un rol existente tal como se ha descrito anteriormente. También puede emplear el siguiente procedimiento para crear un nuevo rol y usarlo con los registros de flujo. Especificará esta función al crear el registro de flujo.

Para crear un rol de IAM para registros de flujo
  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, seleccione Políticas.

  3. Elija Create Policy (Crear política).

  4. En la página Create policy (Crear política), haga lo siguiente:

    1. Elija JSON.

    2. Reemplace el contenido de esta ventana por la política de permisos que aparece al principio de esta sección.

    3. Elija Siguiente.

    4. Introduzca un nombre para su política y una descripción y etiquetas opcionales y, a continuación, elija Create policy (Crear política).

  5. Seleccione Roles en el panel de navegación.

  6. Elija Crear rol.

  7. En Trusted entity type (Tipo de entidad de confianza), elija Custom trust policy (Política de confianza personalizada). En Custom trust policy (Política de confianza personalizada), reemplace "Principal": {}, con lo siguiente y luego elija Next (Siguiente).

    "Principal": { "Service": "vpc-flow-logs.amazonaws.com" },
  8. En la página Add permissions (Agregar permisos), seleccione la casilla de verificación de la política que creó anteriormente en este procedimiento y luego elija Next (Siguiente).

  9. Ingrese un nombre para el rol y, opcionalmente, especifique una descripción.

  10. Elija Create role (Crear rol).

Permisos para entidades principales de IAM que publican registros de flujo en CloudWatch Logs

Compruebe que la entidad principal de IAM que está utilizando para realizar la solicitud tenga los permisos para llamar la acción de iam:PassRole.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["iam:PassRole"], "Resource": "arn:aws:iam::account-id:role/flow-log-role-name" } ] }

Crear un registro de flujo que se publique en CloudWatch Logs

Puede crear registros de flujo para sus VPC, subredes o interfaces de red. Si sigue estos pasos como usuario empleando un determinado rol de IAM, asegúrese de que el rol tenga permisos para utilizar la acción iam:PassRole. Para obtener más información, consulte Permisos para entidades principales de IAM que publican registros de flujo en CloudWatch Logs.

Requisito previo
Para crear un registro de flujo mediante la consola
  1. Realice una de las siguientes acciones siguientes:

    • Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/. En el panel de navegación, elija Network Interfaces. Seleccione la casilla de verificación de la interfaz de red.

    • Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/. En el panel de navegación, elija Your VPCs (Sus VPC). Seleccione la casilla de verificación de la VPC.

    • Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/. En el panel de navegación, elija Subnets (Subredes). Seleccione la casilla de verificación de la subred.

  2. Seleccione Actions (Acciones) y, a continuación, Create flow log (Crear registro de flujo).

  3. Para Filter (Filtro), especifique el tipo de tráfico que desea registrar. Elija All (Todos) para registrar el tráfico aceptado y rechazado, Reject (Rechazar) a fin de registrar sólo el tráfico rechazado o Accept (Aceptar) con el objetivo de registrar sólo el tráfico aceptado.

  4. En Maximum aggregation interval (Intervalo máximo de agregación), elija el período de tiempo máximo durante el que se va a capturar el flujo y se va a agregar a un registro de flujo.

  5. En Destination (Destino), elija Send to CloudWatch Logs (Enviar a CloudWatch Logs).

  6. Para el grupo de registro de destino, elija el nombre de un grupo de registro existente o ingrese el nombre de un grupo de registro nuevo que se creará durante la creación de este registro de flujo.

  7. En IAM role (Rol de IAM), especifique el nombre del rol que tiene permisos para publicar registros en CloudWatch Logs.

  8. Para Log record format (Formato de registro de registro), seleccione el formato para el registro de flujo.

    • Para utilizar el formato predeterminado, elija AWS default format (Formato predeterminado de AWS).

    • Para utilizar un formato personalizado, elija Custom format (Formato personalizado) y, a continuación, seleccione campos de Log format (Formato de registro).

  9. En Metadatos adicionales, seleccione si desea incluir los metadatos de Amazon ECS en el formato de registro.

  10. (Opcional) Elija Add new tag (Agregar etiqueta nueva) para aplicar etiquetas al registro de flujo.

  11. Elija Create flow log (Crear registro de flujo).

Para crear un registro de flujo mediante la línea de comandos

Utilice uno de los siguientes comandos.

El siguiente ejemplo de la AWS CLI crea un registro de flujo que captura todo el tráfico aceptado para la subred especificada. Los registros de flujo se entregan al grupo de registros especificado. El parámetro --deliver-logs-permission-arn especifica el rol de IAM necesario para publicar en CloudWatch Logs.

aws ec2 create-flow-logs --resource-type Subnet --resource-ids subnet-1a2b3c4d --traffic-type ACCEPT --log-group-name my-flow-logs --deliver-logs-permission-arn arn:aws:iam::123456789101:role/publishFlowLogs

Ver entradas de registros de flujo

Puede consultar las entradas de registro de flujo a través de la consola de CloudWatch Logs. Es posible que, después de crear su registro de flujo, se necesiten unos minutos para que se encuentre visible en la consola.

Para consultar las entradas de registro de flujo publicados en CloudWatch Logs mediante la consola
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Logs (Registros), Log groups (Grupos de registros).

  3. Seleccione el nombre del grupo de registro que contiene los registros de flujo para abrir la página de detalles.

  4. Seleccione el nombre del flujo de registro que contiene las entradas de registro de flujo. Para obtener más información, consulte Registros de log de flujo.

Para consultar las entradas de registro de flujo publicados en CloudWatch Logs mediante la línea de comandos

Buscar entradas de registros de flujo

Puede buscar las entradas de registro de flujo que se publican en CloudWatch Logs mediante la consola de CloudWatch Logs. Puede utilizar filtros de métricas para filtrar entradas de registro de flujo. Los registros de log de flujo están delimitados por espacios.

Para buscar entradas de registro de flujo mediante la consola de CloudWatch Logs
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Logs (Registros), Log groups (Grupos de registros).

  3. Seleccione el grupo de registro que contiene el registro de flujo y, a continuación, seleccione el flujo de registro si conoce la interfaz de red que está buscando. De manera alternativa, elija Search log group (Buscar el grupo de registros). Esto puede tardar algún tiempo si hay muchas interfaces de red en el grupo de registro o en función del intervalo de tiempo que seleccione.

  4. En Filtrar eventos, introduzca la siguiente cadena. Esto supone que el registro de log de flujo utiliza el formato predeterminado.

    [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]
  5. Modifique el filtro según sea necesario especificando valores para los campos. En los siguientes ejemplos se filtra por direcciones IP de origen específicas.

    [version, accountid, interfaceid, srcaddr = 10.0.0.1, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus] [version, accountid, interfaceid, srcaddr = 10.0.2.*, dstaddr, srcport, dstport, protocol, packets, bytes, start, end, action, logstatus]

    En los siguientes ejemplos se filtra por puerto de destino, el número de bytes y si se ha rechazado el tráfico.

    [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes, start, end, action, logstatus] [version, accountid, interfaceid, srcaddr, dstaddr, srcport, dstport = 80 || dstport = 8080, protocol, packets, bytes >= 400, start, end, action = REJECT, logstatus]

Procesar entradas de registro de flujo en CloudWatch Logs

Puede trabajar con las entradas de registro de flujo al igual que con los demás eventos de registro recopilados por CloudWatch Logs. Para obtener más información acerca de los datos de registro y filtros de métricas de supervisión, consulte Búsqueda y filtrado de datos de registros en la Guía del usuario de Amazon CloudWatch.

Ejemplo: crear un filtro de métrica y una alarma de CloudWatch para un registro de flujo

En este ejemplo, tiene un log de flujo para eni-1a2b3c4d. Desea crear una alarma que le avise si ha habido 10 o más intentos rechazados para conectar con su instancia a través del puerto TCP 22 (SSH) en un periodo de 1 hora. En primer lugar, debe crear un filtro de métrica que coincida con el patrón de tráfico para el que va a crear la alarma. A continuación, puede crear una alarma para el filtro de métrica.

Para crear un filtro de métrico para el tráfico SSH rechazado y una alarma para el filtro
  1. Abra la consola de CloudWatch en https://console.aws.amazon.com/cloudwatch/.

  2. En el panel de navegación, elija Logs (Registros), Log groups (Grupos de registros).

  3. Seleccione la casilla de verificación para el grupo de registro y, a continuación, elija Actions (Acciones), Create metric filter (Crear filtro de métricas).

  4. En Filter Pattern (Patrón de filtro), ingrese la siguiente cadena.

    [version, account, eni, source, destination, srcport, destport="22", protocol="6", packets, bytes, windowstart, windowend, action="REJECT", flowlogstatus]
  5. En Select Log Data to Test (Seleccionar datos de registro para prueba), seleccione el flujo de registro para la interfaz de red. (Opcional) Para ver las líneas de los datos de registro que concuerdan con el patrón de filtro, elija Test Pattern (Probar patrón).

  6. Cuando esté preparado para continuar, seleccione Next (Siguiente).

  7. Ingrese un nombre de filtro, un espacio de nombres de métrica y un nombre de métrica. Establezca el valor de la métrica en 1. Cuando haya terminado, elija Next (Siguiente) y, luego, elija Create metric filter (Crear filtro de métricas).

  8. En el panel de navegación, elija Alarms (Alarmas), Create Alarm (Crear alarma).

  9. Elija Create alarm (Crear alarma).

  10. Seleccione el nombre de métrica que ha creado y elija Select metric (Seleccionar métrica).

  11. Configure la alarma como se indica a continuación y, luego, elija Next (Siguiente):

    • En Statistic (Estadística), elija Sum (Suma). Asegura que esté capturando el número total de puntos de datos para el período especificado.

    • En Period (Período), seleccione 1 Hour (1 hora).

    • En Whenever TimeSinceLastActive is... (Siempre LaÚltimaVezActivo es…), elija Greater/Equal (Mayor o igual) e ingrese 10 en el umbral.

    • En Additional configuration (Configuración adicional), Datapoints to alarm (Puntos de datos para alarma), deje el valor predeterminado 1.

  12. Elija Siguiente.

  13. Para Notification (Notificación), seleccione un tema de SNS existente o elija Create new topic (Crear tema nuevo) para crear uno nuevo. Elija Next (Siguiente).

  14. Ingrese un nombre y una descripción para la alarma y, a continuación, elija Next (Siguiente).

  15. Cuando haya terminado de obtener una vista previa de la alarma, elija Create alarm (Crear alarma).