Wie kann ich benutzerdefinierte VPC Flow Logs mit CloudWatch Logs Insights analysieren?

Lesedauer: 7 Minute
0

Ich habe benutzerdefinierte VPC Flow Logs konfiguriert. Wie kann ich mit Amazon CloudWatch Logs Insights Vorlagen und Trends entdecken?

Kurzbeschreibung

Sie können CloudWatch Logs Insights verwenden, um VPC Flow Logs zu analysieren. CloudWatch Log Insights erkennt automatisch Felder in vielen von Amazon bereitgestellten Protokollen sowie JSON-formatierten Protokollereignissen, um eine einfache Anfrageerstellung und Protokollerkundung zu ermöglichen. VPC Flow Logs im Standardformat werden automatisch von CloudWatch Logs Insights erkannt.

VPC Flow Logs werden jedoch in einem benutzerdefinierten Format bereitgestellt. Aus diesem Grund werden sie nicht automatisch erkannt, sodass Sie die Abfragen ändern müssen. Dieser Artikel gibt mehrere Beispiele für Abfragen, die Sie an Ihre Anwendungsfälle anpassen und erweitern können.

Es wird dieses benutzerdefinierte VPC-Flow-Logs-Format verwendet:

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

Auflösung

Rufen Sie aktuelle VPC-Flow-Protokolle ab

Sie müssen zur Isolierung der gewünschten Felder ein analytisches Keyword benutzen, da Protokollfelder nicht automatisch von CloudWatch Logs Insights erkannt werden. In dieser Abfrage werden die Ergebnisse nach Startzeit des Flow-Log-Ereignisses 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

Ergebnisse

Konto_ID VPC_ID  Subnetz_ID Interface_IDInstanz_IDsrcAddrsrcPort
123456789012 VPC-0b69ce8d04278ddd Subnetz-002bdfe1767d0ddb0ENI-0435cbb62960f230e172.31.0.10455125
123456789012 VPC-0b69ce8d04278ddd1 Subnetz-002bdfe1767d0ddb0ENI-0435cbb62960f230e91.240.118.8149422

Fassen Sie Datenübertragungen nach Quell-/Ziel-IP-Adresspaaren zusammen

Fassen Sie als nächstes den Netzwerkverkehr nach Quell-/Ziel-IP-Adresspaaren zusammen. In diesem Beispiel wird die Summenstatistik verwendet, um eine Aggregation für das Byte-Feld durchzuführen. Man berechnet dadurch eine kumulierte Summe der übertragenen Daten zwischen Hosts. Für mehr Kontext ist die Flow_Direction enthalten. Die Ergebnisse dieser Aggregation werden dann vorübergehend dem Feld übertragene Daten zugewiesen. Dann werden die Ergebnisse in absteigender Reihenfolge nach übertragenen Daten 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

Ergebnisse

srcAddrdstAddrFlow_Directionübertragene Daten
172.31.1.2473.230.172.154egress346952038
172.31.0.463.230.172.154Egress343799447

Analysieren von Datenübertragungen nach EC2-Instanz-ID

Sie können benutzerdefinierte VPC Flow Logs verwenden, um eine Amazon Elastic Compute Cloud (Amazon EC2)-Instanz-ID direkt zu analysieren. Mit der vorherigen Abfrage können Sie jetzt die aktivsten EC2-Instances ermitteln, indem Sie das Feld Instance_ID verwenden.

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

Ergebnisse

Instanz_IDübertragene Daten
-1443477306
i-03205758c9203c9795175 58754
i-0ae33894105aa500c324629414
i-01506ab9e9e90749d198063232
i-0724007fef3cb06f354847643

Filter für abgelehnten SSH-Verkehr

Um den Datenverkehr, der von Ihrer Sicherheitsgruppe und den Network Access Control Lists (ACL) verweigert wurde, besser zu verstehen, sollten Sie nach abgelehnten VPC-Flow-Protokollen filtern. Sie können diesen Filter weiter eingrenzen, um Protokoll und Zielport einzubeziehen. Erweitern Sie den Filter zum Einschluß des TCP-Protokolls (z.B. Protokoll 6) und den Datenverkehr mit einem Zielport von 22, um Hosts zu identifizieren, die bei SSH-Verkehr abgelehnt werden.

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

Ergebnisse

srcAddrSSH_Verkehrsaufkommen
23.95.222.129160
179.43.167.7480

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

Isolieren Sie den bidirektionalen Datenverkehr zwischen zwei IP-Adressen, um Trends in Ihren Daten mithilfe von CloudWatch Logs Insights weiter zu untersuchen. In dieser Abfrage gibt ["172.31.1.247", "172.31.11.212"] Flow-Protokolle zurück, die entweder die IP-Adresse als Quell- oder Ziel-IP-Adresse verwenden. Stimmen Sie die Filteranweisungen VPC Flow Log-Ereignisse mit Protokoll 6 (TCP) und Port 80 ab, um den HTTP-Verkehr zu isolieren. Verwenden Sie das angegebene Schlüsselwort, um eine Teilmenge aller verfügbaren Felder zurückzugeben.

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

Ergebnisse

Interface_IDsrcAddrsrcPortdstAddrdst-portProtokollBytesAktionLog_Status
Eni-0b74120275654905e172.31.11.21280172.31.1.2472937665160876ANNAHMEOK
Eni-0b74120275654905e172.31.1.24729376172.31.11.21280697380ANNAHMEOK

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

Sie können CloudWatch Logs Insights verwenden, um Ergebnisse als Balken- oder Tortendiagramm zu visualisieren. Wenn die Ergebnisse die Funktion bin () enthalten, werden Abfrageergebnisse mit einem Zeitstempel zurückgegeben. Diese Zeitreihen können dann mit einem Linien- oder gestapelten Flächendiagramm visualisiert werden.

Aufbauend auf der vorherigen Abfrage können Sie stats sum(Byte) als Datentransfert durch bin(1m) verwenden, um die kumulativen Daten zu berechnen, die in Intervallen von einer Minute übertragen wurden. Um diese Visualisierung anzuzeigen, wechseln Sie in der CloudWatch Logs Insights-Konsole zwischen den Tabellen Logs 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)

Ergebnisse

bin(1m)übertragene Daten
01.04.2022 15.23 Uhr17225787
01.04.2022 15.21 Uhr17724499
2022-04-01 15.20 Uhr1125500
01.04.2022 15:19 Uhr101525
01.04.2022 15.18 Uhr81376

Zugehörige Informationen

Unterstützte Logs und entdeckte Felder

Analysieren von Protokolldaten mit Amazon CloudWatch Logs Insights

Abfragebefehle für CloudWatch Logs Insights

Tutorial: Ausführen einer Abfrage, die eine Zeitreihenvisualisierung erzeugt

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren