Wie verwende ich CloudWatch Logs Insights, um benutzerdefinierte Amazon VPC-Flow-Protokolle zu analysieren?
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_id | vpc_id | subnet_id | interface_id | instance_id | srcaddr | srcport |
|---|---|---|---|---|---|---|
| 123456789012 | vpc-0b69ce8d04278ddd | subnet-002bdfe1767d0ddb0 | eni-0435cbb62960f230e | - | 172.31.0.104 | 55125 |
| 123456789012 | vpc-0b69ce8d04278ddd1 | subnet-002bdfe1767d0ddb0 | eni-0435cbb62960f230e | - | 91.240.118.81 | 49422 |
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
| srcaddr | dstaddr | flow_direction | Data_Transferred |
|---|---|---|---|
| 172.31.1.247 | 3.230.172.154 | egress | 346952038 |
| 172.31.0.46 | 3.230.172.154 | egress | 343799447 |
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_id | Data_Transferred |
|---|---|
| - | 1443477306 |
| i-03205758c9203c979 | 517558754 |
| i-0ae33894105aa500c | 324629414 |
| i-01506ab9e9e90749d | 198063232 |
| i-0724007fef3cb06f3 | 54847643 |
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
| srcaddr | SSH_Traffic_Volume |
|---|---|
| 23.95.222.129 | 160 |
| 179.43.167.74 | 80 |
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_id | srcaddr | srcport | dstaddr | dstport | protocol | Bytes | action | log_status |
|---|---|---|---|---|---|---|---|---|
| eni-0b74120275654905e | 172.31.11.212 | 80 | 172.31.1.247 | 29376 | 6 | 5160876 | AKZEPTIEREN | OK |
| eni-0b74120275654905e | 172.31.1.247 | 29376 | 172.31.11.212 | 80 | 6 | 97380 | AKZEPTIEREN | OK |
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.000 | 17225787 |
| 2022-04-01 15:21:00.000 | 17724499 |
| 2022-04-01 15:20:00.000 | 1125500 |
| 2022-04-01 15:19:00.000 | 101525 |
| 2022-04-01 15:18:00.000 | 81376 |
Ähnliche Informationen
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor 4 Monaten
AWS OFFICIALAktualisiert vor 2 Jahren