Como posso analisar logs de fluxo de VPC personalizados usando o CloudWatch Logs Insights?
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_id | instance_id | srcaddr | srcport |
---|---|---|---|---|---|---|
123456789012 | vpc-0b69ce8d04278ddd | subnet-002bdfe1767d0ddb0 | eni-0435cbb62960f230e | - | 172.31.0.104 | 55125 |
123456789012 | vpc-0b69ce8d04278ddd1 | subnet-002bdfe1767d0ddb0 | eni-0435cbb62960f230e | - | 91.240.118.81 | 49422 |
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
srcaddr | dstaddr | flow_direction | Data_Transferred |
---|---|---|---|
172.31.1.247 | 3.230.172.154 | saída | 346952038 |
172.31.0.46 | 3.230.172.154 | saída | 343799447 |
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_id | Data_Transferred |
---|---|
- | 1443477306 |
i-03205758c9203c979 | 517558754 |
i-0ae33894105aa500c | 324629414 |
i-01506ab9e9e90749d | 198063232 |
i-0724007fef3cb06f3 | 54847643 |
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
srcaddr | SSH_Traffic_Volume |
---|---|
23.95.222.129 | 160 |
179.43.167.74 | 80 |
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_id | srcaddr | srcport | dstaddr | dstport | protocolo | bytes | action | log_status |
---|---|---|---|---|---|---|---|---|
eni-0b74120275654905e | 172.31.11.212 | 80 | 172.31.1.247 | 29376 | 6 | 5160876 | ACEITAR | OK |
eni-0b74120275654905e | 172.31.1.247 | 29376 | 172.31.11.212 | 80 | 6 | 97380 | ACEITAR | OK |
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.000 | 17225787 |
2022-04-01 15:21:00.000 | 17724499 |
2022-04-01 15:20:00.000 | 1125500 |
2022-04-01 15:19:00.000 | 101525 |
2022-04-01 15:18:00.000 | 81376 |
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
Conteúdo relevante
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos
- AWS OFICIALAtualizada há 2 anos