Datadog を使って VPC フローログを分析してみた

Datadog を使って VPC フローログを分析してみた

Clock Icon2025.04.09

こんにちは。テクニカルサポートチームのShiinaです。

はじめに

AWS の VPC フローログを Datadog に転送して分析することで、ネットワークの可視化やセキュリティ監視をより効果的に行うことができます。
今回は、VPC フローログを Datadog に送信し、Log Management 機能を活用してログ分析を実施してみました。
本記事では、Amazon Data Firehose を利用したログ転送の設定手順から、Datadog 上でのログの確認・分析方法までを解説します。

VPC フローログの転送方法について

VPC フローログを Datadog に送信する代表的な方法として次の2種類があります。

  • Amazon Data Firehose を利用する方法(おすすめ)
  • Datadog Forwarder Lambda 関数を利用する方法

Amazon Data Firehose を利用する方法は、運用負担が少なく、コスト面でも優れているため推奨されます。
特に高トラフィック環境では、Lambda 関数を使う方法では同時実行数の制限やタイムアウトのリスクがあるため、Datadog Forwarder Lambda の利用には注意が必要です。

概要

Amazon Data Firehose ストリームを作成し、宛先を Datadog に設定します。
Datadog へのログ転送に必要な API キーは、AWS Secrets Manager に安全に保管し、Firehose から参照して使用します。
VPC フローログの送信先としてこの Firehose ストリームを指定することで、ログを Datadog に転送します。
Firehose ストリームでの配信に失敗した場合に備えて、失敗したログを保存する S3 バケットを設定します。
任意でそのバケットをトリガーとして Datadog Forwarder Lambda 関数を実行し、ログの再送信を行います。

前提

  • Datadog API キーが発行されていること

セットアップ

