Como posso usar o CloudWatch Logs Insights para analisar os logs de fluxo personalizados do Amazon VPC?
Usei o Amazon Virtual Private Cloud (Amazon VPC) Flow Logs para configurar logs de fluxo de VPC personalizados. Quero usar o Amazon CloudWatch Logs Insights para descobrir padrões e tendências nos logs.
Breve descrição
O CloudWatch Logs Insights descobre automaticamente os logs de fluxo que estão no formato padrão, mas não descobre automaticamente os logs de fluxo no formato personalizado.
Para usar o CloudWatch Logs Insights com logs de fluxo que estão no formato personalizado, você deve modificar as consultas.
Veja a seguir um exemplo de um formato de log de fluxo 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}
As consultas a seguir são exemplos de como você pode personalizar e ampliar as consultas para que correspondam aos seus casos de uso.
Resolução
Recuperar os logs de fluxo mais recentes
Para extrair dados dos seus campos de log, use a palavra-chave parse. Por exemplo, a saída da consulta a seguir é classificada pela hora de início do evento de log de fluxo e restrita às duas entradas de log 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
Saída
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 |
Resumir as transferências de dados por pares de endereços IP de origem e destino
Use a consulta a seguir para resumir o tráfego de rede por pares de endereços IP de origem e destino. Na consulta de exemplo, a estatística sum agrega o campo bytes. A estatística sum calcula um total cumulativo dos dados transferidos entre hosts, portanto, o fluxo flow_direction está incluído na consulta e na saída. Os resultados da agregação são atribuídos temporariamente ao campo Data_Transferred. 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
Saída
srcaddr | dstaddr | flow_direction | Data_Transferred |
---|---|---|---|
172.31.1.247 | 3.230.172.154 | egress | 346952038 |
172.31.0.46 | 3.230.172.154 | egress | 343799447 |
Analisar transferências de dados por ID de instância do Amazon EC2
Você pode usar logs de fluxo personalizados para analisar transferências de dados pelo ID de instância do Amazon Elastic Compute Cloud (Amazon EC2). Para determinar as instâncias EC2 mais ativas, inclua o campo instance_id na 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
Saída
instance_id | Data_Transferred |
---|---|
- | 1443477306 |
i-03205758c9203c979 | 517558754 |
i-0ae33894105aa500c | 324629414 |
i-01506ab9e9e90749d | 198063232 |
i-0724007fef3cb06f3 | 54847643 |
Filtrar o tráfego SSH rejeitado
Para analisar o tráfego que o seu grupo de segurança e as listas de controle de acesso à rede (ACLs de rede) negaram, use a ação de filtro REJECT. Para identificar os hosts que são rejeitados no tráfego SSH, estenda o filtro para incluir o protocolo TCP e o tráfego com uma porta de destino 22. No exemplo de consulta a seguir, é usado o 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
Saída
srcaddr | SSH_Traffic_Volume |
---|---|
23.95.222.129 | 160 |
179.43.167.74 | 80 |
Isolar o fluxo de dados HTTP para um par específico de origem/destino
Para analisar as tendências em seus dados, use o CloudWatch Logs Insights para isolar o tráfego bidirecional entre dois endereços IP. Na consulta a seguir, ["172.31.1.247", "172.31.11.212"] usa qualquer endereço IP como endereço IP de origem ou destino para retornar os logs de fluxo. O filtro faz a correspondência entre os eventos de log de fluxo da VPC com o protocolo TCP 6 e a porta 80 para isolar o tráfego HTTP. Para retornar um subconjunto de todos os campos disponíveis, use a palavra-chave display.
Consulta
Veja a consulta a seguir:
#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
Saída
interface_id | srcaddr | srcport | dstaddr | dstport | protocolo | bytes | ação | log_status |
---|---|---|---|---|---|---|---|---|
eni-0b74120275654905e | 172.31.11.212 | 80 | 172.31.1.247 | 29376 | 6 | 5160876 | ACCEPT | OK |
eni-0b74120275654905e | 172.31.1.247 | 29376 | 172.31.11.212 | 80 | 6 | 97380 | ACCEPT | OK |
Visualize os resultados como um gráfico de barras ou de setores
Você pode usar o CloudWatch Log Insights para visualizar os resultados como um gráfico de barras ou de setores. Se os resultados incluírem a função bin(), a saída da consulta retornará com um registro de data e hora. Em seguida, você pode visualizar a série temporal com um gráfico de linhas ou áreas empilhadas.
Para calcular os dados cumulativos que são transferidos em intervalos de 1 minuto, use stats sum(bytes) as Data_Trasferred by bin(1m). Para ver essa visualização, alterne entre as tabelas Logs e 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)
Saída
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
Conteúdo relevante
- AWS OFICIALAtualizada há um mês
- AWS OFICIALAtualizada há 3 anos
- AWS OFICIALAtualizada há 7 meses
- AWS OFICIALAtualizada há 5 meses