Comment puis-je utiliser Amazon Athena pour analyser les journaux de flux VPC ?

Lecture de 4 minute(s)
0

Je souhaite utiliser Amazon Athena pour analyser mes journaux de flux Amazon Virtual Private Cloud (Amazon VPC).

Brève description

Utilisez Amazon VPC Flow Logs pour analyser les modèles de trafic réseau et identifier les menaces et les risques qui pèsent sur votre réseau Amazon VPC.

Résolution

Utiliser Athena pour analyser les journaux de flux Amazon VPC

Pour utiliser Athena afin d’analyser les journaux de flux Amazon VPC, procédez comme suit :

  1. Utilisez l’éditeur de requêtes de la console Amazon Athena pour exécuter la commande suivante afin de créer une base de données. Remplacez test_db_vpclogs par le nom de votre base de données :

    CREATE DATABASE test_db_vpclogs;
    

    Important : il est recommandé de créer la base de données dans la même région AWS que le compartiment Amazon Simple Storage Service (Amazon S3) dans lequel les journaux de flux sont stockés.

  2. Dans la base de données, exécutez la commande suivante pour créer une table pour les journaux de flux VPC. Remplacez test_table_vpclogs par le nom de votre table. Modifiez également le paramètre EMPLACEMENT pour qu’il pointe vers le compartiment Amazon S3 qui contient les données de votre journal :

    CREATE EXTERNAL TABLE `test_table_vpclogs`(
      `version` int,
      `account_id` string,
      `interface_id` string,
      `srcaddr` string,
      `dstaddr` string,
      `srcport` int,
      `dstport` int,
      `protocol` bigint,
      `packets` bigint,
      `bytes` bigint,
      `start` bigint,
      `end` bigint,
      `action` string,
      `log_status` string,
      `vpc_id` string,
      `subnet_id` string,
      `instance_id` string,
      `tcp_flags` int,
      `type` string,
      `pkt_srcaddr` string,
      `pkt_dstaddr` string,
      `az_id` string,
      `sublocation_type` string,
      `sublocation_id` string,
      `pkt_src_aws_service` string,
      `pkt_dst_aws_service` string,
      `flow_direction` string,
      `traffic_path` int)
    PARTITIONED BY (
      `region` string,
      `day` string)
    ROW FORMAT DELIMITED
      FIELDS TERMINATED BY ' '
    STORED AS INPUTFORMAT
      'org.apache.hadoop.mapred.TextInputFormat'
    OUTPUTFORMAT
      'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
    LOCATION
      's3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/'
    TBLPROPERTIES (
      'projection.day.format'='yyyy/MM/dd',
      'projection.day.range'='2021/01/01,NOW',
      'projection.day.type'='date',
      'projection.enabled'='true',
      'projection.region.type'='enum',
      'projection.region.values'='us-east-1,us-west-2,ap-south-1,eu-west-1',
      'skip.header.line.count'='1',
      'storage.location.template'='s3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/${region}/${day}'
      )

    Remarque : la commande précédente utilise la projection de partition pour créer une table, la partitionner et remplir automatiquement les partitions. Si aucune partition projetée n’existe dans Amazon S3, Athena projette toujours la partition. Il est recommandé d’utiliser des attributs partitionnés dans vos requêtes.

  3. Utilisez l’éditeur de requêtes de la console Amazon Athena pour exécuter des instructions SQL sur la table. Vous pouvez enregistrer les requêtes, afficher les requêtes précédentes ou télécharger les résultats des requêtes au format CSV.

Exemples de requêtes

Remarque : remplacez test_table_vpclogs par le nom de votre table. Modifiez les valeurs des colonnes et les autres variables en fonction de votre requête.

Pour afficher les 100 premières entrées du journal de flux dans l’ordre chronologique pour une période donnée, exécutez une requête semblable à la suivante :

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

Pour afficher le premier des 10 serveurs recevant le plus grand nombre de paquets HTTP pendant une période donnée, exécutez une requête semblable à la suivante :

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

La requête précédente compte le nombre de paquets reçus sur le port HTTPS 443 et les regroupe par adresse IP de destination. Il fournit les 10 principales entrées de la semaine précédente.

Pour vérifier les journaux créés pour une période donnée, exécutez une requête semblable à la suivante :

SELECT interface_id,
       srcaddr,
       action,
       protocol,
       to_iso8601(from_unixtime(start)) AS start_time,
       to_iso8601(from_unixtime("end")) AS end_time
FROM test_table_vpclogs
WHERE DAY >= '2021/04/01'
  AND DAY < '2021/04/30';

Pour afficher les journaux de flux pour une adresse IP source spécifique entre une plage de temps spécifiée, exécutez une requête semblable à la suivante :

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

Pour répertorier les connexions TCP rejetées pendant une période spécifiée, exécutez une requête semblable à la suivante :

SELECT day,
       interface_id,
       srcaddr,
       action,
       protocol
FROM test_table_vpclogs
WHERE action = 'REJECT'
    AND protocol = 6
    AND day >= '2021/02/01' AND day < '2021/02/28'
LIMIT 10;

Pour afficher les journaux de flux pour la plage d’adresses IP commençant par « 10.117 », exécutez une requête semblable à la suivante :

SELECT *
FROM test_table_vpclogs
WHERE split_part(srcaddr,'.', 1)='10'
  AND split_part(srcaddr,'.', 2) ='117'

Pour afficher les journaux de flux pour une adresse IP de destination spécifique sur une période donnée, exécutez une requête semblable à la suivante :

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

Informations connexes

Comment puis-je surveiller le trafic dans mon VPC à l’aide de journaux de flux ?

Analyse des journaux de flux VPC à l’aide d’Amazon Athena et d’Amazon QuickSight

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an