Como analisar os logs de fluxo do Amazon VPC usando o Amazon Athena?

5 minuto de leitura
0

Quero analisar meus logs de fluxo da Amazon Virtual Private Cloud (Amazon VPC) usando o Amazon Athena.

Breve descrição

Logs de fluxo do Amazon VPC permitem que você capture informações sobre o tráfego IP que entra e sai nas/das interfaces de rede na sua VPC. Esses logs podem ser usados para investigar padrões de tráfego de rede e identificar ameaças e riscos na sua rede da Amazon VPC.

Resolução

Analisar logs da VPC usando o Athena

Para analisar os logs de acesso usando o Amazon Athena, faça o seguinte:

1.    Na guia do Editor de consultas do console do Amazon Athena, crie um banco de dados test_db_vpclogs executando um comando semelhante ao seguinte:
Importante: a prática recomendada é criar o banco de dados na mesma região da AWS do bucket do Amazon S3 em que você deseja salvar os logs de fluxo.

CREATE DATABASE test_db_vpclogs;

Observação: não se esqueça de substituir test_db_vpclogs pelo nome do banco de dados que você deseja criar.

2.    No banco de dados criado, crie uma tabela para os logs de fluxo da VPC executando um comando semelhante ao seguinte. Com esse comando, você pode criar uma tabela, particioná-la e preencher as partições automaticamente de acordo com seu caso de uso usando a projeção de partição.

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}"
)

Faça o seguinte:

  • Substitua test_table_vpclogs na consulta pelo nome da sua tabela.
  • Modifique o parâmetro LOCATION na consulta para apontar para o bucket do Amazon S3 que contém seus dados de log.

Observação: se uma partição projetada não existir no Amazon S3, o Athena ainda projetará a partição. A prática recomendada é usar atributos particionados em suas consultas.

3.    Use o Editor de consultas no console para executar instruções SQL na tabela. Você pode salvar consultas, visualizar consultas anteriores ou baixar resultados de consultas no formato de arquivo CSV.

Exemplos de consultas

Observação: substitua test_table_vpclogs nas consultas pelo nome da tabela que você criou. Modifique os valores da coluna e outras variáveis de acordo com sua consulta.

1.    Para visualizar as primeiras 100 entradas do log de acesso em ordem cronológica para um determinado período de tempo, execute uma consulta semelhante à seguinte:

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

2.    Para ver qual servidor recebe o maior número de pacotes HTTP para um determinado período de tempo, execute uma consulta semelhante à seguinte:

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;

Essa consulta conta o número de pacotes recebidos na porta HTTPS 443 e os agrupa por endereço IP de destino. Em seguida, ele retorna as 10 principais entradas da semana anterior.

3.    Para verificar os logs que foram criados durante um determinado período de tempo, execute uma consulta semelhante à seguinte:

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';

Essa consulta retorna os logs criados entre 2020-12-04 11:28:19.000 e 2020-12-04 11:28:33.000.

4.    Para visualizar logs de acesso de um endereço IP de origem específico entre determinados períodos de tempo, execute uma consulta semelhante à seguinte:

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

5.    Para relacionar as conexões TCP rejeitadas, execute uma consulta semelhante à seguinte:

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.    Para visualizar os logs de acesso do intervalo de endereços IP que começa com '10.117', execute uma consulta semelhante à seguinte:

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

7.    Para visualizar os logs de acesso de um endereço IP de destino específico entre um determinado intervalo de tempo, execute uma consulta semelhante à seguinte:

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

Informações relacionadas

Como monitorar o tráfego na minha VPC com logs de fluxo?

Analisar logs de fluxo da VPC usando o Amazon Athena e o Amazon QuickSight

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos