Wie verwende ich Amazon Athena, um VPC-Flow-Protokolle zu analysieren?
Ich möchte meine Amazon Virtual Private Cloud (Amazon VPC)-Ablaufprotokolle mit Amazon Athena analysieren.
Kurzbeschreibung
Verwenden Sie Amazon VPC Flow-Protokolle, um Netzwerk-Traffic-Muster zu analysieren und Bedrohungen und Risiken in Ihrem Amazon VPC-Netzwerk zu identifizieren.
Lösung
Verwenden Sie Athena, um Amazon VPC-Flow-Protokolle zu analysieren
Gehen Sie wie folgt vor, um Athena zur Analyse der Amazon VPC-Flow-Protokolle zu verwenden:
-
Verwenden Sie den Abfrage-Editor der Amazon Athena-Konsole, um den folgenden Befehl zum Erstellen einer Datenbank auszuführen. Ersetzen Sie test_db_vpclogs durch einen Namen für Ihre Datenbank:
CREATE DATABASE test_db_vpclogs;
Wichtig: Es hat sich bewährt, die Datenbank in derselben AWS-Region wie der Amazon Simple Storage Service (Amazon S3)-Bucket zu erstellen, in dem die Flow-Protokolle gespeichert sind.
-
Führen Sie in der Datenbank den folgenden Befehl aus, um eine Tabelle für die VPC-Flow-Protokolle zu erstellen. Ersetzen Sie test_table_vpclogs durch den Namen Ihrer Tabelle. Ändern Sie den LOCATION-Parameter in der Abfrage so, dass er auf den Amazon S3-Bucket verweist, der Ihre Protokolldaten enthält:
CREATE EXTERNAL TABLE `test_table_vpclogs`( `version` int, `account_id` string, `interface_id` string, `srcaddr` string, `dstaddr` string, `srcport` int, `dstport` int, `protocol` bigint, `packets` bigint, `bytes` bigint, `start` bigint, `end` bigint, `action` string, `log_status` string, `vpc_id` string, `subnet_id` string, `instance_id` string, `tcp_flags` int, `type` string, `pkt_srcaddr` string, `pkt_dstaddr` string, `az_id` string, `sublocation_type` string, `sublocation_id` string, `pkt_src_aws_service` string, `pkt_dst_aws_service` string, `flow_direction` string, `traffic_path` int) PARTITIONED BY ( `region` string, `day` string) ROW FORMAT DELIMITED FIELDS TERMINATED BY ' ' STORED AS INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat' LOCATION 's3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/' TBLPROPERTIES ( 'projection.day.format'='yyyy/MM/dd', 'projection.day.range'='2021/01/01,NOW', 'projection.day.type'='date', 'projection.enabled'='true', 'projection.region.type'='enum', 'projection.region.values'='us-east-1,us-west-2,ap-south-1,eu-west-1', 'skip.header.line.count'='1', 'storage.location.template'='s3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/${region}/${day}' )
**Hinweis:**Der vorherige Befehl verwendet die Partitionsprojektion, um eine Tabelle zu erstellen, die Tabelle zu partitionieren und die Partitionen automatisch aufzufüllen. Wenn eine projizierte Partition in Amazon S3 nicht existiert, projiziert Athena die Partition trotzdem. Es hat sich bewährt, partitionierte Attribute in Ihren Abfragen zu verwenden.
-
Verwenden Sie den Abfrage-Editor der Amazon Athena-Konsole, um SQL-Anweisungen für die Tabelle auszuführen. Sie können Abfragen speichern, frühere Abfragen anzeigen oder Abfrageergebnisse im CSV-Format herunterladen.
Beispielabfragen
**Hinweis:**Ersetzen Sie test_table_vpclogs durch den Namen Ihrer Tabelle. Passen Sie die Spaltenwerte und andere Variablen an Ihre Abfrage an.
Führen Sie eine Abfrage ähnlich der folgenden aus, um die ersten 100 Flow-Protokolleinträge in chronologischer Reihenfolge für einen bestimmten Zeitraum anzuzeigen:
SELECT * FROM test_table_vpclogs WHERE day >= '2021/02/01' AND day < '2021/02/28' ORDER BY day ASC LIMIT 100;
Führen Sie eine Abfrage ähnlich der folgenden aus, um zu sehen, welcher Server die zehn häufigsten HTTP-Pakete für einen bestimmten Zeitraum empfängt:
SELECT SUM(packets) AS packetcount, dstaddr FROM test_table_vpclogs WHERE dstport = 443 AND day >= '2021/03/01' AND day < '2021/03/31' GROUP BY dstaddr ORDER BY packetcount DESC LIMIT 10;
Die vorausgegangene Abfrage zählt die Anzahl der auf dem HTTPS-Port 443 empfangenen Pakete und gruppiert sie nach Ziel-IP-Adresse. Dann werden die 10 besten Einträge der Vorwoche zurückgegeben.
Um die Protokolle zu überprüfen, die für einen bestimmten Zeitraum erstellt wurden, führen Sie eine Abfrage ähnlich der folgenden aus:
SELECT interface_id, srcaddr, action, protocol, to_iso8601(from_unixtime(start)) AS start_time, to_iso8601(from_unixtime("end")) AS end_time FROM test_table_vpclogs WHERE DAY >= '2021/04/01' AND DAY < '2021/04/30';
Um Flow-Protokolle für eine bestimmte Quell-IP-Adresse innerhalb eines bestimmten Zeitbereichs anzuzeigen, führen Sie eine Abfrage ähnlich der folgenden aus:
SELECT * FROM test_table_vpclogs WHERE srcaddr = '10.117.1.22' AND day >= '2021/02/01' AND day < '2021/02/28';
Um die abgelehnten TCP-Verbindungen zwischen einem bestimmten Zeitraum aufzulisten, führen Sie eine Abfrage ähnlich der folgenden aus:
SELECT day, interface_id, srcaddr, action, protocol FROM test_table_vpclogs WHERE action = 'REJECT' AND protocol = 6 AND day >= '2021/02/01' AND day < '2021/02/28' LIMIT 10;
Führen Sie eine Abfrage ähnlich der folgenden aus, um die Flow-Protokolle für den IP-Adressbereich anzuzeigen, der mit „10.117“ beginnt:
SELECT * FROM test_table_vpclogs WHERE split_part(srcaddr,'.', 1)='10' AND split_part(srcaddr,'.', 2) ='117'
Führen Sie eine Abfrage ähnlich der folgenden aus, um die Flow-Protokolle für eine bestimmte Ziel-IP-Adresse zwischen einem bestimmten Zeitraum anzuzeigen:
SELECT * FROM test_table_vpclogs WHERE dstaddr = '10.0.1.14' AND day >= '2021/01/01' AND day < '2021/01/31'
Ähnliche Informationen
Wie überwache ich den Verkehr in meiner VPC mit Ablaufprotokollen?
Analysieren von VPC-Ablaufprotokollen mit Amazon Athena und Amazon QuickSight
Relevanter Inhalt
- AWS OFFICIALAktualisiert vor 7 Monaten
- AWS OFFICIALAktualisiert vor 8 Monaten
- AWS OFFICIALAktualisiert vor einem Jahr
- AWS OFFICIALAktualisiert vor 7 Monaten