收集 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」。
- 勾選一或多個傳輸閘道的核取方塊,然後依序選擇「Actions」 >「Create flow log」。
- 在「Destination」部分,選取「Send to an Amazon S3 bucket」。
在「S3 bucket ARN」部分,輸入現有 S3 bucket 的 ARN (例如
arn:aws:s3:::tgw-flowlogs-bucket)。在「Log record format」(記錄檔格式) 部分,選取流量記錄檔格式:
- AWS 預設格式 - 包含第 2 版到第 6 版的所有欄位。
- 自訂格式:只選取所需欄位。
在「Log file format」(記錄檔格式) 部分,選取「Text」(文字) (預設) 或「Parquet」。
在「Hive-compatible S3 prefix」(與 Hive 相容的 S3 前置字元) 部分,您可以選取「Enable」(啟用),使用與 Hive 相容的前置字元進行分區。
在「Partition logs by time」(依時間劃分記錄) 部分,選取「Every 1 hour (60 min)」(每 1 小時 (60 分鐘)) 或「Every 24 hours (1440 min)」(每 24 小時 (1440 分鐘))。
(選用) 選擇「新增標記」,將標記套用至流程記錄。
按一下「Create flow log」(建立流量記錄)。
建立 Amazon S3 儲存貯體
- 開啟 Amazon S3 控制台。
- 按一下「建立值區」。
- 請提供下列設定詳細資料:
- Bucket 名稱:輸入不重複的名稱 (例如
tgw-flowlogs-bucket) - AWS 區域:選取 Transit Gateway 所在的區域
- Bucket 名稱:輸入不重複的名稱 (例如
- 按一下「建立值區」。
建立可存取 Amazon S3 的 IAM 使用者
- 開啟 IAM console。
- 依序按一下「使用者」 > 「新增使用者」。
- 輸入使用者名稱 (例如
chronicle-tgw-s3-reader)。 - 選取「程式輔助存取權」。
- 點選 [Next: Permissions] (下一步:權限)。
- 選擇「直接附加現有政策」。
- 搜尋並選取「AmazonS3ReadOnlyAccess」AmazonS3ReadOnlyAccess政策。
- 依序點選「Next: Tags」>「Next: Review」>「Create user」。
- 複製 Google SecOps 資訊提供設定的「存取金鑰 ID」和「私密存取金鑰」。
在 Google SecOps 設定動態饋給,擷取 Amazon VPC Transit Gateway 流量記錄 (S3)
- 依序前往 「SIEM 設定」 > 「動態饋給」。
- 按一下「新增動態饋給」。
- 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如
AWS Transit Gateway Flow Logs - S3)。 - 在「Source type」(來源類型) 部分,選取「Amazon S3」。
- 在「Log type」(記錄類型) 選取「Amazon VPC Transit Gateway Flow Logs」(Amazon VPC Transit Gateway 流量記錄)。
- 點選「下一步」。
指定下列輸入參數的值:
- S3 URI:值區 URI (例如
s3://tgw-flowlogs-bucket/flow-logs/)
- 來源刪除選項:根據偏好選取刪除選項:
- 「Never」(一律不):一律不刪除轉移後的檔案。
- 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
- 刪除已轉移的檔案和空目錄:成功轉移後,刪除檔案和空目錄。
- 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)
- 存取金鑰 ID:有權存取 S3 bucket 的 IAM 使用者存取金鑰
- 私密存取金鑰:具有 S3 儲存空間存取權的 IAM 使用者私密金鑰
- 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- S3 URI:值區 URI (例如
點選「下一步」。
檢查動態饋給設定,然後按一下「提交」。
選項 - 透過 Amazon Kinesis Data Firehose 串流
啟用 Transit Gateway 流量記錄 (至 CloudWatch Logs)
- 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 控制台。
- 在導覽窗格中,選擇「Transit gateways」。
- 選取一或多個轉運閘道的核取方塊,然後選擇「動作」> 建立流量記錄。
- 在「Destination」部分,選取「Send to CloudWatch Logs」。
在「Destination log group」(目的地記錄檔群組) 部分,選擇現有記錄檔群組,或輸入新名稱來建立記錄檔群組 (例如
/aws/tgw/flowlogs)。在「IAM role」(IAM 角色) 部分,指定有權將記錄發布至 CloudWatch Logs 的角色。
在「記錄記錄格式」中,選取流程記錄的格式:
- AWS 預設格式 - 包含第 2 版到第 6 版的所有欄位。
- 自訂格式:只選取所需欄位。
(選用) 選擇「新增標記」,將標記套用至流程記錄。
按一下「Create flow log」(建立流量記錄)。
在 Google SecOps 中建立動態饋給,以便擷取 Amazon VPC Transit Gateway 流量記錄 (Firehose)
- 依序前往 「SIEM 設定」 > 「動態饋給」。
- 按一下「新增動態饋給」。
- 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如
AWS Transit Gateway Flow Logs - Firehose)。 - 「Source type」(來源類型) 請選取「Amazon Data Firehose」。
- 選取「Amazon VPC Transit Gateway Flow Logs」做為「Log type」。
- 點選「下一步」。
- 指定下列輸入參數的值:
- 分割分隔符號:輸入
\n - 資產命名空間:資產命名空間
- 擷取標籤:要套用至這個動態饋給事件的標籤
- 分割分隔符號:輸入
- 點選「下一步」。
- 檢查動態饋給設定,然後按一下「提交」。
- 按一下「產生密鑰」,產生用於驗證這個動態消息的密鑰。
- 複製並儲存密鑰。您無法再次查看這項密鑰。
- 前往「詳細資料」分頁。
- 複製「端點資訊」欄位中的動態饋給端點網址。
- 按一下「完成」。
為 Amazon Data Firehose 建立 API 金鑰
- 前往 Google Cloud 控制台的「憑證」頁面,網址為 https://console.cloud.google.com/apis/credentials。
- 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
- 按一下「編輯 API 金鑰」,即可限制金鑰。
- 在「API 限制」下方,選取「限制金鑰」。
- 搜尋並選取「Google SecOps API」。
- 按一下 [儲存]。
- 複製並儲存 API 金鑰。
建構端點網址
以以下格式將 API 金鑰附加至動態饋給端點網址:
<FEED_ENDPOINT_URL>?key=<API_KEY>
更改下列內容:
<FEED_ENDPOINT_URL>:動態饋給端點網址<API_KEY>:API 金鑰範例:
https://{region}-chronicle.googleapis.com/v1/{parent}/logs:import?key=AIzaSyD...其中
{region}是 Google SecOps 執行個體的區域 (例如us、europe或asia-southeast1),{parent}是資源路徑,格式為projects/<PROJECT_ID>/locations/<LOCATION>/instances/<INSTANCE_ID>/logTypes/<LOG_TYPE>。
請儲存這個完整網址,以利進行下一個步驟。
建立 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(舉例來說),然後按一下「Create policy」(建立政策)。
建立 CloudWatch Logs 的 IAM 角色
- 依序前往「IAM」>「角色」>「建立角色」。
選取「Custom trust policy」,然後貼上:
{ "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 端點」
Delivery stream name:
- 放送串流名稱:輸入名稱 (例如
tgw-flowlogs-to-secops)
- 放送串流名稱:輸入名稱 (例如
HTTP 端點目的地:
- HTTP 端點網址:輸入您建構的完整端點網址 (動態饋給端點 + API 金鑰)
- 內容編碼:選取「GZIP」
自訂 HTTP 標頭:
- 按一下「新增自訂 HTTP 標頭」
- 標頭名稱:輸入
X-Goog-Chronicle-Auth - 標頭值:輸入在建立動態饋給步驟中儲存的密鑰
備份設定:
- Amazon S3 中的來源記錄備份:選取「僅限失敗的資料」
- S3 bucket:選取現有 bucket,或為失敗的記錄建立新 bucket
緩衝區提示:
- 緩衝區空間:輸入
1MiB - 緩衝間隔:輸入
60秒
- 緩衝區空間:輸入
按一下「建立放送串流」。
等待傳輸串流狀態變更為「Active」。
將 CloudWatch 日誌群組訂閱至 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 專業人員尋求解答。