Direkt zum Inhalt

Wie verwende ich Athena, um Amazon-VPC-Ablaufprotokolle zu analysieren?

Lesedauer: 4 Minute
0

Ich möchte meine Amazon Virtual Private Cloud (Amazon VPC)-Ablaufprotokolle mit Amazon Athena analysieren.

Kurzbeschreibung

Du kannst den Abfrage-Editor der Athena-Konsole verwenden, um eine Datenbank zu erstellen, eine Tabelle für die VPC-Flow-Protokolle zu erstellen und Beispielabfragen auszuführen. Verwende Flow-Protokolle, um Muster des Netzwerkdatenverkehrs zu analysieren und Bedrohungen und Risiken im Amazon-VPC-Netzwerk zu identifizieren.

Lösung

Erstellen einer Datenbank mit dem Abfrage-Editor der Athena-Konsole

Führe die folgenden Schritte aus:

  1. Öffne den Abfrage-Editor der Athena-Konsole.
  2. Führe den folgenden Befehl aus:
    CREATE DATABASE test_db_vpclogs;
    Hinweis: Ersetze test_db_vpclogs durch den Namen deiner Datenbank.

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.

Erstellen einer Tabelle für die -Flow-Protokolle in der Datenbank

Führe die folgenden Schritte aus:

  1. Führe im Abfrage-Editor der Athena-Konsole den folgenden Befehl aus:
    CREATE EXTERNAL TABLE `vpcflow_logs`(
     `version` int,
     `resource_type` string,
     `account_id` string,
     `tgw_id` string,
     `tgw_attachment_id` string,
     `tgw_src_vpc_account_id` string,
     `tgw_dst_vpc_account_id` string,
     `tgw_src_vpc_id` string,
     `tgw_dst_vpc_id` string,
     `tgw_src_subnet_id` string,
     `tgw_dst_subnet_id` string,
     `tgw_src_eni` string,
     `tgw_dst_eni` string,
     `tgw_src_az_id` string,
     `tgw_dst_az_id` string,
     `tgw_pair_attachment_id` string,
     `srcaddr` string,
     `dstaddr` string,
     `srcport` int,
     `dstport` int,
     `protocol` bigint,
     `packets` bigint,
     `bytes` bigint,
     `start` bigint,
     `end` bigint,
     `log_status` string,
     `type` string,
     `packets_lost_no_route` bigint,
     `packets_lost_blackhole` bigint,
     `packets_lost_mtu_exceeded` bigint,
     `packets_lost_ttl_expired` bigint,
     `tcp_flags` int,
     `region` string,
     `flow_direction` string,
     `pkt_src_aws_service` string,
     `pkt_dst_aws_service` string)
    PARTITIONED BY (
     `aws_region` string,
     `log_time` 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://AWS_S3_BUCKET/awsexampleprefix/AWSLogs/AWS_ACCOUNT_NUMBER/vpcflowlogs/'
    TBLPROPERTIES (
     'projection.aws_region.type'='enum',
     'projection.aws_region.values'='us-east-1,us-west-2,ap-southeast-2',
     'projection.log_time.format'='yyyy/MM/dd',
     'projection.log_time.range'='2025/01/01,NOW',
     'projection.log_time.type'='date',
     'projection.enabled'='true',
     'skip.header.line.count'='1',
     'storage.location.template'='s3://AWS_S3_BUCKET/awsexampleprefix/AWSLogs/AWS_ACCOUNT_NUMBER/vpcflowlogs/${aws_region}/${log_time}')
    Hinweis: Ersetze test_table_vpclogs durch den Namen deiner Tabelle.

Ändere den Parameter STANDORT so, dass er auf den Amazon-S3-Bucket verweist, der die Protokolldaten enthält. Stelle den ersten Wert von projection.log_time.range auf Grundlage der frühesten verfügbaren Protokolle in den Daten ein. Wenn die Protokolle beispielsweise am 1. März 2023 beginnen, lege den Zeitraum auf '2025/03/01,NOW' fest. Ändere den Wert entsprechend dem tatsächlichen Startdatum der Protokolle, um eine genaue Datenprojektion zu erzielen. Der vorherige Befehl verwendet die Partitionsprojektion, um eine Tabelle zu erstellen, die Tabelle zu partitionieren und die Partitionen automatisch zu befüllen. Wenn eine projizierte Partition in Amazon S3 nicht existiert, projiziert Athena die Partition trotzdem. Es hat sich bewährt, partitionierte Attribute in den Abfragen zu verwenden.

SQL-Anweisungen in der Tabelle für die Flow-Protokolle ausführen

Verwende den Abfrage-Editor der Athena-Konsole, um SQL-Anweisungen für die Tabelle auszuführen. Du kannst Abfragen speichern, frühere Abfragen anzeigen oder Abfrageergebnisse im CSV-Format herunterladen.

Beispielabfragen

Hinweis: Ersetze in den folgenden Beispielabfragen test_table_vpclogs durch den Namen deiner Tabelle. Ändere die Spaltenwerte und andere Variablen für deinen Anwendungsfall.

Führe die folgende Abfrage 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ühre die folgende Abfrage aus, um den Server anzuzeigen, der die zehn wichtigsten 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;

Hinweis: 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 wichtigsten Einträge der Vorwoche zurückgegeben.

Führe die folgende Abfrage aus, um die Protokolle zu überprüfen, die für einen bestimmten Zeitraum erstellt wurden:

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';

Führe die folgende Abfrage aus, um Flow-Protokolle für eine bestimmte Quell-IP-Adresse innerhalb eines bestimmten Zeitraums anzuzeigen:

SELECT *FROM test_table_vpclogs
WHERE srcaddr = '10.117.1.22'
  AND day >= '2021/02/01'
  AND day < '2021/02/28';

Führe die folgende Abfrage aus, um die abgelehnten TCP-Verbindungen innerhalb eines bestimmten Zeitraums aufzulisten:

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ühre die folgende Abfrage 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ühre die folgende Abfrage aus, um die Flow-Protokolle für eine bestimmte Ziel-IP-Adresse innerhalb eines Zeitraums 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 Datenverkehr in meiner VPC mithilfe von Flow-Protokollen?

Analysieren von VPC-Flow-Protokollen mit Amazon Athena und Amazon QuickSight

AWS OFFICIALAktualisiert vor einem Jahr