如何使用 Amazon Athena 分析 Amazon VPC 流程日誌?

3 分的閱讀內容
0

我想使用 Amazon Athena 分析我的 Amazon Virtual Private Cloud (Amazon VPC) 流程日誌。

簡短描述

Amazon VPC 流程日誌可讓您擷取 VPC 中進出網路介面的 IP 流量相關資訊。這些日誌可用於調查 Amazon VPC 網路中的網路流量模式,並識別威脅和風險。

解決方法

使用 Athena 分析 VPC 日誌

若要使用 Amazon Athena 分析存取日誌,請執行下列動作:

1.    在 Amazon Athena 主控台查詢編輯器標籤上,執行類似下列的命令以建立資料庫test_db_vpclogs
**重要:**最佳做法是在與要儲存流程日誌的 Amazon S3 儲存貯體相同的 AWS 區域中建立資料庫。

CREATE DATABASE test_db_vpclogs;

**注意:**請務必將 test_db_vpclogs 取代為您要建立的資料庫名稱。

2.    在您建立的資料庫中,透過執行類似下列的命令,為 VPC 流程記錄建立資料表。透過這個命令,您可以使用分割區投影建立資料表、分割資料表,以及根據您的使用案例自動填入分割區。

CREATE EXTERNAL TABLE IF NOT EXISTS test_table_vpclogs (
version int,
account string,
interfaceid string,
sourceaddress string,
destinationaddress string,
sourceport int,
destinationport int,
protocol int,
numpackets int,
numbytes bigint,
starttime int,
endtime int,
action string,
logstatus string,
vpcid string,
subnetid string,
instanceid string,
tcpflags int,
type string,
pktsrcaddr string,
pktdstaddr string,
aws_region string,
azid string,
sublocationtype string,
sublocationid string,
pktsrcawsservice string,
pktdstawsservice string,
flowdirection string,
trafficpath string
)
PARTITIONED BY (region string, day string)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LOCATION 's3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/'
TBLPROPERTIES
(
"skip.header.line.count"="1",
"projection.enabled" = "true",
"projection.region.type" = "enum",
"projection.region.values" = "us-east-1,us-west-2,ap-south-1,eu-west-1",
"projection.day.type" = "date",
"projection.day.range" = "2021/01/01,NOW",
"projection.day.format" = "yyyy/MM/dd",
"storage.location.template" = "s3://awsexamplebucket/awsexampleprefix/awsexamplelogs/1111222233334444/vpcflowlogs/${region}/${day}"
)

請務必執行以下操作:

  • 將查詢中的 test_table_vpclogs 取代為資料表的名稱。
  • 修改查詢中的 LOCATION 參數,以指向包含日誌資料的 Amazon S3 儲存貯體。

**注意:**如果 Amazon S3 中沒有投影的分割區,則 Athena 仍然會投影該分割區。在查詢中使用分割的屬性是最佳做法。

3.    使用主控台中的查詢編輯器在資料表上執行 SQL 語句。您可以儲存查詢、檢視先前的查詢或下載 .csv 格式的查詢結果。

查詢範例

**注意:**以您建立的資料表名稱取代查詢中的 test_table_vpclogs。修改欄值和其他變量以適合您的查詢。

1.    若要檢視特定時間段內依時間順序的前 100 個存取日誌項目,請執行類似下列內容的查詢:

SELECT * FROM test_table_vpclogs WHERE day >= '2021/02/01' AND day < '2021/02/28' ORDER BY time ASC LIMIT 100;

2.    若要檢視哪個伺服器在特定期間內接收的 HTTP 封包數目為前十,請執行類似下列內容的查詢:

SELECT SUM(numpackets) AS
  packetcount,
  destinationaddress
FROM test_table_vpclogs
WHERE destinationport = 443 AND day >= '2021/03/01' AND day < '2021/03/31'
GROUP BY destinationaddress
ORDER BY packetcount DESC
LIMIT 10;

此查詢會計算 HTTPS 連接埠 443 上接收到的封包數目,並依目標 IP 地址將它們分組。然後,它傳回前一週的前 10 個項目。

3.    若要檢查在特定期間內建立的日誌,請執行類似下列內容的查詢:

SELECT interfaceid, sourceaddress, action, protocol, to_iso8601(from_unixtime(starttime))
AS start_time, to_iso8601(from_unixtime(endtime))
AS end_time
FROM test_table_vpclogs
WHERE day >= '2021/04/01' AND day < '2021/04/30';

此查詢會傳回在 2020-12-04 11:28:19.000 與 2020-12-04 11:28:33.000 之間建立的日誌。

4.    若要檢視特定時段之間特定來源 IP 地址的存取日誌,請執行類似下列內容的查詢:

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

5.    若要列出拒絕的 TCP 連線,請執行類似下列內容的查詢:

SELECT day_of_week(date) AS
day,
date,
interfaceid,
sourceaddress,
action,
protocol
FROM test_table_vpclogs
WHERE action = 'REJECT' AND protocol = 6 AND day >= '2021/02/01' AND day < '2021/02/28' LIMIT 10;

6.    若要檢視以 '10.117' 開頭的 IP 地址範圍的存取日誌,請執行類似下列內容的查詢:

SELECT * FROM test_table_vpclogs WHERE split_part(sourceaddress,’.’, 1)=’10’ AND split_part(sourceaddress,’.’, 2) =‘117’;

7.    若要檢視特定時間範圍內特定目的地 IP 地址的存取日誌,請執行類似下列內容的查詢:

SELECT * FROM test_table_vpclogs WHERE destinationaddress= '10.0.1.14' AND day >= '2021/01/01' AND day < '2021/01/31';

相關資訊

如何使用流程日誌監控 VPC 中的流量?

使用 Amazon Athena 和 Amazon QuickSight 分析 VPC 流程日誌

AWS 官方
AWS 官方已更新 2 年前