AWS VPCフローログでトラフィックをキャプチャする

AWSのVPCフローログでネットワークインターフェース単位のトラフィックをキャプチャするサンプルです。

目次

AWS VPCフローログとは
  ポリシーを作成する
  ロールを作成する
  CloudWatchでロググループを作成
  フローログの作成
クエリを実行してネットワークのトラフィックを確認

VPCフローログとは

AWSのVPCフローログは、VPC内でのネットワークトラフィックのログを取得できます。

送信元IPアドレス、宛先IPアドレス、送信元ポート、宛先ポート、トラフィックのプロトコル、トラフィックのパケット数やバイト数などの情報が含まれます。

インスタンスに到達するトラフィックを確認等できます。https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-logs.html

 

ポリシーを作成する

VPCフローログのポリシーと信頼ポリシーの設定内容は以下にあります。https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/flow-logs-cwl.html

 

1.検索入力欄で「IAM」と入力し、表示された「IAM」をクリックします。

2.「ポリシー」をクリックし「ポリシーを作成」をクリックします。

3.「JSON」をクリックしてJSONを修正します。完了後「次へ」をクリックします。

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents",
        "logs:DescribeLogGroups",
        "logs:DescribeLogStreams"
      ],
      "Resource": "*"
    }
  ]
}   

 

4.ポリシー名、説明を入力します。「ポリシーの作成」をクリックでポリシーが作成されます。

 

ロールを作成する

1.「ロール」をクリックし「ロールを作成」をクリックします。

2.信頼されたエンティティタイプは、「AWSのサービス」をチェックし、ユースケースは「EC2」をチェックします。「次へ」をクリックします。

 

 

3.許可ポリシーは作成したポリシーにチェックを入れます。「次へ」をクリックします。

 

4.ロール名と説明を入力し「ロールを作成」をクリックするとロールが作成されます。

 

5.ロールの一覧に作成したロールが表示されます。信頼されたエンティティをEC2からvpc-flow-logsに変更します。作成したロールのリンクをクリックします。

 

6.「信頼関係」のタグをクリックします。

 

7.「信頼ポリシーを編集」をクリックしてJSONを修正します。 

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "vpc-flow-logs.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
} 

7行目をec2からvpc-flow-logsに変更します。

 

8.信頼されたエンティティがvpc-flow-logsになりました。

 

CloudWatchでロググループを作成する

ロググループは、フローログの作成で送信先ロググループとして使用します。

1.検索入力欄で「CloudWatch」と入力し、表示された「CloudWatch」をクリックします。

2.「ロググループ」をクリックし、「ロググループを作成」をクリックしてロググループを作成します。

 

フローログの作成

ネットワークトラフィックを確認する箇所まで移動

1.検索入力欄で「EC2」と入力し、表示された「EC2」をクリックします。

2.ログを確認したいEC2の「インスタンスID」のリンクをクリックします。

3.「ネットワーキング」タブをクリックし、ネットワークインターフェイスの「インターフェィスID」のリンクをクリックします。

 

4.ネットワークインターフェイスにチェックを入れフローログをクリックし、「フローログの作成」をクリックします。

 

フローログを設定

5.フローログの設定を行います。

 

 

6.「送信先ロググループ」と「IAMロール」は作成したものを指定します。「フローログの作成」をクリックするとフローログが作成されます。

フローログの作成をクリックするとフローログが作成されます。

 

クエリを実行してネットワークのトラフィックを確認

フローログの作成直後は、データがない状態でトラフィックを確認できません。10分(最大集計間隔の設定)かかります。
ログができると、ロググループのログストリームに作成されます。

1.検索入力欄で「CloudWatch」と入力し、表示された「CloudWatch」をクリックします。

2.「ログのインサイト」をクリックします。

3.作成したロググループを選択し、クエリを入力し、クエリの実行でネットワークのトラフィックを表示できます。

 

クエリ例

fields @timestamp, dstAddr, dstPort, protocol,srcAddr
| filter (dstAddr = '10.0.10.4' and dstPort = '443')
| sort @timestamp desc
| limit 100

fieldsで表示する項目を指定します。
filterは、表示する条件を指定します。条件はかっこをつけて@はつけません。
sortは並び順です。descをつけると降順になります。
limit 10 のlimitは、下に表示される件数です。以下は10行表示されています。

 

クエリのサンプル

クエリは右端にある「クエリ」をクリックするとサンプルクエリがあるので参考にします。

 

5.結果は以下のように表示されます。protocolの6はTCPです。日時の指定は右上にあるカレンダーから設定します。

関連の記事

AWS LambdaからS3にファイルを書き込む/読み込む

△上に戻る