Come analizzare log di flusso VPC personalizzati utilizzando CloudWatch Logs Insights?
Ho configurato log di flusso VPC personalizzati. Come scoprire modelli e tendenze con Amazon CloudWatch Logs Insights?
Breve descrizione
È possibile utilizzare CloudWatch Logs Insights per analizzare i log di flusso VPC. CloudWatch Log Insights rileva automaticamente i campi in molti log forniti da Amazon, nonché gli eventi di log in formato JSON, per consentire una facile creazione di query ed esplorazione dei log. I log di flusso VPC nel formato predefinito vengono rilevati automaticamente da CloudWatch Logs Insights.
Tuttavia, i log di flusso VPC vengono distribuiti in un formato personalizzato. Per questo motivo, non vengono rilevati automaticamente, quindi è necessario modificare le query. In questo articolo vengono forniti diversi esempi di query che è possibile personalizzare ed estendere in base ai propri casi d'uso.
Questo formato di log di flusso VPC personalizzato viene utilizzato:
${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}
Risoluzione
Recupera gli ultimi log di flusso VPC
Poiché i campi di log non vengono rilevati automaticamente da CloudWatch Logs Insights, è necessario utilizzare la parola chiave analizza per isolare i campi desiderati. In questa query, i risultati vengono ordinati in base all'ora di inizio dell'evento del log di flusso e limitati alle due voci di log 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
Risultati
id_account | id_vpc | id_sottorete | id_interfaccia | id_istanza | 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 |
Riepiloga i trasferimenti di dati per coppie di indirizzi IP di origine/destinazione
Successivamente, riepiloga il traffico di rete in base alle coppie di indirizzi IP di origine/destinazione. In questo esempio, la statistica della somma viene utilizzata per eseguire un'aggregazione sul campo byte. Questo calcola un totale cumulativo dei dati trasferiti tra host. Per maggiori informazioni, è inclusa la direzione_flusso. I risultati di questa aggregazione vengono quindi assegnati temporaneamente al campo Dati_Trasferiti. Quindi, i risultati vengono ordinati per Dati_Trasferiti 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
Risultati
srcaddr | dstaddr | direzione_flusso | Dati_Transferiti |
---|---|---|---|
172.31.1.247 | 3.230.172.154 | in uscita | 346952038 |
172.31.0.46 | 3.230.172.154 | in uscita | 343799447 |
Analizza i trasferimenti di dati dell'ID di istanza EC2
È possibile utilizzare log di flusso VPC personalizzati per analizzare direttamente un ID di istanza Amazon EC2 (Amazon Elastic Compute Cloud). Utilizzando la query precedente, è ora possibile determinare le istanze EC2 più attive utilizzando il campo id_istanza.
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
Risultati
id_istanza | Dati_Transferiti |
---|---|
- | 1443477306 |
i-03205758c9203c979 | 517558754 |
i-0ae33894105aa500c | 324629414 |
i-01506ab9e9e90749d | 198063232 |
i-0724007fef3cb06f3 | 54847643 |
Filtro per il traffico SSH rifiutato
Per comprendere meglio il traffico negato dal gruppo di sicurezza e dalla lista di controllo degli accessi alla rete, filtra in base ai log di flusso VPC rifiutati. È possibile restringere ulteriormente questo filtro per includere il protocollo e la porta di destinazione. Per identificare gli host rifiutati sul traffico SSH, estendi il filtro per includere il protocollo TCP (ad esempio, il protocollo 6) e il traffico con una porta di destinazione di 22.
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
Risultati
srcaddr | SSH_volume_traffico |
---|---|
23.95.222.129 | 160 |
179.43.167.74 | 80 |
Isola il flusso di dati HTTP per una coppia origine/destinazione specifica
Per analizzare ulteriormente le tendenze dei dati utilizzando CloudWatch Logs Insights, isola il traffico bidirezionale tra due indirizzi IP. In questa query, ["172.31.1.247", "172.31.11.212"] restituisce i log di flusso utilizzando l'indirizzo IP come origine o destinazione. Per isolare il traffico HTTP, le istruzioni del filtro corrispondono agli eventi del log di flusso VPC con il protocollo 6 (TCP) e la porta 80. Utilizza la parola chiave visualizza per restituire un sottoinsieme di tutti i campi disponibili.
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
Risultati
id_interfaccia | srcaddr | srcport | dstaddr | dstport | protocollo | byte | operazione | stato_log |
---|---|---|---|---|---|---|---|---|
eni-0b74120275654905e | 172.31.11.212 | 80 | 172.31.1.247 | 29376 | 6 | 5160876 | ACCETTA | OK |
eni-0b74120275654905e | 172.31.1.247 | 29376 | 172.31.11.212 | 80 | 6 | 97380 | ACCETTA | OK |
Isola il flusso di dati HTTP per una coppia origine/destinazione specifica
È possibile utilizzare CloudWatch Logs Insights per visualizzare i risultati sotto forma di grafico a barre o a torta. Se i risultati includono la funzione bin(), i risultati della query vengono restituiti con un timestamp. Questa serie temporale può quindi essere visualizzata con un grafico a linee o ad area in pila.
Basandosi sulla query precedente, è possibile utilizzare la somma (byte) delle statistiche come Dati_Trasferiti da bin(1m) per calcolare i dati cumulativi trasferiti su intervalli di un minuto. Per accedere a questa visualizzazione, passa tra le tabelle Log e Visualizzazione nella console di 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)
Risultati
bin(1 m) | Dati_Transferiti |
---|---|
2022-04-01 15:23:00 .000 | 17225787 |
2022-04-01 15:21:00 .000 | 1772449 |
2022-04-01 15:20:00 .000 | 1125500 |
2022-04-01 15:19:00 .000 | 101525 |
2022-04-01 15:18:00 .000 | 81376 |
Informazioni correlate
Log supportati e campi scoperti
Analisi dei dati di log con CloudWatch Logs Insights
Comandi di query CloudWatch Logs Insights
Tutorial: Eseguire una query che produca una visualizzazione di serie temporali
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa