收集 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)

  1. 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 控制台。
  2. 在導覽窗格中,選擇「Transit gateways」。
  3. 勾選一或多個傳輸閘道的核取方塊,然後依序選擇「Actions」 >「Create flow log」。
  4. 在「Destination」部分,選取「Send to an Amazon S3 bucket」。
  5. 在「S3 bucket ARN」部分,輸入現有 S3 bucket 的 ARN (例如 arn:aws:s3:::tgw-flowlogs-bucket)。

  6. 在「Log record format」(記錄檔格式) 部分,選取流量記錄檔格式:

    • AWS 預設格式 - 包含第 2 版到第 6 版的所有欄位。
    • 自訂格式:只選取所需欄位。
  7. 在「Log file format」(記錄檔格式) 部分,選取「Text」(文字) (預設) 或「Parquet」。

  8. 在「Hive-compatible S3 prefix」(與 Hive 相容的 S3 前置字元) 部分,您可以選取「Enable」(啟用),使用與 Hive 相容的前置字元進行分區。

  9. 在「Partition logs by time」(依時間劃分記錄) 部分,選取「Every 1 hour (60 min)」(每 1 小時 (60 分鐘)) 或「Every 24 hours (1440 min)」(每 24 小時 (1440 分鐘))。

  10. (選用) 選擇「新增標記」,將標記套用至流程記錄。

  11. 按一下「Create flow log」(建立流量記錄)。

建立 Amazon S3 儲存貯體

  1. 開啟 Amazon S3 控制台。
  2. 按一下「建立值區」。
  3. 請提供下列設定詳細資料:
    • Bucket 名稱:輸入不重複的名稱 (例如 tgw-flowlogs-bucket)
    • AWS 區域:選取 Transit Gateway 所在的區域
  4. 按一下「建立值區」。

建立可存取 Amazon S3 的 IAM 使用者

  1. 開啟 IAM console。
  2. 依序按一下「使用者」 > 「新增使用者」。
  3. 輸入使用者名稱 (例如 chronicle-tgw-s3-reader)。
  4. 選取「程式輔助存取權」。
  5. 點選 [Next: Permissions] (下一步:權限)。
  6. 選擇「直接附加現有政策」。
  7. 搜尋並選取「AmazonS3ReadOnlyAccess」AmazonS3ReadOnlyAccess政策。
  8. 依序點選「Next: Tags」>「Next: Review」>「Create user」。
  9. 複製 Google SecOps 資訊提供設定的「存取金鑰 ID」和「私密存取金鑰」。

