Como posso analisar logs de fluxo de VPC personalizados usando o CloudWatch Logs Insights?

8 minuto de leitura
0

Eu configurei logs de fluxo de VPC personalizados. Como posso descobrir padrões e tendências com o Amazon CloudWatch Logs Insights?

Breve descrição

Você pode usar o CloudWatch Logs Insights para analisar os logs de fluxo da VPC. O CloudWatch Log Insights descobre automaticamente campos em muitos logs fornecidos pela Amazon, bem como eventos de log formatados em JSON, para facilitar a construção de consultas e a exploração de logs. Os logs de fluxo da VPC que estão no formato padrão são descobertos automaticamente pelo CloudWatch Logs Insights.

Mas, os registros de fluxo da VPC são implantados em um formato personalizado. Por causa disso, não são descobertos automaticamente, portanto, você deve modificar as consultas. Este artigo fornece vários exemplos de consultas que você pode personalizar e estender para corresponder aos seus casos de uso.

Esse formato personalizado de logs de fluxo da VPC é usado:

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

Resolução

Recuperar logs de fluxo da VPC mais recentes

Como os campos de log não são descobertos automaticamente pelo CloudWatch Logs Insights, você deve usar a palavra-chave parse para isolar os campos desejados. Nessa consulta, os resultados são classificados pela hora de início do evento de log de fluxo e restritos às duas entradas de registro mais recentes.

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

Resuma as transferências de dados por pares de endereços IP de origem/destino

Em seguida, resuma o tráfego de rede por pares de endereços IP de fonte/destino. Neste exemplo, a estatística sum é usada para realizar uma agregação no campo bytes. Isso calcula um total cumulativo dos dados transferidos entre hosts. Para mais contexto, o flow_direction está incluído. Os resultados dessa agregação são então atribuídos ao campo Data_Transferred , temporariamente. Em seguida, os resultados são classificados por Data_Transferred em ordem decrescente, e os dois maiores pares são retornados.

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.154saída346952038
172.31.0.463.230.172.154saída343799447

Analise as transferências de dados pelo ID da instância do EC2

Você pode usar logs de fluxo de VPC personalizados para analisar diretamente um ID de instância do Amazon Elastic Compute Cloud (Amazon EC2). Usando a consulta anterior, agora você pode determinar as instâncias do EC2 mais ativas usando o 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

Filtro para tráfego SSH rejeitado

Para entender melhor o tráfego que foi negado pelo grupo de segurança e pelas listas de controle de acesso (ACL) de rede, filtre os logs de fluxo de VPC rejeitados . Você pode restringir ainda mais esse filtro para incluir protocolo e porta de destino. Para identificar hosts rejeitados no tráfego SSH, estenda o filtro para incluir o protocolo TCP (por exemplo, protocolo 6) e o tráfego com uma porta de destino 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

Isole o fluxo de dados HTTP para um par de fonte/destino específico

Para investigar melhor as tendências em seus dados usando o CloudWatch Logs Insights, isole o tráfego bidirecional entre dois endereços IP. Nessa consulta, ["172.31.1.247", "172.31.11.212"] retorna logs de fluxo usando o endereço IP como o endereço IP de fonte ou de destino. Para isolar o tráfego HTTP, as instruções de filtro correspondem aos eventos do log de fluxo da VPC com o protocolo 6 (TCP) e a porta 80. Use a palavra-chave display para retornar um subconjunto de todos os campos disponíveis.

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_idsrcaddrsrcportdstaddrdstportprotocolobytesactionlog_status
eni-0b74120275654905e172.31.11.21280172.31.1.2472937665160876ACEITAROK
eni-0b74120275654905e172.31.1.24729376172.31.11.21280697380ACEITAROK

Isole o fluxo de dados HTTP para um par de fonte/destino específico

Você pode usar o CloudWatch Logs Insights para visualizar os resultados como um gráfico de barras ou pizza. Se os resultados incluírem a função bin (), os resultados da consulta serão retornados com um carimbo de data/hora. Essa timeseries pode então ser visualizada com um gráfico de linha ou área empilhada.

Com base na consulta anterior, você pode usar stats sum (bytes) como Data_Trasferred by bin (1m) para calcular os dados cumulativos transferidos em intervalos de um minuto. Para visualizar essa visualização, alterne entre as tabelas Logs e Visualization (Visualização) no console do 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

Informações relacionadas

Logs e campos descobertos compatíveis

Analisar dados de log com o CloudWatch Logs Insights

Comandos de consulta do CloudWatch Logs Insights

Tutorial: Executar uma consulta que produz uma visualização de série temporal

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos