¿Cómo puedo analizar los registros de flujo de VPC personalizados mediante CloudWatch Logs Insights?

8 minutos de lectura
0

He configurado registros de flujo de VPC personalizados. ¿Cómo puedo detectar patrones y tendencias con Amazon CloudWatch Logs Insights?

Descripción breve

Puede utilizar CloudWatch Logs Insights para analizar los registros de flujo de la VPC. CloudWatch Log Insights detecta automáticamente campos en muchos registros proporcionados por Amazon, así como eventos de registro con formato JSON, para facilitar la construcción de consultas y la exploración de registros. CloudWatch Logs Insights detecta automáticamente los registros de flujo de VPC que están en el formato predeterminado.

Sin embargo, los registros de flujo de VPC se implementan en un formato personalizado. Por este motivo, no se detectan automáticamente, por lo que debe modificar las consultas. En este artículo, se ofrecen varios ejemplos de consultas que puede personalizar y ampliar para que coincidan con sus casos de uso.

Se utiliza este formato personalizado de registros de flujo de VPC:

${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}

Resolución

Recuperar los registros de flujo de VPC más recientes

Dado que CloudWatch Logs Insights no detecta automáticamente los campos de registro, debe usar la palabra clave parse para aislar los campos deseados. En esta consulta, los resultados se ordenan por la hora de inicio del evento del registro de flujo y se limitan 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

Resultados

account_id vpc_id  subnet_id interface_idinstance_idsrcaddrsrcport
123456789012 vpc-0b69ce8d04278ddd subnet-002bdfe1767d0ddb0eni-0435cbb62960f230e172.31.0.10455125
123456789012 vpc-0b69ce8d04278ddd1 subnet-002bdfe1767d0ddb0eni-0435cbb62960f230e91.240.118.8149422

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

A continuación, resuma el tráfico de red por pares de direcciones IP de origen y destino. En este ejemplo, la estadística sum se utiliza para realizar una agregación en el campo bytes. Esto calcula un total acumulado de los datos transferidos entre hosts. Para obtener más contexto, se incluye flow_direction. Los resultados de esta agregación se asignan al campo Data_Transferred, de forma temporal. 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

Resultados

srcaddrdstaddrflow_directionData_Transferred
172.31.1.2473.230.172.154egreso346952038
172.31.0.463.230.172.154egreso343799447

Analizar las transferencias de datos por ID de instancia de EC2

Puede utilizar registros de flujo de VPC personalizados para analizar directamente un ID de instancia de Amazon Elastic Compute Cloud (Amazon EC2). Siguiendo la consulta anterior, ahora puede determinar las instancias de EC2 más activas mediante el campo instance_id.

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

Resultados

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

Filtrar por tráfico SSH rechazado

Para comprender mejor el tráfico denegado por el grupo de seguridad y las listas de control de acceso (ACL) de red, filtre los registros de flujo de VPC rechazados. Puede reducir aún más este filtro para incluir el protocolo y el puerto de destino. Para identificar los hosts que se rechazan en el tráfico SSH, extienda el filtro a fin de incluir el protocolo TCP (por ejemplo, el protocolo 6) y el tráfico con un puerto de destino de 22.

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

Resultados

srcaddrSSH_Traffic_Volume
23.95.222.129160
179.43.167.7480

Aislar la secuencia de datos HTTP para un par de origen y destino específico

Para investigar más a fondo las tendencias de sus datos mediante CloudWatch Logs Insights, aísle el tráfico bidireccional entre dos direcciones IP. En esta consulta, ["172.31.1.247","172.31.11.212"] devuelve registros de flujo al utilizar la dirección IP como dirección IP de origen o destino. Para aislar el tráfico HTTP, las instrucciones del filtro hacen coincidir los eventos del registro de flujo de la VPC con el protocolo 6 (TCP) y el puerto 80. Utilice la palabra clave display para devolver un subconjunto de todos los campos disponibles.

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

Resultados

interface_idsrcaddrsrcportdstaddrdstportprotocolobytesacciónlog_status
eni-0b74120275654905e172.31.11.21280172.31.1.2472937665160876ACEPTARAceptar
eni-0b74120275654905e172.31.1.24729376172.31.11.21280697380ACEPTARAceptar

Aislar la secuencia de datos HTTP para un par de origen y destino específico

Puede utilizar CloudWatch Logs Insights para visualizar los resultados como un gráfico circular o de barras. Si los resultados incluyen la función bin(), los resultados de la consulta se devuelven con una marca de tiempo. Esta serie temporal se puede visualizar con un gráfico de líneas o de áreas apiladas.

Sobre la base de la consulta anterior, puede utilizar stats sum(bytes) como Data_Trasferred por bin(1m) para calcular los datos acumulados transferidos en intervalos de un minuto. Para ver esta visualización, cambie entre las tablas Logs (Registros) y Visualization (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)

Resultados

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

Registros y campos identificados admitidos

Analizar los datos de registro con CloudWatch Logs Insights

Comandos de consulta de CloudWatch Logs Insights

Tutorial: Ejecutar una consulta que genere una visualización de serie temporal

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace 2 años