在 Google SecOps 設定動態饋給,擷取 Amazon VPC Transit Gateway 流量記錄 (S3)

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在「動態饋給名稱」欄位中輸入動態饋給名稱 (例如 AWS Transit Gateway Flow Logs - S3)。
  4. 在「Source type」(來源類型) 部分,選取「Amazon S3」。
  5. 在「Log type」(記錄類型) 選取「Amazon VPC Transit Gateway Flow Logs」(Amazon VPC Transit Gateway 流量記錄)。
  6. 點選「下一步」。
  7. 指定下列輸入參數的值:

    • S3 URI:值區 URI (例如 s3://tgw-flowlogs-bucket/flow-logs/)
    • 來源刪除選項:根據偏好選取刪除選項:
      • 「Never」(一律不):一律不刪除轉移後的檔案。
      • 刪除已轉移的檔案:成功轉移檔案後刪除檔案。
      • 刪除已轉移的檔案和空目錄:成功轉移後,刪除檔案和空目錄。
    • 檔案存在時間上限:納入過去幾天內修改過的檔案 (預設為 180 天)
    • 存取金鑰 ID:有權存取 S3 bucket 的 IAM 使用者存取金鑰
    • 私密存取金鑰:具有 S3 儲存空間存取權的 IAM 使用者私密金鑰
    • 資產命名空間:資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  8. 點選「下一步」。

  9. 檢查動態饋給設定,然後按一下「提交」。

選項 - 透過 Amazon Kinesis Data Firehose 串流

啟用 Transit Gateway 流量記錄 (至 CloudWatch Logs)

  1. 前往 https://console.aws.amazon.com/vpc/ 開啟 Amazon VPC 控制台。
  2. 在導覽窗格中,選擇「Transit gateways」。
  3. 選取一或多個轉運閘道的核取方塊,然後選擇「動作」> 建立流量記錄。
  4. 在「Destination」部分,選取「Send to CloudWatch Logs」。
  5. 在「Destination log group」(目的地記錄檔群組) 部分,選擇現有記錄檔群組,或輸入新名稱來建立記錄檔群組 (例如 /aws/tgw/flowlogs)。

  6. 在「IAM role」(IAM 角色) 部分,指定有權將記錄發布至 CloudWatch Logs 的角色。

  7. 在「記錄記錄格式」中,選取流程記錄的格式:

    • AWS 預設格式 - 包含第 2 版到第 6 版的所有欄位。
    • 自訂格式:只選取所需欄位。
  8. (選用) 選擇「新增標記」,將標記套用至流程記錄。

  9. 按一下「Create flow log」(建立流量記錄)。

在 Google SecOps 中建立動態饋給,以便擷取 Amazon VPC Transit Gateway 流量記錄 (Firehose)

  1. 依序前往 「SIEM 設定」 > 「動態饋給」。
  2. 按一下「新增動態饋給」。
  3. 在「Feed name」(動態饋給名稱) 欄位中,輸入動態饋給名稱 (例如 AWS Transit Gateway Flow Logs - Firehose)。
  4. 「Source type」(來源類型) 請選取「Amazon Data Firehose」。
  5. 選取「Amazon VPC Transit Gateway Flow Logs」做為「Log type」。
  6. 點選「下一步」。
  7. 指定下列輸入參數的值:
    • 分割分隔符號:輸入 \n
    • 資產命名空間:資產命名空間
    • 擷取標籤:要套用至這個動態饋給事件的標籤
  8. 點選「下一步」。
  9. 檢查動態饋給設定,然後按一下「提交」。
  10. 按一下「產生密鑰」,產生用於驗證這個動態消息的密鑰。
  11. 複製並儲存密鑰。您無法再次查看這項密鑰。
  12. 前往「詳細資料」分頁。
  13. 複製「端點資訊」欄位中的動態饋給端點網址。
  14. 按一下「完成」。

為 Amazon Data Firehose 建立 API 金鑰

  1. 前往 Google Cloud 控制台的「憑證」頁面,網址為 https://console.cloud.google.com/apis/credentials。
  2. 按一下 [Create credentials] (建立憑證),然後選取 [API key] (API 金鑰)。
  3. 按一下「編輯 API 金鑰」,即可限制金鑰。
  4. 在「API 限制」下方,選取「限制金鑰」。
  5. 搜尋並選取「Google SecOps API」。
  6. 按一下 [儲存]。
  7. 複製並儲存 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 政策

  1. 在 AWS 控制台中,依序前往「IAM」>「Policies」>「Create policy」>「JSON」分頁標籤。
  2. 貼上以下政策 JSON:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "firehose:PutRecord",
                    "firehose:PutRecordBatch"
                ],
                "Resource": "arn:aws:firehose:<REGION>:<ACCOUNT_ID>:deliverystream/<DELIVERY_STREAM_NAME>"
            }
        ]
    }
    
  3. 更改下列內容:

    • <REGION>:您的 AWS 區域 (例如 us-east-1)
    • <ACCOUNT_ID>:您的 AWS 帳戶 ID (12 碼數字)
    • <DELIVERY_STREAM_NAME>:Firehose 交付串流名稱 (您將在下一個步驟建立)
  4. 將政策命名為 TGWFlowLogsToFirehosePolicy (舉例來說),然後按一下「Create policy」(建立政策)。

建立 CloudWatch Logs 的 IAM 角色

  1. 依序前往「IAM」>「角色」>「建立角色」。
  2. 選取「Custom trust policy」,然後貼上:

    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Principal": {
                    "Service": "logs.<REGION>.amazonaws.com"
                },
                "Action": "sts:AssumeRole"
            }
        ]
    }
    
  3. 將 <REGION> 替換為您的 AWS 區域。

  4. 點選「下一步」。

  5. 搜尋並選取政策 TGWFlowLogsToFirehosePolicy。

  6. 點選「下一步」。

  7. 將角色命名為 TGWFlowLogsToFirehoseRole (例如),然後按一下「建立角色」。

建立 Kinesis Data Firehose 交付串流

  1. 在 AWS 控制台中,依序前往「Kinesis」>「Data Firehose」>「Create delivery stream」。
  2. 提供下列設定詳細資料:

    • 來源和目的地:

      • 來源:選取「直接 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
    • 緩衝區提示:

      • 緩衝區空間:輸入 1 MiB
      • 緩衝間隔:輸入 60 秒
  3. 按一下「建立放送串流」。

  4. 等待傳輸串流狀態變更為「Active」。

將 CloudWatch 日誌群組訂閱至 Firehose

  1. 在 AWS 控制台中,依序前往「CloudWatch」>「Logs」>「Log groups」。
  2. 選取 Transit Gateway 流量記錄群組 (例如 /aws/tgw/flowlogs)。
  3. 按一下「訂閱項目篩選器」分頁標籤。
  4. 依序點選「建立」>「建立 Amazon Kinesis Data Firehose 訂閱篩選器」。
  5. 請提供下列設定詳細資料:
    • 目的地:選取傳送串流 tgw-flowlogs-to-secops
    • 授予權限:選取角色 TGWFlowLogsToFirehoseRole
    • 訂閱篩選器名稱:輸入名稱 (例如 tgw-flowlogs-to-chronicle)
    • 記錄檔格式:選取「其他」
    • 訂閱篩選器模式:留空即可傳送所有事件
  6. 按一下「開始串流播放」。

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 專業人員尋求解答。