1. Secrets Manager シークレット登録

  1. AWS Secrets Manager ナビゲーションペインより「シークレット」を選択します。
  2. 「新しいシークレットを保存する」を選択します。
  3. 次のように値を入力し、シークレットを作成します。
  • シークレットのタイプ:その他のシークレットのタイプ
  • キー/値のペア:プレーンテキスト
  • 値には 下記の JSON 形式で API キーの値を指定してください。
{"api_key":"xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
  • シークレットの名前:任意の名称(例:Datadog-Firehose-API-Key)
  • 自動ローテーション:なし
    新しいシークレットを保存する-Secrets-Manager-ap-northeast-1-03-30-2025_03_18_PM

2. バックアップ用 S3 バケット作成

  1. Amazon S3 ナビゲーションペインより「汎用バケット」を選択します。
  2. 「バケットを作成」を選択します。
  3. バケット名を入力の上、バケットを作成します。

3. Amazon Data Firehose ストリーム作成

  1. Amazon Data Firehose ナビゲーションペインより「Firehose ストリーム」を選択します。
  2. 「Firehose ストリームを作成」を選択します。
  3. 次のように値を入力し、Firehose ストリームを作成します。
  • ソース:Direct PUT
  • 送信先:Datadog
  • Firehose ストリーム名:任意の名称(例:Datadog-Log-Firehose-Stream)
  • HTTP エンドポイント URL:Datadog ログ - US1 (※利用している Datadog サイトを指定)
  • 認証:AWS Secrets Manager
  • シークレット名:API キーを登録したシークレット
  • バッファサイズ:2 Mib
  • バックアップの設定:失敗したデータのみ
  • S3 バックアップ:作成したバケット
  • サービスアクセス:IAM ロールを作成または更新
    firehoseストリーム作成

4. VPC フローログ設定

  1. VPC ナビゲーションペインより「お使いの VPC」を選択します。
    ※サブネットでフローログを設定する場合は「サブネット」を選択してください。
  2. 一覧より設定する VPC にチェックを入れ、フローログタブより「フローログを作成」を選択します。
  3. 次のように値を入力し、フローログを作成します。
  • 名前:任意の名称(例:vpcflowlog)
  • 送信先:同じアカウントの Amazon Data Firehose に送信
  • Amazon Firehose ストリーム名:作成した Amazon Firehose ストリーム名
    vpcflowlog

5. ストリーミングデータ配信確認

  1. Amazon Data Firehose ナビゲーションペインより「Firehose ストリーム」を選択します。
  2. 一覧より作成したストリームを選択します。
  3. モニタリングタブで、受信レコード数や HTTP エンドポイントへの配信状況などのメトリクスを確認します。
    配信メトリクス

6. Datadog ログ確認

  1. Datadog コンソールより Logs Explorer を選択します。
    menu

  2. Search for フィールドに次の検索クエリを入力します。
    ※必要に応じて右上のタイムフレームを指定してください。

service:vpc
  1. VPC フローログレコードが表示されていれば Datadog に正常に転送されています。
    Log-Explorer-Datadog-04-07-2025_05_26_PM

7. Datadog Forwarder Lambda 関数トリガー(任意)

  1. Lambda 関数が作成されていない場合は Datadog Forwarder Lambda 関数を作成します。
    作成方法については下記 URL をご参考ください。
    https://docs.datadoghq.com/ja/logs/guide/forwarder/?tab=cloudformation
  2. Lambda ナビゲーションペインより「関数」を選択します。
  3. 一覧より Datadog Forwarder Lambda 関数を選択します。
  4. 「トリガーを追加」を選択します。
  5. 次のように値を入力し、トリガーを追加します。
    ソース:S3
    バケット:作成したバックアップ用 S3 バケット
    イベントタイプ:すべてのオブジェクト作成イベント
    s3toriga1

s3toriga

VPC フローログの分析

Datadog の Logs Explorer を利用すると簡単に VPC フローログの分析や可視化が行えます。

SSH・RDP 接続拒否の記録分析

ポート22(SSH)および3389(RDP)への接続試行が拒否された記録を時系列で表示します。
短時間に多数の接続拒否(REJECT)ログが確認された場合、パスワード総当たり(ブルートフォース)攻撃や不正なネットワークスキャンが行われている可能性があります。

  1. Search for フィールドに次の検索クエリを入力します。
    ※必要に応じて右上のタイムフレームを指定してください。
@vpc.action:REJECT @network.destination.port:(3389 OR 22)
  1. Visualize as Timeseries を選択します。
  2. Group into Fields Show Count of all log by Everythingを選択します。
    timeslie

地理的情報に基づく国別の円グラフ

IP アドレスの地理的位置情報を特定するための「geoIP パーサー」[1]を使用して、国ごとのデータを円グラフで視覚化します。

  1. Search for フィールドに次の検索クエリを入力します。
    ※必要に応じて右上のタイムフレームを指定してください。
@vpc.action:REJECT @network.destination.port:(3389 OR 22)
  1. Visualize as Pie Chart を選択します。
  2. Group into Fields Show Count of all log by Country Nameを選択します。
    pic

クライアント IP アドレス別の接続試行回数

各クライアント IP アドレスからの接続試行回数を集計して表示します。
これにより、特定の IP アドレスからの異常な接続パターンを把握できます。

  1. Search for フィールドに次の検索クエリを入力します。
    ※必要に応じて右上のタイムフレームを指定してください。
@vpc.action:REJECT @network.destination.port:(3389 OR 22)
  1. Visualize as Table を選択します。
  2. Group into Fields Show Count of all log by Client IPを選択します。
    table

通信開始元ポートの利用上位リスト

クライアントが通信を開始する際に使用しているポート番号の利用頻度を分析し、最も多く使用されているポートの上位を表示します。
これにより、一般的な通信パターンや潜在的な異常を特定できます。

  1. Visualize as Top List を選択します。
  2. Group into Fields Show Count of all log by Client Portを選択します。
    top

アウトバウンドトラフィック量の分析

時系列で ENI(Elastic Network Interface)ごとのトラフィック量を可視化し、ピーク時間を把握できます。

  1. Visualize as Timeseries を選択します。
  2. Group into Fields Show Count of Bytes Written by Interfaceを選択します。
    転送量

まとめ

VPC フローログを Datadog に連携することで、ネットワークの異常や攻撃の兆候を可視化できます。
IP アドレスや時間帯ごとの傾向分析により、潜在的なリスクの早期発見が可能になります。
クラウド環境の安全性と可用性を高めるために、ログ分析の仕組みを整えておくことが重要です。

本記事が参考になれば幸いです。

参考

https://www.datadoghq.com/ja/blog/send-amazon-vpc-flow-logs-to-data-firehose-and-datadog/
https://docs.datadoghq.com/ja/logs/guide/send-aws-services-logs-with-the-datadog-kinesis-firehose-destination/
https://docs.datadoghq.com/ja/integrations/amazon_vpc/

脚注
  1. geoIP パーサーは、IP アドレスの属性を受け取り、対象の属性パスに大陸、国、小区域、または都市情報 (利用可能な場合) を抽出します。
    https://docs.datadoghq.com/ja/logs/log_configuration/processors/?tab=ui#geoip-パーサー ↩︎

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.