Direkt zum Inhalt

Wie verwende ich CloudWatch Logs Insights, um benutzerdefinierte Amazon VPC-Flow-Protokolle zu analysieren?

Lesedauer: 7 Minute
0

Ich habe Amazon Virtual Private Cloud (Amazon VPC) Flow-Protokolle verwendet, um benutzerdefinierte VPC-Flow-Protokoll zu konfigurieren. Ich möchte Amazon CloudWatch Logs Insights verwenden, um Muster und Trends in den Protokollen zu erkennen.

Kurzbeschreibung

CloudWatch Logs Insights erkennt automatisch Flow-Protokolle im Standardformat, erkennt jedoch nicht automatisch Flow-Protokolle im benutzerdefinierten Format.

Um CloudWatch Logs Insights mit Flow-Protokollen im benutzerdefinierten Format zu verwenden, müssen Sie die Abfragen ändern.

Das Folgende ist ein Beispiel für ein benutzerdefiniertes Flow-Protokoll-Format:

${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}

Die folgenden Abfragen sind Beispiele dafür, wie Sie Abfragen an Ihre Anwendungsfälle anpassen und erweitern können.

Lösung

Abrufen der neuesten Flow-Protokolle

Verwenden Sie das Schlüsselwort parse, um Daten aus Ihren Protokollfeldern zu extrahieren. Beispielsweise ist die Ausgabe der folgenden Abfrage nach der Startzeit des Flow-Protokollereignisses sortiert und auf die beiden neuesten Protokolleinträge beschränkt.

Abfrage

#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

Ausgabe

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

Zusammenfassen von Datenübertragungen nach Quell- und Ziel-IP-Adresspaaren

Verwenden Sie die folgende Abfrage, um den Netzwerkverkehr nach Quell- und Ziel-IP-Adresspaaren zusammenzufassen. In der Beispielabfrage aggregiert die Summenstatistik das Bytefeld. Die Summenstatistik berechnet eine kumulative Summe der Daten, die zwischen Hosts übertragen werden, sodass die flow_direction in der Abfrage und Ausgabe enthalten ist. Die Ergebnisse der Aggregation werden vorübergehend dem Feld Data_Transferred zugewiesen. Dann werden die Ergebnisse in absteigender Reihenfolge nach Data_Transferred sortiert und die beiden größten Paare werden zurückgegeben.

Abfrage

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

Ausgabe

srcaddrdstaddrflow_directionData_Transferred
172.31.1.2473.230.172.154egress346952038
172.31.0.463.230.172.154egress343799447

Analysieren von Datenübertragungen anhand der Amazon EC2-Instance-ID

Sie können benutzerdefinierte Flow-Protokolle verwenden, um Datenübertragungen anhand der Amazon Elastic Compute Cloud (Amazon EC2) Instance-ID zu analysieren. Um die aktivsten EC2-Instances zu ermitteln, schließen Sie das Feld instance_id in die Abfrage ein.

Abfrage

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

Ausgabe

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

Filter für abgelehnten SSH-Verkehr

Verwenden Sie die Filteraktion ABLEHNEN, um den Datenverkehr zu analysieren, den Ihre Sicherheitsgruppe und Ihre Netzwerk-Zugriffssteuerungslisten (Netzwerk-ACLs) verweigert haben. Um Hosts zu identifizieren, die im SSH-Verkehr abgelehnt werden, erweitern Sie den Filter auf das TCP-Protokoll und den Verkehr mit dem Zielport 22. In der folgenden Beispielabfrage wird das TCP-Protokoll 6 verwendet.

Abfrage

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

Ausgabe

srcaddrSSH_Traffic_Volume
23.95.222.129160
179.43.167.7480

Isolieren Sie den HTTP-Datenstrom für ein bestimmtes Quell-/Zielpaar

Um die Trends in Ihren Daten zu analysieren, verwenden Sie CloudWatch Logs Insights, um den bidirektionalen Verkehr zwischen zwei IP-Adressen zu isolieren. In der folgenden Abfrage verwendet**["172.31.1.247", "172.31.11.212"]** entweder die IP-Adresse als Quell- oder Ziel-IP-Adresse, um Flow-Protokolle zurückzugeben. Die Filteranweisungen gleichen VPC-Flow-Protokollereignisse mit TCP-Protokoll 6 und Port 80 ab, um den HTTP-Verkehr zu isolieren. Um eine Teilmenge aller verfügbaren Felder zurückzugeben, verwenden Sie das Schlüsselwort display.

Abfrage

Verwenden Sie die folgende Abfrage:

#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

Ausgabe

interface_idsrcaddrsrcportdstaddrdstportprotocolBytesactionlog_status
eni-0b74120275654905e172.31.11.21280172.31.1.2472937665160876AKZEPTIERENOK
eni-0b74120275654905e172.31.1.24729376172.31.11.21280697380AKZEPTIERENOK

Visualisieren der Ergebnisse als Balken- oder Kreisdiagramm

Sie können CloudWatch Log Insights verwenden, um Ergebnisse als Balken- oder Kreisdiagramm zu visualisieren. Wenn die Ergebnisse die Funktion bin() enthalten, wird die Abfrageausgabe mit einem Zeitstempel zurückgegeben. Anschließend können Sie die Zeitreihe mit einem Linien- oder gestapelten Flächendiagramm visualisieren.

Um die kumulativen Daten zu berechnen, die in Intervallen von 1 Minute übertragen werden, verwenden Sie stats sum(bytes) als Data_Transferred by bin(1m). Um diese Visualisierung zu sehen, wechseln Sie in der CloudWatch Logs Insights-Konsole zwischen den Tabellen Protokolle und Visualisierung.

Abfrage

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)

Ausgabe

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

Ähnliche Informationen

Unterstützte Protokolle und entdeckte Felder

CloudWatch Logs Insights-Abfragesyntax