Les VPC Flow Logs sont une fonctionnalité proposée par les services cloud comme Amazon Web Services (AWS) pour capturer des informations sur le trafic IP entrant et sortant des interfaces réseau d'un Virtual Private Cloud (VPC). Ces logs servent à la supervision du réseau, à l'analyse de sécurité et au dépannage. Une fois activés, ils fournissent des données telles que la source, la destination et le protocole du trafic, ainsi que le nombre d'octets transférés. Ces informations sont essentielles pour comprendre l'activité réseau au sein d'un VPC et permettent souvent de détecter des schémas de trafic anormaux ou des menaces de sécurité potentielles.
Les VPC Flow Logs sont une fonctionnalité d'AWS qui capture les informations sur le trafic IP. En analysant ces logs, les administrateurs peuvent identifier des activités malveillantes telles que la reconnaissance réseau, l'exfiltration non autorisée de données ou des schémas de trafic inattendus. Ils contribuent également à la conformité aux politiques et réglementations réseau. Les organisations peuvent par exemple s'appuyer sur les flow logs pour vérifier que leurs configurations réseau respectent leurs standards de sécurité et leurs exigences réglementaires. Ces logs sont aussi précieux pour l'analyse de performance, en aidant les administrateurs à optimiser le trafic réseau et l'allocation des ressources au sein du VPC.
Plusieurs services AWS permettent d'interroger les VPC Flow Logs : Amazon Athena, Amazon CloudWatch Logs, AWS ElasticSearch Service, Amazon QuickSight, AWS Glue ou encore Amazon Redshift. Dans cet article, je vous explique comment configurer l'intégration Athena et S3 à l'aide d'AWS CloudFormation.
AWS Athena est un service de requêtage interactif qui permet d'analyser des données directement dans Amazon S3 en SQL standard. Vous pouvez l'utiliser pour interroger les VPC Flow Logs stockés dans des buckets S3. C'est particulièrement pratique pour les requêtes complexes et l'analyse ad hoc, car Athena est serverless et ne nécessite aucune infrastructure à mettre en place.
Auparavant, configurer Athena s'avérait assez complexe et imposait de paramétrer manuellement S3 comme source de données. Lors de l'interrogation des logs, il fallait également écrire soi-même les requêtes pour obtenir les bonnes données. AWS a simplifié ce processus en proposant un moyen de générer un template CloudFormation accompagné de plusieurs requêtes prédéfinies, qui offrent une vision détaillée des flux de trafic.
Voici comment procéder :
Étape 1 : activer les VPC Flow Logs
Voici l'ensemble des paramètres à sélectionner pour activer les VPC Flow Logs. Une fois activés, rendez-vous dans le bucket S3 sélectionné pour vérifier que les logs y arrivent bien.

Activer les VPC Flow Logs
Étape 2 : générer le template CloudFormation depuis la console
Rendez-vous dans votre VPC, puis dans l'onglet Flow logs, sélectionnez un flow log qui publie vers Amazon S3, puis cliquez sur Actions, Generate Athena integration.

Generate Athena Integration
Après avoir cliqué sur Generate Athena Integration, renseignez dans la section suivante les informations requises. J'ai utilisé le même bucket S3 pour le template CloudFormation et les résultats des requêtes, mais vous pouvez tout à fait opter pour des buckets distincts.

Generate Athena Integration — sélection du bucket S3
Étape 2 : créer la stack CloudFormation
Une fois que vous avez cliqué sur "Generate Athena Integration", vous pouvez créer la stack CloudFormation depuis la page suivante via le bouton "Create CloudFormation stack" en haut à droite. Attention : ne fermez pas le pop-up vert, sous peine de devoir recommencer toute la procédure ci-dessus.

Création de la stack CloudFormation 1
Après avoir cliqué sur "Create CloudFormation Stack", vous serez redirigé vers la page AWS CloudFormation.
Cliquez simplement sur Next sur cette page.

Création de la stack CloudFormation 2
Indiquez le nom de stack de votre choix, puis cliquez sur Next.

