VPC Flow Logs é um recurso oferecido por provedores de nuvem como a Amazon Web Services (AWS) para capturar informações sobre o tráfego IP que entra e sai das interfaces de rede em uma Virtual Private Cloud (VPC). Esses logs servem para monitoramento de rede, análise de segurança e troubleshooting. Quando habilitados, trazem dados como origem, destino e protocolo do tráfego, além do número de bytes transferidos. Essas informações são essenciais para entender a atividade de rede em uma VPC e costumam ser usadas para detectar padrões de tráfego anormais ou possíveis ameaças à segurança.
VPC Flow Logs é um recurso da AWS que captura informações sobre o tráfego IP. Analisando esses logs, os administradores conseguem identificar atividades maliciosas como reconhecimento de rede, exfiltração não autorizada de dados e padrões de tráfego inesperados. Eles também ajudam a garantir conformidade com políticas de rede e regulamentações. Por exemplo, as organizações podem usar os flow logs para verificar se as configurações de rede estão alinhadas aos seus padrões de segurança e exigências regulatórias. Além disso, esses logs são valiosos para análise de desempenho, ajudando os administradores a otimizar o tráfego de rede e a alocação de recursos dentro da VPC.
Vários serviços da AWS podem ser usados para consultar VPC Flow Logs, como Amazon Athena, Amazon CloudWatch Logs, AWS ElasticSearch Service, Amazon QuickSight, AWS Glue e Amazon Redshift. Neste post vou mostrar como configurar a integração entre Athena e S3 com o AWS CloudFormation.
O AWS Athena é um serviço de consulta interativa que permite analisar dados direto no Amazon S3 com SQL padrão. Dá para usar o Athena para consultar VPC Flow Logs armazenados em buckets do S3. Isso é útil para consultas complexas e análises ad-hoc, já que o Athena é serverless e dispensa qualquer configuração de infraestrutura.
Antes, configurar o Athena era bem trabalhoso e exigia apontar manualmente o S3 como fonte de dados. E, na hora de consultar os logs, você precisava escrever as próprias queries para extrair os dados certos. A AWS simplificou esse processo ao oferecer uma forma de gerar um template CloudFormation com várias consultas predefinidas que entregam insights bem detalhados sobre o fluxo de tráfego.
Veja como configurar:
Passo 1: Habilite os VPC Flow Logs
Abaixo estão todas as opções que você precisa marcar para habilitar os VPC Flow Logs. Depois de habilitar, acesse o bucket S3 escolhido para conferir se os logs estão chegando.

Habilitar VPC Flow Logs
Passo 2: Gere o template CloudFormation pelo console
Vá até a sua VPC e, na aba Flow logs, selecione um flow log que publica no Amazon S3, depois clique em Actions e em Generate Athena integration.

Generate Athena Integration
Depois de clicar em Generate Athena Integration, na próxima seção você preenche os detalhes pedidos. Eu usei o mesmo bucket S3 para o template CloudFormation e para os resultados das consultas, mas dá para usar buckets separados.

Seleção do bucket S3 em Generate Athena Integration
Passo 2: Crie a stack CloudFormation
Depois de clicar em "Generate Athena Integration", na página seguinte você cria a stack CloudFormation clicando no botão "Create CloudFormation stack" no canto superior direito. Atenção: não feche aquele popup verde, ou você vai ter que refazer todo o processo acima.

Criar stack CloudFormation 1
Ao clicar em "Create CloudFormation Stack", você é redirecionado para a página do AWS CloudFormation.
Basta clicar em Next nessa página.

Criar stack CloudFormation 2
Informe o nome de stack que preferir e clique em Next.

Criar stack CloudFormation 3
Na próxima janela, mantenha tudo como está e clique em Next.

Criar stack CloudFormation 4
Confira se as opções estão corretas, marque a caixa "I acknowledge" e clique em Submit.

Criar stack CloudFormation 5
Aguarde a stack ser concluída.

Criar stack CloudFormation 6
Quando a stack for criada, abra o Athena e você verá o banco de dados de VPC Flow Logs criado e pronto para ser consultado. Se aparecer o aviso sobre o local dos resultados de consulta, é só clicar em "Edit Settings" e escolher o bucket onde quer salvar os resultados. Eu usei o mesmo bucket S3 que tinha criado para os VPC Flow Logs.

Criar stack CloudFormation 7
Passo 3: Execute uma consulta predefinida
No Athena, clique em Query Editor no menu lateral esquerdo e selecione o workgroup criado pelo nosso template CloudFormation.

Executar uma consulta predefinida 1
Agora, ao clicar em Saved queries, você encontra várias consultas já prontas, com a descrição dos insights que cada uma oferece.

Executar uma consulta predefinida 2
No screenshot acima aparecem poucas consultas porque estou usando minha conta sandbox, mas, dependendo dos logs que sua VPC tiver, você verá várias outras. Abaixo está a lista das consultas disponíveis.
- VpcFlowLogsAcceptedTraffic — As conexões TCP permitidas pelos seus security groups e network ACLs.
- VpcFlowLogsAdminPortTraffic — Os 10 endereços IP com mais tráfego, conforme registrado pelas aplicações que atendem requisições em portas administrativas.
- VpcFlowLogsIPv4Traffic — O total de bytes de tráfego IPv4 registrado.
- VpcFlowLogsIPv6Traffic — O total de bytes de tráfego IPv6 registrado.
- VpcFlowLogsRejectedTCPTraffic — As conexões TCP rejeitadas pelos seus security groups ou network ACLs.
- VpcFlowLogsRejectedTraffic — O tráfego rejeitado pelos seus security groups ou network ACLs.
- VpcFlowLogsSshRdpTraffic — O tráfego SSH e RDP.
- VpcFlowLogsTopTalkers — Os 50 endereços IP com maior volume de tráfego registrado.
- VpcFlowLogsTopTalkersPacketLevel — Os 50 endereços IP em nível de pacote com maior volume de tráfego registrado.
- VpcFlowLogsTopTalkingInstances — Os IDs das 50 instâncias com maior volume de tráfego registrado.
- VpcFlowLogsTopTalkingSubnets — Os IDs das 50 sub-redes com maior volume de tráfego registrado.
- VpcFlowLogsTopTCPTraffic — Todo o tráfego TCP registrado para um endereço IP de origem.
- VpcFlowLogsTotalBytesTransferred — Os 50 pares de endereços IP de origem e destino com o maior número de bytes registrado.
- VpcFlowLogsTotalBytesTransferredPacketLevel — Os 50 pares de endereços IP de origem e destino em nível de pacote com o maior número de bytes registrado.
- VpcFlowLogsTrafficFrmSrcAddr — O tráfego registrado para um endereço IP de origem específico.
- VpcFlowLogsTrafficToDstAddr — O tráfego registrado para um endereço IP de destino específico.
Vamos rodar uma consulta de exemplo para ter uma ideia dos insights que elas oferecem. Usei a VpcFlowLogsTopTalkers, que retorna os 50 endereços IP com o maior volume de bytes transferidos.

E pronto. Agora temos um mecanismo de consulta para fazer troubleshooting ou obter insights sobre problemas relacionados à sua rede.
Bom troubleshooting!!!
Referência:
[1] https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-athena.html