Comment utiliser CloudWatch Logs Insights pour analyser les journaux de flux Amazon VPC personnalisés ?

Lecture de 8 minute(s)
0

J’ai utilisé les journaux de flux Amazon Virtual Private Cloud (Amazon VPC) pour configurer des journaux de flux VPC personnalisés. Je souhaite utiliser Amazon CloudWatch Logs Insights pour découvrir des modèles et des tendances dans les journaux.

Brève description

CloudWatch Logs Insights découvre automatiquement les journaux de flux au format par défaut, mais ne découvre pas automatiquement les journaux de flux au format personnalisé.

Pour utiliser CloudWatch Logs Insights avec des journaux de flux au format personnalisé, vous devez modifier les requêtes.

Voici un exemple de format de journal de flux personnalisé :

${account-id} ${vpc-id} ${subnet-id} ${interface-id} ${instance-id} ${srcaddr} ${srcport} ${dstaddr} ${dstport} ${protocol} ${packets} ${bytes} ${action} ${log-status} ${start} ${end} ${flow-direction} ${traffic-path} ${tcp-flags} ${pkt-srcaddr} ${pkt-src-aws-service} ${pkt-dstaddr} ${pkt-dst-aws-service} ${region} ${az-id} ${sublocation-type} ${sublocation-id}

Les requêtes suivantes sont des exemples de la manière dont vous pouvez personnaliser et étendre les requêtes en fonction de vos cas d’utilisation.

Résolution

Récupérez les derniers journaux de flux

Pour extraire des données de vos champs de journal, utilisez le mot clé parse. Par exemple, la sortie de la requête suivante est triée en fonction de l’heure de début de l’événement du journal de flux et limitée aux deux entrées de journal les plus récentes.

Requête

#Retrieve latest custom VPC Flow Logs
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| sort start desc
| limit 2

Sortie

account_idvpc_idsubnet_idinterface_idinstance_idsrcaddrsrcport
123456789012vpc-0b69ce8d04278dddsubnet-002bdfe1767d0ddb0eni-0435cbb62960f230e-172.31.0.10455125
123456789012vpc-0b69ce8d04278ddd1subnet-002bdfe1767d0ddb0eni-0435cbb62960f230e-91.240.118.8149422

Résumer les transferts de données par paires d’adresses IP source et de destination

Utilisez la requête suivante pour résumer le trafic réseau par paires d’adresses IP source et de destination. Dans l’exemple de requête, la statistique de somme regroupe le champ d’octets. La statistique de somme calcule un total cumulé des données transférées entre les hôtes, de sorte que le flow_direction est inclus dans la requête et la sortie. Les résultats de l’agrégation sont temporairement affectés au champ Data_Transferred. Ensuite, les résultats sont triés par Data_Transferred dans l’ordre décroissant, et les deux plus grandes paires sont renvoyées.

Requête

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| stats sum(bytes) as Data_Transferred by srcaddr, dstaddr, flow_direction
| sort by Data_Transferred desc
| limit 2

Sortie

srcaddrdstaddrflow_directionData_Transferred
172.31.1.2473.230.172.154egress346952038
172.31.0.463.230.172.154egress343799447

Analysez les transferts de données par ID d’instance Amazon EC2

Vous pouvez utiliser des journaux de flux personnalisés pour analyser les transferts de données par ID d’instance Amazon Elastic Compute Cloud (Amazon EC2). Pour déterminer les instances EC2 les plus actives, incluez le champ instance_id dans la requête.

Requête

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| stats sum(bytes) as Data_Transferred by instance_id
| sort by Data_Transferred desc
| limit 5

Sortie

instance_idData_Transferred
-1443477306
i-03205758c9203c979517558754
i-0ae33894105aa500c324629414
i-01506ab9e9e90749d198063232
i-0724007fef3cb06f354847643

Filtre pour le trafic SSH rejeté