Création de la stack CloudFormation 3
Dans la fenêtre suivante, conservez tous les paramètres par défaut et cliquez sur Next.

Création de la stack CloudFormation 4
Vérifiez que toutes vos sélections sont correctes, cochez la case d'acceptation et cliquez sur Submit.

Création de la stack CloudFormation 5
Patientez le temps que la stack se déploie complètement.

Création de la stack CloudFormation 6
Une fois la stack créée, rendez-vous dans Athena : la base de données VPC Flow Log est en place et prête à être interrogée. Si vous voyez l'avertissement concernant l'emplacement des résultats de requête, cliquez simplement sur "Edit Settings" et choisissez le bucket dans lequel vous souhaitez sauvegarder les résultats. J'ai retenu le même bucket S3 que celui créé pour les VPC Flow Logs.

Création de la stack CloudFormation 7
Étape 3 : exécuter une requête prédéfinie
Dans Athena, sélectionnez Query Editor dans la barre de navigation à gauche, puis choisissez le workgroup créé par notre template CloudFormation.

Exécuter une requête prédéfinie 1
En cliquant sur Saved queries, vous trouverez plusieurs requêtes pré-remplies, accompagnées d'une description précisant les insights qu'elles apportent.

Exécuter une requête prédéfinie 2
Dans la capture ci-dessus, peu de requêtes apparaissent car j'utilise mon compte sandbox, mais selon le contenu de vos VPC Flow Logs, vous en verrez bien davantage. Voici la liste des requêtes proposées.
- VpcFlowLogsAcceptedTraffic — Les connexions TCP autorisées par vos security groups et network ACLs.
- VpcFlowLogsAdminPortTraffic — Les 10 adresses IP générant le plus de trafic, telles qu'enregistrées par les applications répondant aux requêtes sur les ports d'administration.
- VpcFlowLogsIPv4Traffic — Le nombre total d'octets de trafic IPv4 enregistré.
- VpcFlowLogsIPv6Traffic — Le nombre total d'octets de trafic IPv6 enregistré.
- VpcFlowLogsRejectedTCPTraffic — Les connexions TCP rejetées par vos security groups ou network ACLs.
- VpcFlowLogsRejectedTraffic — Le trafic rejeté par vos security groups ou network ACLs.
- VpcFlowLogsSshRdpTraffic — Le trafic SSH et RDP.
- VpcFlowLogsTopTalkers — Les 50 adresses IP générant le plus de trafic enregistré.
- VpcFlowLogsTopTalkersPacketLevel — Les 50 adresses IP au niveau paquet générant le plus de trafic enregistré.
- VpcFlowLogsTopTalkingInstances — Les identifiants des 50 instances générant le plus de trafic enregistré.
- VpcFlowLogsTopTalkingSubnets — Les identifiants des 50 sous-réseaux générant le plus de trafic enregistré.
- VpcFlowLogsTopTCPTraffic — L'ensemble du trafic TCP enregistré pour une adresse IP source.
- VpcFlowLogsTotalBytesTransferred — Les 50 paires d'adresses IP source et destination ayant enregistré le plus d'octets.
- VpcFlowLogsTotalBytesTransferredPacketLevel — Les 50 paires d'adresses IP source et destination au niveau paquet ayant enregistré le plus d'octets.
- VpcFlowLogsTrafficFrmSrcAddr — Le trafic enregistré pour une adresse IP source spécifique.
- VpcFlowLogsTrafficToDstAddr — Le trafic enregistré pour une adresse IP de destination spécifique.
Exécutons une requête d'exemple pour avoir un aperçu des insights fournis. J'ai retenu la requête VpcFlowLogsTopTalkers, qui renvoie les 50 adresses IP avec le volume d'octets transférés qu'elles ont consommé.

Et voilà, c'est terminé. Vous disposez désormais d'un mécanisme de requêtage pour dépanner votre réseau ou en analyser les problèmes éventuels.
Bon dépannage !!!
Référence :
[1] https://docs.aws.amazon.com/vpc/latest/userguide/flow-logs-athena.html