¿Cómo utilizo CloudWatch Logs Insights para analizar los registros de flujo de Amazon VPC personalizados?

8 minutos de lectura
0

Utilicé los registros de flujo de Amazon Virtual Private Cloud (Amazon VPC) para configurar los registros de flujo de VPC personalizados. Quiero usar Amazon CloudWatch Logs Insights para descubrir patrones y tendencias en los registros.

Descripción corta

CloudWatch Logs Insights descubre automáticamente los registros de flujo que están en el formato predeterminado, pero no descubre automáticamente los registros de flujo en el formato personalizado.

Para usar CloudWatch Logs Insights con registros de flujo en formato personalizado, debe modificar las consultas.

El siguiente es un ejemplo de un formato de registro de flujo personalizado:

${account-id} ${vpc-id} ${subnet-id} ${interface-id} ${instance-id} ${srcaddr} ${srcport} ${dstaddr} ${dstport} ${protocol} ${packets} ${bytes} ${action} ${log-status} ${start} ${end} ${flow-direction} ${traffic-path} ${tcp-flags} ${pkt-srcaddr} ${pkt-src-aws-service} ${pkt-dstaddr} ${pkt-dst-aws-service} ${region} ${az-id} ${sublocation-type} ${sublocation-id}

Las siguientes consultas son ejemplos de cómo puede personalizar y ampliar las consultas para que coincidan con sus casos de uso.

Resolución

Recuperar los registros de flujo más recientes

Para extraer datos de los campos de registro, utilice la palabra clave parse. Por ejemplo, el resultado de la siguiente consulta se ordena según la hora de inicio del evento del registro de flujo y se restringe a las dos entradas de registro más recientes.

Consulta

#Retrieve latest custom VPC Flow Logs
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| sort start desc
| limit 2

Salida

account_idvpc_idsubnet_idinterface_idinstance_idsrcaddrsrcport
123456789012vpc-0b69ce8d04278dddsubnet-002bdfe1767d0ddb0eni-0435cbb62960f230e-172.31.0.10455125
123456789012vpc-0b69ce8d04278ddd1subnet-002bdfe1767d0ddb0eni-0435cbb62960f230e-91.240.118.8149422

Resuma las transferencias de datos por pares de direcciones IP de origen y destino

Utilice la siguiente consulta para resumir el tráfico de red por pares de direcciones IP de origen y destino. En la consulta de ejemplo, la estadística sum agrega el campo de bytes. La estadística sum calcula un total acumulado de los datos que se transfieren entre los hosts, por lo que la flow_direction se incluye en la consulta y la salida. Los resultados de la agregación se asignan temporalmente al campo Data_Transferred. A continuación, los resultados se ordenan por Data_Transferred en orden descendente y se devuelven los dos pares más grandes.

Consulta

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| stats sum(bytes) as Data_Transferred by srcaddr, dstaddr, flow_direction
| sort by Data_Transferred desc
| limit 2

Salida

srcaddrdstaddrflow_directionData_Transferred
172.31.1.2473.230.172.154egress346952038
172.31.0.463.230.172.154egress343799447

Analice las transferencias de datos por ID de instancia de Amazon EC2

Puede usar registros de flujo personalizados para analizar las transferencias de datos por ID de instancia de Amazon Elastic Compute Cloud (Amazon EC2). Para determinar las instancias EC2 más activas, incluya el campo instance_id en la consulta.

Consulta

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| stats sum(bytes) as Data_Transferred by instance_id
| sort by Data_Transferred desc
| limit 5

Salida

instance_idData_Transferred
-1443477306
i-03205758c9203c979517558754
i-0ae33894105aa500c324629414
i-01506ab9e9e90749d198063232
i-0724007fef3cb06f354847643

Filtro para el tráfico SSH rechazado

Para analizar el tráfico que el grupo de seguridad y las listas de control de acceso a la red (ACL de red) denegaron, utilice la acción de filtro REJECT. Para identificar los hosts que se rechazan en el tráfico SSH, amplíe el filtro para incluir el protocolo TCP y el tráfico con un puerto de destino de 22. En el siguiente ejemplo de consulta, se utiliza el protocolo TCP 6.

Consulta

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| filter action = "REJECT" and protocol = 6 and dstport = 22
| stats sum(bytes) as SSH_Traffic_Volume by srcaddr
| sort by SSH_Traffic_Volume desc
| limit 2

Salida

srcaddrSSH_Traffic_Volume
23.95.222.129160
179.43.167.7480

Aísle el flujo de datos HTTP para un par de origen/destino específico

Para analizar las tendencias de sus datos, utilice CloudWatch Logs Insights para aislar el tráfico bidireccional entre dos direcciones IP. En la siguiente consulta, ["172.31.1.247","172.31.11.212"] usa la dirección IP como dirección IP de origen o de destino para devolver los registros de flujo. Las instrucciones filter hacen coincidir los eventos de registro de flujo de la VPC con el protocolo TCP 6 y el puerto 80 para aislar el tráfico HTTP. Para devolver un subconjunto de todos los campos disponibles, utilice la palabra clave display.

Consulta

Vea la siguiente consulta:

#HTTP Data Stream for Specific Source/Destination Pair
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| filter srcaddr in ["172.31.1.247","172.31.11.212"] and dstaddr in ["172.31.1.247","172.31.11.212"] and protocol = 6 and (dstport = 80 or srcport=80)
| display interface_id,srcaddr, srcport, dstaddr, dstport, protocol, bytes, action, log_status, start, end, flow_direction, tcp_flags
| sort by start desc
| limit 2

Salida

interface_idsrcaddrsrcportdstaddrdstportprotocolbytesactionlog_status
eni-0b74120275654905e172.31.11.21280172.31.1.2472937665160876ACCEPTOK
eni-0b74120275654905e172.31.1.24729376172.31.11.21280697380ACCEPTOK

Visualice los resultados como un gráfico de barras o circular

Puede usar CloudWatch Log Insights para visualizar los resultados como un gráfico de barras o circular. Si los resultados incluyen la función bin(), el resultado de la consulta se devuelve con una marca de tiempo. A continuación, puede visualizar la serie temporal con un gráfico de líneas o áreas apiladas.

Para calcular los datos acumulados que se transfieren en intervalos de 1 minuto, use stats sum(bytes) as Data_Trasferred by bin(1m). Para ver esta visualización, alterne entre las tablas de Registros y Visualización en la consola de CloudWatch Logs Insights.

Consulta

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| filter srcaddr in ["172.31.1.247","172.31.11.212"] and dstaddr in ["172.31.1.247","172.31.11.212"] and protocol = 6 and (dstport = 80 or srcport=80)
| stats sum(bytes) as Data_Transferred by bin(1m)

Salida

bin(1m)Data_Transferred
2022-04-01 15:23:00.00017225787
2022-04-01 15:21:00.00017724499
2022-04-01 15:20:00.0001125500
2022-04-01 15:19:00.000101525
2022-04-01 15:18:00.00081376

Información relacionada

Supported logs and discovered fields

CloudWatch Logs Insights query syntax

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 4 meses