Wie kann ich benutzerdefinierte VPC Flow Logs mit CloudWatch Logs Insights analysieren?
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_ID | Instanz_ID | srcAddr | srcPort |
---|---|---|---|---|---|---|
123456789012 | VPC-0b69ce8d04278ddd | Subnetz-002bdfe1767d0ddb0 | ENI-0435cbb62960f230e | - | 172.31.0.104 | 55125 |
123456789012 | VPC-0b69ce8d04278ddd1 | Subnetz-002bdfe1767d0ddb0 | ENI-0435cbb62960f230e | - | 91.240.118.81 | 49422 |
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
srcAddr | dstAddr | Flow_Direction | übertragene Daten |
---|---|---|---|
172.31.1.247 | 3.230.172.154 | egress | 346952038 |
172.31.0.46 | 3.230.172.154 | Egress | 343799447 |
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-03205758c9203c979 | 5175 58754 |
i-0ae33894105aa500c | 324629414 |
i-01506ab9e9e90749d | 198063232 |
i-0724007fef3cb06f3 | 54847643 |
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
srcAddr | SSH_Verkehrsaufkommen |
---|---|
23.95.222.129 | 160 |
179.43.167.74 | 80 |
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_ID | srcAddr | srcPort | dstAddr | dst-port | Protokoll | Bytes | Aktion | Log_Status |
---|---|---|---|---|---|---|---|---|
Eni-0b74120275654905e | 172.31.11.212 | 80 | 172.31.1.247 | 29376 | 6 | 5160876 | ANNAHME | OK |
Eni-0b74120275654905e | 172.31.1.247 | 29376 | 172.31.11.212 | 80 | 6 | 97380 | ANNAHME | OK |
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 Uhr | 17225787 |
01.04.2022 15.21 Uhr | 17724499 |
2022-04-01 15.20 Uhr | 1125500 |
01.04.2022 15:19 Uhr | 101525 |
01.04.2022 15.18 Uhr | 81376 |
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
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 3 Jahren
- AWS OFFICIALAktualisiert vor 4 Monaten
- AWS OFFICIALAktualisiert vor 2 Jahren
- AWS OFFICIALAktualisiert vor 10 Monaten