收集 Amazon VPC Transit Gateway 流量記錄
剖析器版本:3.0
本文說明如何使用 Amazon S3 或 Amazon Kinesis Data Firehose,將 Amazon VPC Transit Gateway 流量記錄檔擷取至 Google Security Operations。Transit Gateway 流量記錄會擷取 Transit Gateway 附件的詳細網路流量中繼資料 (來源和目的地 IP、通訊埠、通訊協定、位元組和封包計數、動作)。這項資料可讓您在 Google SecOps 中進行安全監控、異常偵測和法規遵循稽核。
事前準備
請確認您已完成下列事前準備事項:
- Google SecOps 執行個體。
- 具有下列權限的 AWS 特殊存取權:
- 建立及管理 Transit Gateway 流量記錄
- 建立 S3 儲存桶 (適用於 S3 匯出選項)
- 建立 IAM 使用者、政策和角色
- 設定 Kinesis Data Firehose 傳送串流 (適用於 Firehose 選項)
- 存取 CloudWatch Logs 並建立訂閱篩選器 (適用於 Firehose 選項)
選項 - 匯出至 Amazon S3
啟用 Transit Gateway 流量記錄 (至 S3)
- 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 控制台。
- 在導覽窗格中,選擇「Transit gateways」(中轉閘道)。
- 選取一或多個 Transit Gateway 的核取方塊,然後依序選擇「Actions」> Create flow log。
- 在「目的地」部分,選取「傳送至 Amazon S3 值區」。
在「S3 bucket ARN」部分,輸入現有 S3 bucket 的 ARN (例如
arn:aws:s3:::tgw-flowlogs-bucket)。在「記錄檔記錄格式」中,選取流程記錄檔記錄的格式:
- AWS 預設格式 - 包含第 2 版到第 6 版的所有欄位。
- 自訂格式:只選取所需欄位。
在「記錄檔格式」中,選取「文字」 (預設) 或「Parquet」。
如要使用與 Hive 相容的前置字串進行分區,請選取「與 Hive 相容的 S3 前置字串」,然後視需要選取「啟用」。
在「Partition logs by time」(依時間劃分記錄) 部分,選取「Every 1 hour (60 min)」(每 1 小時 (60 分鐘)) 或「Every 24 hours (1440 min)」(每 24 小時 (1440 分鐘))。
(選用) 選擇「新增標記」,將標記套用至流程記錄。
按一下「建立流量記錄」。
建立 Amazon S3 儲存貯體
- 開啟 Amazon S3 控制台。
- 按一下「建立值區」。
- 請提供下列設定詳細資料:
- 值區名稱:輸入不重複的名稱 (例如
tgw-flowlogs-bucket)。 - AWS 區域:選取 Transit Gateway 所在的區域
- 值區名稱:輸入不重複的名稱 (例如
- 按一下「建立值區」。
建立可存取 Amazon S3 的 IAM 使用者
- 開啟 IAM console。
- 依序點選「使用者」>「新增使用者」。
- 輸入使用者名稱 (例如
chronicle-tgw-s3-reader)。 - 選取「程式輔助存取」。
- 點選 [Next: Permissions] (下一步:權限)。
- 選擇「直接附加現有政策」。
- 搜尋並選取「AmazonS3ReadOnlyAccess」AmazonS3ReadOnlyAccess政策。
- 依序點選「下一步:標記」「下一步:檢查」「建立使用者」。
- 複製 Access Key ID 和 Secret Access Key,用於 Google SecOps 動態消息設定。
在 Google SecOps 中設定動態饋給,擷取 Amazon VPC Transit Gateway 流量記錄 (S3)
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
AWS Transit Gateway Flow Logs - S3)。 - 選取「Amazon S3」做為「來源類型」。
- 選取「Amazon VPC Transit Gateway Flow Logs」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- S3 URI:值區 URI (例如
s3://tgw-flowlogs-bucket/flow-logs/)
- 來源刪除選項:根據偏好選取刪除選項:
- 永不:轉移後一律不刪除任何檔案。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
- 刪除已轉移的檔案和空白目錄:成功轉移後刪除檔案和空白目錄。
- 檔案存在時間上限:包含在過去天數內修改的檔案 (預設為 180 天)
- 存取金鑰 ID:具有 S3 bucket 存取權的 IAM 使用者存取金鑰
- 存取密鑰:具有 S3 bucket 存取權的 IAM 使用者私密金鑰
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- S3 URI:值區 URI (例如
點選「下一步」。
檢查動態饋給設定,然後按一下「提交」。
選項 - 透過 Amazon Kinesis Data Firehose 串流
啟用 Transit Gateway 流量記錄 (至 CloudWatch Logs)
- 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 控制台。
- 在導覽窗格中,選擇「Transit gateways」(中轉閘道)。
- 選取一或多個 Transit Gateway 的核取方塊,然後依序選擇「Actions」> Create flow log。
- 在「目的地」部分,選取「傳送至 CloudWatch Logs」。
在「Destination log group」(目的地記錄檔群組) 部分,選擇現有的記錄檔群組,或輸入新名稱來建立記錄檔群組 (例如
/aws/tgw/flowlogs)。在「IAM role」(IAM 角色) 中,指定具有將記錄發布至 CloudWatch Logs 權限的角色。
在「記錄檔記錄格式」中,選取流程記錄檔記錄的格式:
- AWS 預設格式 - 包含第 2 版到第 6 版的所有欄位。
- 自訂格式:只選取所需欄位。
(選用) 選擇「新增標記」,將標記套用至流程記錄。
按一下「建立流量記錄」。
在 Google SecOps 中建立動態饋給,以便擷取 Amazon VPC Transit Gateway 流量記錄 (Firehose)
- 依序前往「SIEM 設定」>「動態饋給」。
- 按一下「新增動態消息」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
AWS Transit Gateway Flow Logs - Firehose)。 - 選取「Amazon Data Firehose」做為「來源類型」。
- 選取「Amazon VPC Transit Gateway Flow Logs」做為「記錄類型」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號:輸入
\n - 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 分割分隔符號:輸入
- 點選「下一步」。
- 檢查動態饋給設定,然後按一下「提交」。
- 按一下「產生密鑰」,產生驗證這個動態消息的密鑰。
- 複製並儲存密鑰。您無法再次查看這個密鑰。
- 前往「詳細資料」分頁。
- 從「端點資訊」欄位複製動態消息端點網址。
- 按一下 [完成]。
為 Amazon Data Firehose 動態饋給建立 API 金鑰
- 前往 https://console.cloud.google.com/apis/credentials 的 Google Cloud 控制台「憑證」頁面。
- 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
- 按一下「編輯 API 金鑰」即可限制金鑰。
- 在「API restrictions」下方,選取「Restrict key」。
- 搜尋並選取「Google SecOps API」。
- 按一下 [儲存]。
- 複製並儲存 API 金鑰。
建構端點網址
以以下格式將 API 金鑰附加至動態饋給端點網址:
<FEED_ENDPOINT_URL>?key=<API_KEY>
更改下列內容:
<FEED_ENDPOINT_URL>:動態饋給端點網址<API_KEY>:API 金鑰範例:
https://malachiteingestion-pa.googleapis.com/v2/unstructuredlogentries:batchCreate?key=AIzaSyD...
請儲存這個完整網址,以供下一個步驟使用。
為 Firehose 建立 IAM 政策
- 在 AWS 控制台中,依序前往「IAM」>「Policies」>「Create policy」>「JSON」分頁標籤。
貼上下列政策 JSON:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord", "firehose:PutRecordBatch" ], "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/<DELIVERY_STREAM_NAME>" } ] }更改下列內容:
<REGION>:您的 AWS 區域 (例如us-east-1)<ACCOUNT_ID>:您的 AWS 帳戶 ID (12 位數)<DELIVERY_STREAM_NAME>:您的 Firehose 傳送串流名稱 (您會在下一個步驟中建立這個名稱)
為政策命名
TGWFlowLogsToFirehosePolicy(例如),然後按一下「建立政策」。
為 CloudWatch Logs 建立 IAM 角色
- 依序前往「IAM」>「角色」>「建立角色」。
選取「自訂信任政策」並貼上:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "logs.<REGION>.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }將
<REGION>替換為您的 AWS 區域。點選「下一步」。
搜尋並選取政策
TGWFlowLogsToFirehosePolicy。點選「下一步」。
為角色命名
TGWFlowLogsToFirehoseRole(例如),然後按一下「建立角色」。
建立 Kinesis Data Firehose 傳送串流
- 在 AWS 控制台中,依序前往「Kinesis」>「Data Firehose」>「Create delivery stream」(建立傳輸串流)。
請提供下列設定詳細資料:
來源和目的地:
- 來源:選取「直接 PUT 或其他來源」
- 目的地:選取「HTTP 端點」
傳送串流名稱:
- 傳送串流名稱:輸入名稱 (例如
tgw-flowlogs-to-secops)
- 傳送串流名稱:輸入名稱 (例如
HTTP 端點目的地:
- HTTP 端點網址:輸入您建構的完整端點網址 (動態饋給端點 + API 金鑰)
- 內容編碼:選取「GZIP」
自訂 HTTP 標頭:
- 按一下「新增自訂 HTTP 標頭」
- 標頭名稱:輸入
X-Goog-Chronicle-Auth - 標頭值:輸入您在建立動態饋給時儲存的密鑰
備份設定:
- Amazon S3 中的來源記錄備份:選取「僅限失敗的資料」
- S3 bucket:選取現有 bucket 或建立新 bucket,用於存放失敗的記錄
緩衝區提示:
- 緩衝區空間:輸入
1MiB - 緩衝間隔:輸入
60秒
- 緩衝區空間:輸入
按一下「建立傳送串流」。
等待傳送串流狀態變更為「Active」。
將 CloudWatch Log Group 訂閱至 Firehose
- 在 AWS 控制台中,依序前往「CloudWatch」>「Logs」>「Log groups」。
- 選取 Transit Gateway 流量記錄群組 (例如
/aws/tgw/flowlogs)。 - 按一下「訂閱篩選器」分頁標籤。
- 依序點選「建立」> 建立 Amazon Kinesis Data Firehose 訂閱篩選器。
- 請提供下列設定詳細資料:
- 目的地:選取放送串流
tgw-flowlogs-to-secops - 授予權限:選取角色
TGWFlowLogsToFirehoseRole - 訂閱篩選器名稱:輸入名稱 (例如
tgw-flowlogs-to-chronicle) - 記錄檔格式:選取「其他」
- 訂閱篩選器模式:留空即可傳送所有事件
- 目的地:選取放送串流
- 按一下「開始串流播放」。
UDM 對應表
| 記錄欄位 | UDM 對應 | 邏輯 |
|---|---|---|
packets_lost_blackhole_label |
additional.fields |
已合併 |
packets_lost_mtu_exceeded_label |
additional.fields |
已合併 |
packets_lost_no_route_label |
additional.fields |
已合併 |
packets_lost_ttl_expired_label |
additional.fields |
已合併 |
start_time_label |
additional.fields |
已合併 |
tcp_flags_label |
additional.fields |
已合併 |
tgw_attachment_id_label |
additional.fields |
已合併 |
tgw_id_label |
additional.fields |
已合併 |
tgw_pair_attachment_id_label |
additional.fields |
已合併 |
type_label |
additional.fields |
已合併 |
end_time |
metadata.event_timestamp |
已剖析為 UNIX |
event_type |
metadata.event_type |
直接對應 |
account_id |
metadata.product_log_id |
直接對應 |
version |
metadata.product_version |
直接對應 |
flow_direction |
network.direction |
已對應:(?i)ingress → INBOUND、(?i)egress → OUTBOUND |
bytes |
network.sent_bytes |
直接對應 |
packets |
network.sent_packets |
直接對應 |
tgw_src_eni |
principal.asset.asset_id |
直接對應 |
srcaddr |
principal.asset.ip |
已合併 |
srcaddr |
principal.ip |
已合併 |
region |
principal.location.country_or_region |
直接對應 |
tgw_src_az_id |
principal.location.country_or_region |
直接對應 |
srcport |
principal.port |
直接對應 |
pkt_src_aws_service_label |
principal.resource.attribute.labels |
已合併 |
tgw_src_az_id_label |
principal.resource.attribute.labels |
已合併 |
tgw_src_subnet_id |
principal.resource.name |
直接對應 |
tgw_src_vpc_id |
principal.resource.product_object_id |
直接對應 |
resource_type |
principal.resource.resource_subtype |
直接對應 |
tgw_src_vpc_account_id |
principal.user.userid |
直接對應 |
security_result_action |
security_result.action |
已合併 |
protocol_label |
security_result.detection_fields |
已合併 |
tgw_dst_eni |
target.asset.asset_id |
直接對應 |
dstaddr |
target.asset.ip |
已合併 |
dstaddr |
target.ip |
已合併 |
tgw_dst_az_id |
target.location.country_or_region |
直接對應 |
dstport |
target.port |
直接對應 |
pkt_dst_aws_service_label |
target.resource.attribute.labels |
已合併 |
tgw_dst_subnet_id |
target.resource.name |
直接對應 |
tgw_dst_vpc_id |
target.resource.product_object_id |
直接對應 |
tgw_dst_vpc_account_id |
target.user.userid |
直接對應 |
| 不適用 | metadata.product_name |
常數:AWS VPC Transit Gateway |
| 不適用 | metadata.vendor_name |
常數:AWS |
| 不適用 | network.direction |
常數:INBOUND |
變更記錄
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。