Pour analyser le trafic refusé par votre groupe de sécurité et vos listes de contrôle d’accès réseau (ACL réseau), utilisez l’action de filtre REJETER. Pour identifier les hôtes rejetés sur le trafic SSH, étendez le filtre pour inclure le protocole TCP et le trafic dont le port de destination est 22. Dans l’exemple de requête suivant, le protocole TCP 6 est utilisé.

Requête

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| filter action = "REJECT" and protocol = 6 and dstport = 22
| stats sum(bytes) as SSH_Traffic_Volume by srcaddr
| sort by SSH_Traffic_Volume desc
| limit 2

Sortie

srcaddrSSH_Traffic_Volume
23.95.222.129160
179.43.167.7480

Isoler le flux de données HTTP pour une paire source/destination spécifique

Pour analyser les tendances de vos données, utilisez CloudWatch Logs Insights pour isoler le trafic bidirectionnel entre deux adresses IP. Dans la requête suivante, ["172.31.1.247","172.31.11.212"] utilise l’adresse IP comme adresse IP source ou adresse IP de destination pour renvoyer les journaux de flux. Les instructions de filtre correspondent aux événements du journal de flux VPC avec le protocole TCP 6 et le port 80 pour isoler le trafic HTTP. Pour renvoyer un sous-ensemble de tous les champs disponibles, utilisez le mot clé display.

Requête

Consultez la requête suivante :

#HTTP Data Stream for Specific Source/Destination Pair
parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| filter srcaddr in ["172.31.1.247","172.31.11.212"] and dstaddr in ["172.31.1.247","172.31.11.212"] and protocol = 6 and (dstport = 80 or srcport=80)
| display interface_id,srcaddr, srcport, dstaddr, dstport, protocol, bytes, action, log_status, start, end, flow_direction, tcp_flags
| sort by start desc
| limit 2

Sortie

interface_idsrcaddrsrcportdstaddrdstportprotocoleoctetsactionlog_status
eni-0b74120275654905e172.31.11.21280172.31.1.2472937665160876ACCEPTEROK
eni-0b74120275654905e172.31.1.24729376172.31.11.21280697380ACCEPTEROK

Visualisez les résultats sous forme de graphique à barres ou à secteurs

Vous pouvez utiliser CloudWatch Log Insights pour visualiser les résultats sous forme de graphique à barres ou à secteurs. Si les résultats incluent la fonction bin(), la sortie de la requête est renvoyée avec un horodatage. Vous pouvez ensuite visualiser la série chronologique à l’aide d'un graphique linéaire ou à aires empilées.

Pour calculer les données cumulées transférées à intervalles d’une minute, utilisez la somme des statistiques (octets) sous la forme Data_Trasferred by bin(1m). Pour voir cette visualisation, basculez entre les tables Logs et Visualization dans la console CloudWatch Logs Insights.

Requête

parse @message "* * * * * * * * * * * * * * * * * * * * * * * * * * *" as account_id, vpc_id, subnet_id, interface_id,instance_id, srcaddr, srcport, dstaddr, dstport, protocol, packets, bytes, action, log_status, start, end, flow_direction, traffic_path, tcp_flags, pkt_srcaddr, pkt_src_aws_service, pkt_dstaddr, pkt_dst_aws_service, region, az_id, sublocation_type, sublocation_id
| filter srcaddr in ["172.31.1.247","172.31.11.212"] and dstaddr in ["172.31.1.247","172.31.11.212"] and protocol = 6 and (dstport = 80 or srcport=80)
| stats sum(bytes) as Data_Transferred by bin(1m)

Sortie

bin(1m)Data_Transferred
01-04-2022 15:23:00.00017225787
01-04-2022 15:21:00.00017724499
01-04-2022 15:20:00.0001125500
01-04-2022 15:19:00.000101525
01-04-2022 15:18:00.00081376

Informations connexes

Journaux pris en charge et champs découverts

Syntaxe de requête CloudWatch Logs Insights

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 9 mois