Come posso analizzare i log di flusso Amazon VPC utilizzando Amazon Athena?

4 minuti di lettura
0

Desidero analizzare i log di flusso Amazon Virtual Private Cloud (Amazon VPC) utilizzando Amazon Athena.

Breve descrizione

I log di flusso Amazon VPC consentono di acquisire informazioni sul traffico IP da e verso le interfacce di rete del VPC. I log possono essere utilizzati per analizzare i modelli di traffico di rete e identificare minacce e rischi sulla rete Amazon VPC.

Risoluzione

Analisi dei log VPC utilizzando Athena

Per analizzare i log di accesso utilizzando Amazon Athena, esegui le seguenti operazioni:

1.    Nella scheda dell'editor di query della console Amazon Athena, crea un database test_db_vpclogs eseguendo un comando simile al seguente:
Importante: è consigliabile creare il database nella stessa Regione AWS del bucket Amazon S3 in cui si desidera salvare i log di flusso.

CREATE DATABASE test_db_vpclogs;

Nota: assicurati di sostituire test_db_vpclogs con il nome del database che desideri creare.

2.    Nel database creato, crea una tabella per i log di flusso VPC eseguendo un comando simile al seguente. Con questo comando, puoi creare una tabella, partizionarla e compilare automaticamente le partizioni in base al tuo caso d'uso utilizzando la proiezione delle partizioni.

CREATE EXTERNAL TABLE IF NOT EXISTS test_table_vpclogs (
version int,
account string,
interfaceid string,
sourceaddress string,
destinationaddress string,
sourceport int,
destinationport int,
protocol int,
numpackets int,
numbytes bigint,
starttime int,
endtime int,
action string,
logstatus string,
vpcid string,
subnetid string,
instanceid string,
tcpflags int,
type string,
pktsrcaddr string,
pktdstaddr string,
aws_region string,
azid string,
sublocationtype string,
sublocationid string,
pktsrcawsservice string,
pktdstawsservice string,
flowdirection string,
trafficpath string
)
PARTITIONED BY (region string, day string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/'
TBLPROPERTIES
(
"skip.header.line.count"="1",
"projection.enabled" = "true",
"projection.region.type" = "enum",
"projection.region.values" = "us-east-1,us-west-2,ap-south-1,eu-west-1",
"projection.day.type" = "date",
"projection.day.range" = "2021/01/01,NOW",
"projection.day.format" = "yyyy/MM/dd",
"storage.location.template" = "s3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/${region}/${day}"
)

Assicurati di eseguire le seguenti operazioni:

  • Sostituisci test_table_vpclogs nella query con il nome della tabella.
  • Modifica il parametro LOCATION nella query in modo che punti al bucket Amazon S3 che contiene i dati di log.

Nota: se una partizione proiettata non esiste in Amazon S3, Athena la proietta comunque. È consigliabile utilizzare attributi partizionati nelle query.

3.    Utilizza l'editor di query nella console per eseguire istruzioni SQL sulla tabella. Puoi salvare le query, visualizzare quelle precedenti o scaricare i risultati delle query in formato CSV.

Query di esempio

Nota: sostituisci test_table_vpclogs nelle query con il nome della tabella creata. Modifica i valori della colonna e le altre variabili per adattarli alla query.

1.    Per visualizzare le prime 100 voci del log di acceso in ordine cronologico per un determinato periodo di tempo, esegui una query simile alla seguente:

SELECT * FROM test_table_vpclogs WHERE day >= '2021/02/01' AND day < '2021/02/28' ORDER BY time ASC LIMIT 100;

2.    Per visualizzare quale server riceve i primi dieci pacchetti HTTP per un determinato periodo di tempo, esegui una query simile alla seguente:

SELECT SUM(numpackets) AS
  packetcount,
  destinationaddress
FROM test_table_vpclogs
WHERE destinationport = 443 AND day >= '2021/03/01' AND day < '2021/03/31'
GROUP BY destinationaddress
ORDER BY packetcount DESC
LIMIT 10;

Questa query conta il numero di pacchetti ricevuti sulla porta HTTPS 443 e li raggruppa per indirizzo IP di destinazione. Quindi, restituisce le prime 10 voci della settimana precedente.

3.    Per verificare i log creati durante un determinato periodo di tempo, esegui una query simile alla seguente:

SELECT interfaceid, sourceaddress, action, protocol, to_iso8601(from_unixtime(starttime))
AS start_time, to_iso8601(from_unixtime(endtime))
AS end_time
FROM test_table_vpclogs
WHERE day >= '2021/04/01' AND day < '2021/04/30';

Questa query restituisce i log creati tra le 11:28:19,000 del 04/12/2020 e le 11:28:33,000 del 04/12/2020.

4.    Per visualizzare i log di accesso per uno specifico indirizzo IP di origine tra determinati periodi di tempo, esegui una query simile alla seguente:

SELECT * FROM test_table_vpclogs WHERE sourceaddress= '10.117.1.22' AND day >= '2021/02/01' AND day < '2021/02/28';

5.    Per elencare le connessioni TCP rifiutate, esegui una query simile alla seguente:

SELECT day_of_week(date) AS
day,
date,
interfaceid,
sourceaddress,
action,
protocol
FROM test_table_vpclogs
WHERE action = 'REJECT' AND protocol = 6 AND day >= '2021/02/01' AND day < '2021/02/28' LIMIT 10;

6.    Per visualizzare i log di accesso per l'intervallo di indirizzi IP che inizia con "10.117", esegui una query simile alla seguente:

SELECT * FROM test_table_vpclogs WHERE split_part(sourceaddress,’.’, 1)=’10’ AND split_part(sourceaddress,’.’, 2) =‘117’;

7.    Per visualizzare i log di accesso per uno specifico indirizzo IP di destinazione in un determinato intervallo di tempo, esegui una query simile alla seguente:

SELECT * FROM test_table_vpclogs WHERE destinationaddress= '10.0.1.14' AND day >= '2021/01/01' AND day < '2021/01/31';

Informazioni correlate

How do I monitor traffic in my VPC with flow logs?

Analyzing VPC Flow Logs using Amazon Athena, and Amazon QuickSight

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa