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

Publicar logs de flujo en CloudWatch Logs

Los logs de flujo pueden publicar datos de logs de flujo directamente en Amazon CloudWatch.

En CloudWatch Logs, los datos de logs de flujo se publican en un grupo de logs y cada interfaz de red tiene un flujo único de logs en el grupo de logs. 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. Para obtener más información, consulte Registros de log de flujo.

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

Roles de IAM para publicar registros de flujo en CloudWatch Logs

La función de IAM asociada a su registro de flujo debe tener permisos suficientes para publicar registros de flujo en el grupo de registros especificado en CloudWatch Logs. El rol de IAM debe pertenecer a su cuenta de AWS.

La política de IAM adjuntada a su rol de IAM debe incluir al menos los siguientes permisos.

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

Asegúrese también de que el rol tiene una relación de confianza que permite al servicio de logs de flujo asumir ese rol.

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

Los usuarios también deben tener permisos para utilizar la acción iam:PassRole para el rol de IAM que está asociado al log de flujo:

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

Puede actualizar una función existente o utilizar el procedimiento siguiente para crear una nueva función y utilizarla con los logs de flujo.

Crear un rol de registros de flujo

Para crear una función de IAM para logs de flujo

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de navegación, elija Roles, Create role.

  3. Elija EC2 como servicio para usar esta función. En Use case (Caso de uso), elija EC2. Elija Next: Permissions (Siguiente: Permisos).

  4. En la página Attach permissions policies (Asociar políticas de permisos), elija Next: Review (Siguiente: Revisar). Elija Next: Review (Siguiente: Revisar).

  5. Escriba un nombre para el rol (por ejemplo, Flow-Logs-Role) y, opcionalmente, especifique una descripción. Elija Create role (Crear rol).

  6. Seleccione el nombre de su función. En Permissions (Permisos), elija Add inline policy (Añadir política insertada), JSON.

  7. Copie la primera política de Roles de IAM para publicar registros de flujo en CloudWatch Logs y péguela en la ventana. Elija Review policy (Revisar política).

  8. Escriba un nombre para la política y elija Create policy (Crear política).

  9. Seleccione el nombre de su función. En Trust relationships (Relaciones de confianza), seleccione Edit trust relationship (Editar relación de confianza). En el documento de la política existente, cambie el servicio de ec2.amazonaws.com a vpc-flow-logs.amazonaws.com. Elija Update Trust Policy.

  10. En la página Summary (Resumen), tome nota del ARN de la función. Necesita este ARN para crear su propio log de flujo.

Crear un log de flujo que se publica en CloudWatch Logs

Puede crear registros de flujo para sus VPC, subredes o interfaces de red.

Para crear un log de flujo para una interfaz de red utilizando la consola

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de navegación, elija Network Interfaces.

  3. Seleccione una o varias interfaces de red y elija Actions (Acciones), Create flow log (Crear registro de flujo).

  4. En Filter (Filtro), especifique el tipo de datos de tráfico IP que desea registrar. Elija All (Todo) para registrar el tráfico aceptado y rechazado, Rejected (Rechazado) para registrar únicamente el tráfico rechazado o Accepted (Aceptado) para registrar solo el tráfico aceptado.

  5. 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.

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

  7. Para Destination log group (Grupo de logs de destino), escriba el nombre de un grupo de logs en CloudWatch Logs donde se van a publicar los logs de flujo. Si especifica el nombre de un grupo de logs que no existe, intentamos crear el grupo de logs por usted.

  8. En IAM role (Función de IAM), especifique el nombre de la función que tiene permisos para publicar registros en CloudWatch Logs.

  9. Para Format (Formato), especifique el formato del registro de logs de flujo.

    • Para utilizar el formato del registro de logs de flujo, seleccione AWS default format (Formato predeterminado de AWS).

    • Para crear un formato personalizado, seleccione Formato personalizado. En Log format (Formato de log), elija los campos que desea incluir en el registro de logs de flujo.

      sugerencia

      Para crear un log de flujo personalizado que incluya los campos de formato predeterminados, primero elija AWS default format (Formato predeterminado de AWS), copie los campos en Format preview (Vista previa de formato), a continuación elija Custom format (Formato personalizado) y pegue los campos en el cuadro de texto.

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

  11. Seleccione Create.

