Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

Interrogare i VPC Flow Logs con AWS Athena tramite CloudFormation

By Piyush PatilJan 12, 20245 min read

Questa pagina è disponibile anche in English, Deutsch, Español, Français, 日本語 e Português.

I VPC flow logs sono una funzionalità messa a disposizione da servizi cloud come Amazon Web Services (AWS) per acquisire informazioni sul traffico IP in entrata e in uscita dalle interfacce di rete all'interno di un Virtual Private Cloud (VPC). Questi log sono impiegati per il monitoraggio della rete, l'analisi della sicurezza e il troubleshooting. Una volta abilitati, restituiscono dati come origine, destinazione e protocollo del traffico, oltre al numero di byte trasferiti. Si tratta di informazioni essenziali per comprendere l'attività di rete in un VPC e vengono spesso utilizzate per individuare pattern di traffico anomali o potenziali minacce alla sicurezza.

I VPC flow logs sono una funzionalità di AWS pensata per acquisire informazioni sul traffico IP. Analizzandoli, gli amministratori possono individuare attività malevole come ricognizioni di rete, esfiltrazioni di dati non autorizzate e pattern di traffico inattesi. Questi log contribuiscono inoltre a garantire la conformità alle policy di rete e alle normative: ad esempio, le organizzazioni possono sfruttarli per verificare che le proprie configurazioni di rete rispettino gli standard di sicurezza e i requisiti regolatori. Sono infine preziosi per l'analisi delle performance, perché aiutano gli amministratori a ottimizzare il traffico di rete e l'allocazione delle risorse all'interno del VPC.

Esistono diversi servizi AWS con cui interrogare i VPC flow logs: Amazon Athena, Amazon CloudWatch Logs, AWS ElasticSearch Service, Amazon QuickSight, AWS Glue e Amazon Redshift. In questo articolo vedremo come configurare l'integrazione tra Athena e S3 utilizzando AWS CloudFormation.

AWS Athena è un servizio di query interattivo che consente di analizzare i dati direttamente in Amazon S3 con SQL standard. Athena permette di interrogare i VPC flow logs archiviati nei bucket S3 ed è particolarmente utile per query complesse e analisi ad-hoc, dato che è serverless e non richiede la configurazione di alcuna infrastruttura.

In passato configurare Athena era piuttosto complesso e bisognava impostare manualmente S3 come origine dati. Inoltre, per interrogare i log occorreva scrivere autonomamente le query necessarie a estrarre i dati corretti. AWS ha semplificato questo processo offrendo la possibilità di generare un template CloudFormation insieme a numerose query predefinite, che restituiscono insight piuttosto dettagliati sul flusso del traffico.

Ecco come procedere:

Step 1: abilitare i VPC Flow Logs

Di seguito trova tutte le impostazioni necessarie per abilitare i VPC flow logs. Una volta abilitati, acceda al bucket S3 selezionato per verificare che i log stiano effettivamente arrivando.

Abilitare i VPC Flow Logs

Step 2: generare il template CloudFormation tramite la console

Acceda al proprio VPC e, nella scheda Flow logs, selezioni un flow log che pubblica su Amazon S3, quindi scelga Actions, Generate Athena integration.

Generate Athena Integration

Dopo aver cliccato su Generate Athena Integration, nella sezione successiva si compilano i dettagli richiesti. Ho usato lo stesso bucket S3 sia per il template CloudFormation sia per i risultati delle query, ma è possibile anche utilizzare bucket separati.

Generate Athena Integration: selezione del bucket S3

Step 2: creare lo stack CloudFormation

Dopo aver cliccato su "Generate Athena Integration", nella pagina successiva è possibile creare lo stack CloudFormation cliccando sul pulsante "Create CloudFormation stack" in alto a destra. Attenzione: non chiuda quel popup verde, altrimenti dovrà ripetere l'intera procedura.

Create CloudFormation Stack 1

Dopo aver cliccato su "Create CloudFormation Stack" verrà reindirizzato alla pagina di AWS CloudFormation.

