Come faccio a utilizzare CloudWatch Logs Insights per analizzare i log di flusso personalizzati di Amazon VPC?

7 minuti di lettura
0

Ho utilizzato i log di flusso di Amazon Virtual Private Cloud (Amazon VPC) per configurare log di flusso VPC personalizzati. Desidero utilizzare Amazon CloudWatch Logs Insights per scoprire modelli e tendenze all'interno dei log.

Descrizione breve

CloudWatch Logs Insights rileva automaticamente i log di flusso nel formato predefinito, ma non rileva automaticamente i log di flusso nel formato personalizzato.

Per utilizzare CloudWatch Logs Insights con i log di flusso in formato personalizzato, devi modificare le query.

Di seguito è riportato un esempio di formato di registro del flusso personalizzato:

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

Le seguenti domande sono esempi di come è possibile personalizzare ed estendere le query in base ai casi d'uso.

Risoluzione

Recuperare i log di flusso più recenti

Per estrarre i dati dai campi del registro, usa la parola chiaveparse. Ad esempio, l'output della seguente query viene ordinato in base all'ora di inizio dell'evento del log di flusso e limitato alle due voci di registro più recenti.

Query

#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

Output

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

Riepilogare i trasferimenti di dati per coppie di indirizzi IP di origine e destinazione

Utilizza la seguente query per riepilogare il traffico di rete per coppie di indirizzi IP di origine e destinazione. Nella query di esempio, la statistica **somma ** aggrega il campo byte. La statistica somma calcola un totale cumulativo dei dati trasferiti tra gli host, quindi il flow\ _direction è incluso nella query e nell'output. I risultati dell'aggregazione vengono assegnati temporaneamente al campo Data_Transferred. Quindi, i risultati vengono ordinati per Data_Transferred in ordine decrescente e vengono restituite le due coppie più grandi.

Query

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

Output

srcaddrdstaddrflow_directionData_Transferred
172.31.1.2473.230.172.154egress346952038
172.31.0.463.230.172.154egress343799447

Analizzare i trasferimenti di dati tramite ID di istanza Amazon EC2

Puoi utilizzare log di flusso personalizzati per analizzare i trasferimenti di dati tramite l'ID di istanza Amazon Elastic Compute Cloud (Amazon EC2). Per determinare le istanze EC2 più attive, includi il campo instance\ _id nella query.

Query

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

Output

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

Filtrare per il traffico SSH rifiutato

Per analizzare il traffico negato dal gruppo di sicurezza e dagli elenchi di controllo degli accessi alla rete (ACL di rete), utilizza l'azione di filtro REJECT. Per identificare gli host rifiutati sul traffico SSH, estendi il filtro per includere il protocollo TCP e il traffico con una porta di destinazione 22. Nella seguente query di esempio, viene utilizzato il protocollo TCP 6.

Query

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

Output

srcaddrSSH_Traffic_Volume
23.95.222.129160
179.43.167.7480

Isolare il flusso di dati HTTP per una coppia origine/destinazione specifica

Per analizzare le tendenze dei tuoi dati, usa CloudWatch Logs Insights per isolare il traffico bidirezionale tra due indirizzi IP. Nella query seguente, ["172.31.1.247","172.31.11.212"] utilizza l'indirizzo IP come indirizzo IP di origine o di destinazione per restituire i log di flusso. Le istruzioni del filtro corrispondono agli eventi VPC Flow Log con il protocollo TCP 6 e la porta 80 per isolare il traffico HTTP. Per restituire un sottoinsieme di tutti i campi disponibili, usa la parola chiave display .

Query

Utilizza la seguente query:

#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

Output

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

Visualizzare i risultati come grafico a barre o a torta

Puoi utilizzare CloudWatch Log Insights per visualizzare i risultati sotto forma di grafico a barre o a torta. Se i risultati includono la funzione bin () , l'output della query viene restituito con un timestamp. È quindi possibile visualizzare le serie temporali con un grafico a linee o ad area sovrapposta.

Per calcolare i dati cumulativi trasferiti a intervalli di 1 minuto, usa stats sum(bytes) as Data_Trasferred by bin(1m). Per vedere questa visualizzazione, alterna le tabelle Log e Visualization nella console CloudWatch Logs Insights.

Query

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)

Output

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

Informazioni correlate

Supported logs and discovered fields

CloudWatch Logs Insights query syntax