Para crear un log de flujo para una VPC o una subred utilizando la consola

  1. Abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc/.

  2. En el panel de navegación, elija Your VPCs (Sus VPC) o Subnets (Subredes).

  3. Seleccione una o varias VPC o subredes y, a continuación, elija Actions (Acciones), Create flow log (Crear registro de flujo).

  4. En Filter (Filtro), especifique el tipo de datos de tráfico IP que desea registrar. Elija All (Todo) para registrar el tráfico aceptado y rechazado, Rejected (Rechazado) para registrar únicamente el tráfico rechazado o Accepted (Aceptado) para registrar solo el tráfico aceptado.

  5. 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.

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

  7. Para Destination log group (Grupo de logs de destino), escriba el nombre de un grupo de logs en CloudWatch Logs donde se van a publicar los logs de flujo. Si especifica el nombre de un grupo de logs que no existe, intentamos crear el grupo de logs por usted.

  8. En IAM role (Función de IAM), especifique el nombre de la función de IAM que tiene permisos para publicar registros en CloudWatch Logs.

  9. Para Format (Formato), especifique el formato del registro de logs de flujo.

    • Para utilizar el formato del registro de logs de flujo, seleccione AWS default format (Formato predeterminado de AWS).

    • Para crear un formato personalizado, seleccione Formato personalizado. En Log format (Formato de log), elija los campos que desea incluir en el registro de logs de flujo.

      sugerencia

      Para crear un log de flujo personalizado que incluya los campos de formato predeterminados, primero elija AWS default format (Formato predeterminado de AWS), copie los campos en Format preview (Vista previa de formato), a continuación elija Custom format (Formato personalizado) y pegue los campos en el cuadro de texto.

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

  11. Seleccione Create.

Para crear un log de flujo que publica en CloudWatch Logs utilizando una herramienta de línea de comandos

Utilice uno de los siguientes comandos.

El siguiente ejemplo de la AWS CLI crea un log de flujo que captura todo el tráfico aceptado para la subred subnet-1a2b3c4d. Los logs de flujo se envían a un grupo de log en CloudWatch Logs denominado my-flow-logs, en la cuenta 123456789101, utilizando el rol de IAM publishFlowLogs.

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

Procesar registros de logs de flujo en CloudWatch Logs

Puede trabajar con los registros de logs de flujo al igual que con los demás eventos de logs recopilados por CloudWatch Logs. Para obtener más información acerca de la monitorización de datos de registros y filtros de métricas, 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 de CloudWatch y una alarma para un log 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.

  3. Elija el valor Metric Filters (Filtros de métricas) asociado para el grupo de registros de su registro de flujo y, a continuación, elija Add Metric Filter (Añadir filtro de métricas).

  4. En Filter Pattern (Patrón de filtro), escriba lo siguiente.

    [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 probar), seleccione el flujo de logs para su interfaz de red. (Opcional) Para ver las líneas de los datos de log que coinciden con el patrón de filtro, elija Test Pattern (Probar patrón). Cuando haya terminado, elija Assign Metric.

  6. Proporcione un espacio de nombres y un nombre de métrica, y asegúrese de que el valor de la métrica está establecido en 1. Cuando haya acabado, elija Create Filter.

  7. En el panel de navegación, elija Alarms, Create Alarm.

  8. En la sección Custom Metrics, elija el espacio de nombres para el filtro de métrica que ha creado.

    Puede que la nueva métrica tarde unos minutos en mostrarse en la consola.

  9. Seleccione el nombre de métrica que ha creado y elija Next (Siguiente).

  10. Escriba un nombre y la descripción de la alarma. En los campos is (es), elija >= y escriba 10. En el campo for (durante), deje el valor predeterminado 1 para los periodos consecutivos.

  11. En Period (Periodo), seleccione 1 Hour (1 hora). En Statistic (Estadística), elija Sum (Suma). La estadística Sum le asegura que está capturando el número total de puntos de datos para el periodo especificado.

  12. En la sección Actions (Acciones), puede elegir enviar una notificación a una lista existente. O puede crear una nueva lista y escribir las direcciones de correo electrónico que deben recibir una notificación cuando se dispare la alarma. Cuando haya terminado, elija Create Alarm.