In quella pagina è sufficiente cliccare su Next.

Create CloudFormation Stack 2

Indichi il nome dello stack che preferisce e clicchi su Next.

Create CloudFormation Stack 3

Nella schermata successiva mantenga invariate tutte le impostazioni e clicchi su Next.

Create CloudFormation Stack 4

Verifichi che tutte le selezioni siano corrette, spunti la casella "I acknowledge" e clicchi su Submit.

Create CloudFormation Stack 5

Attenda il completamento dello stack.

Create CloudFormation Stack 6

Una volta creato lo stack, acceda ad Athena: troverà il database VPC Flow Log già pronto per essere interrogato. Se compare l'avviso relativo alla posizione dei risultati delle query, basta cliccare su "Edit Settings" e selezionare il bucket in cui salvarli. Io ho scelto lo stesso bucket S3 creato per i VPC flow logs.

Create CloudFormation Stack 7

Step 3: eseguire una query predefinita

In Athena, selezioni Query Editor nella barra di navigazione a sinistra e scelga il workgroup creato dal nostro template CloudFormation.

Eseguire una query predefinita 1

Cliccando su Saved queries troverà diverse query già pronte, ciascuna con la descrizione degli insight che fornisce.

Eseguire una query predefinita 2

Nello screenshot qui sopra le query visibili sono poche perché sto utilizzando il mio account sandbox, ma a seconda dei log presenti nei vostri VPC flow logs ne potrete vedere molte di più. Di seguito l'elenco delle query disponibili.

  • VpcFlowLogsAcceptedTraffic — le connessioni TCP consentite in base ai security group e alle network ACL.
  • VpcFlowLogsAdminPortTraffic — i 10 indirizzi IP con il maggior volume di traffico, registrati dalle applicazioni che gestiscono richieste sulle porte amministrative.
  • VpcFlowLogsIPv4Traffic — il totale dei byte di traffico IPv4 registrati.
  • VpcFlowLogsIPv6Traffic — il totale dei byte di traffico IPv6 registrati.
  • VpcFlowLogsRejectedTCPTraffic — le connessioni TCP rifiutate in base ai security group o alle network ACL.
  • VpcFlowLogsRejectedTraffic — il traffico rifiutato in base ai security group o alle network ACL.
  • VpcFlowLogsSshRdpTraffic — il traffico SSH e RDP.
  • VpcFlowLogsTopTalkers — i 50 indirizzi IP con il maggior traffico registrato.
  • VpcFlowLogsTopTalkersPacketLevel — i 50 indirizzi IP a livello di pacchetto con il maggior traffico registrato.
  • VpcFlowLogsTopTalkingInstances — gli ID delle 50 istanze con il maggior traffico registrato.
  • VpcFlowLogsTopTalkingSubnets — gli ID delle 50 subnet con il maggior traffico registrato.
  • VpcFlowLogsTopTCPTraffic — tutto il traffico TCP registrato per un determinato indirizzo IP di origine.
  • VpcFlowLogsTotalBytesTransferred — le 50 coppie di indirizzi IP di origine e destinazione con il maggior numero di byte registrati.
  • VpcFlowLogsTotalBytesTransferredPacketLevel — le 50 coppie di indirizzi IP di origine e destinazione a livello di pacchetto con il maggior numero di byte registrati.
  • VpcFlowLogsTrafficFrmSrcAddr — il traffico registrato per uno specifico indirizzo IP di origine.
  • VpcFlowLogsTrafficToDstAddr — il traffico registrato per uno specifico indirizzo IP di destinazione.

Proviamo a eseguire una query di esempio per farci un'idea del tipo di insight che restituiscono. Ho utilizzato la query VpcFlowLogsTopTalkers, che mostra i primi 50 indirizzi IP con il relativo volume di byte trasferiti.

Ed è tutto. Ora abbiamo a disposizione un meccanismo di query per fare troubleshooting o ottenere insight sui problemi legati alla rete.

Buon troubleshooting!!!

Riferimenti:

[1] https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-athena.html