Amazon Virtual Private Cloud
ユーザーガイド

VPC フローログ

VPC フローログは、VPC のネットワークインターフェイスとの間で行き来する IP トラフィックに関する情報をキャプチャできるようにする機能です。フローログデータは Amazon CloudWatch Logs と Amazon S3 に発行できます。フローログを作成すると、選択した送信先でそのデータを取得して表示できます。

フローログは、多くのタスクで役立ちます。たとえば、特定のトラフィックがインスタンスに到達していない場合のトラブルシューティングに役立ちます。これにより、制限が過度に厳しいセキュリティグループルールを診断できます。また、セキュリティツールとしてフローツールを使用し、インスタンスに達しているトラフィックをモニタリングすることができます。

CloudWatch Logs の料金は、送信先が CloudWatch Logs であるか Amazon S3 であるかにかかわらず、フローログを使用するときに適用されます。詳細については、Amazon CloudWatch 料金表をご覧ください。

フローログの基礎

VPC、サブネット、またはネットワークインターフェイスのフローログを作成できます。サブネットまたは VPC のフローログを作成する場合、VPC またはサブネットの各ネットワークインターフェイスがモニタリングされます。

モニタリングされるネットワークインターフェイスのフローログデータは、フローログレコードとして記録されます。これは、トラフィックフローについて説明するフィールドで構成されるログイベントです。詳細については、「フローログレコード」を参照してください。

フローログを作成するには、フローログを作成するリソース、キャプチャするトラフィックのタイプ (許可されたトラフィック、拒否されたトラフィック、またはすべてのトラフィック)、およびフローログデータを発行する送信先を指定します。フローログを作成した後で、データの収集と選択された送信先への発行が開始されるまでに数分かかる場合があります。フローログで、ネットワークインターフェイスのリアルタイムのログストリームはキャプチャされません。詳細については、「フローログの作成」を参照してください。

サブネットまたは VPC のフローログを作成した後で、サブネットにさらに多くのインスタンスを起動する場合、そのネットワークインターフェイス用にネットワークトラフィックが記録されるとすぐに、新しいネットワークインターフェイスごとに新しいログストリーム (CloudWatch Logs の場合) またはログファイルオブジェクト (Amazon S3 の場合) が作成されます。

他の AWS サービスによって作成されたネットワークインターフェイス(たとえば、Elastic Load Balancing、Amazon RDS、Amazon ElastiCache、Amazon Redshift、Amazon WorkSpaces)のフローログを作成できます。ただし、これらのサービスコンソールや API を使用してフローログを作成することはできません。Amazon EC2 コンソールまたは Amazon EC2 API を使用する必要があります。同様に、CloudWatch Logs または Amazon S3 コンソールや API を使用して、ネットワークインターフェイスのフローログを作成することはできません。

フローログが不要になった場合には、それを削除することができます。フローログを削除すると、リソースのフローログサービスは無効になり、新しいフローログレコードは作成されず、CloudWatch Logs または Amazon S3 にも発行されません。ネットワークインターフェイスの既存のフローログレコードやログストリーム (CloudWatch Logs の場合) またはログファイルオブジェクト (Amazon S3 の場合) は削除されません。既存のログストリームを削除するには、CloudWatch Logs コンソールを使用します。既存のログファイルオブジェクトを削除するには、Amazon S3 コンソールを使用します。フローログを削除した後で、データの収集が中止するまでに数分かかる場合があります。詳細については、「フローログの削除」を参照してください。

フローログレコード

フローログレコードは、フローログのネットワークの流れを表します。各レコードでは、特定のキャプチャウィンドウで特定の 5 タプルのネットワークフローがキャプチャされます。5 タプルとは、インターネットプロトコル (IP) のフローの送信元、送信先、およびプロトコルを指定する 5 セットの異なる値のことです。キャプチャウィンドウは、フローログレコードを発行する前にフローログサービスがデータを集計する期間です。キャプチャウィンドウは約 10 分ですが、最長 15 分かかる場合があります。

フローログレコードの構文

フローログレコードはスペース区切りの文字列で、以下の形式です。

<version> <account-id> <interface-id> <srcaddr> <dstaddr> <srcport> <dstport> <protocol> <packets> <bytes> <start> <end> <action> <log-status>

次の表は、フローログレコードのフィールドについて説明しています。

フィールド 説明
version VPC フローログバージョン。
account-id フローログの AWS アカウント ID。
interface-id トラフィックが記録されるネットワークインターフェイスの ID。
srcaddr 送信元の IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。
dstaddr 送信先の IPv4 または IPv6 アドレス。ネットワークインターフェイスの IPv4 アドレスは常にそのプライベート IPv4 アドレスです。
srcport トラフィックの送信元ポート。
dstport トラフィックの送信先ポート。
protocol トラフィックの IANA プロトコル番号。詳細については、「割り当てられたインターネットプロトコル番号」を参照してください。
packets キャプチャウィンドウ中に転送されたパケットの数。
bytes キャプチャウィンドウ中に転送されたバイト数。
start キャプチャウィンドウの開始時刻 (Unix 時間)。
end キャプチャウィンドウの終了時刻 (Unix 時間)。
action トラフィックに関連付けられたアクション:
  • ACCEPT: 記録されたトラフィックは、セキュリティグループまたはネットワーク ACL で許可されています。

  • REJECT: 記録されたトラフィックは、セキュリティグループまたはネットワーク ACL で許可されていません。

log-status フローログのロギングステータス。
  • OK: データは選択された送信先に正常に記録されます。

  • NODATA: キャプチャウィンドウ中にネットワークインターフェイスとの間で行き来するネットワークトラフィックはありませんでした。

  • SKIPDATA: 一部のフローログレコードはキャプチャウィンドウ中にスキップされました。これは、内部的なキャパシティー制限、または内部エラーが原因である可能性があります。

注記

フィールドが特定のレコードに該当しない場合、レコードでそのエントリには「-」記号が表示されます。

フローログレコードの例

許可されたトラフィックと拒否されたトラフィックのフローログレコード

以下に、アカウント 123456789010 のネットワークインターフェイス eni-abc123de への SSH トラフィック (宛先ポート 22、TCP プロトコル) が許可されたフローログレコードの例を示します。

2 123456789010 eni-abc123de 172.31.16.139 172.31.16.21 20641 22 6 20 4249 1418530010 1418530070 ACCEPT OK

以下に、アカウント 123456789010 のネットワークインターフェイス eni-abc123de への RDP トラフィック (宛先ポート 3389、TCP プロトコル) が拒否されたフローログレコードの例を示します。

2 123456789010 eni-abc123de 172.31.9.69 172.31.9.12 49761 3389 6 20 4249 1418530010 1418530070 REJECT OK

データがない場合やレコードがスキップされた場合のフローログレコード

以下に、キャプチャウィンドウ中にデータが記録されなかったフローログレコードの例を示します。

2 123456789010 eni-1a2b3c4d - - - - - - - 1431280876 1431280934 - NODATA

以下に、キャプチャウィンドウ中にレコードがスキップされたフローログレコードの例を示します。

2 123456789010 eni-4b118871 - - - - - - - 1431280876 1431280934 - SKIPDATA

セキュリティグループとネットワーク ACL ルール

フローログを使用して過度に制限されているか制限のないセキュリティグループルールまたはネットワーク ACL ルールを診断している場合は、これらのリソースのステートフルさに注意してください。セキュリティグループはステートフルです。つまり、セキュリティグループのルールで許可されていない場合でも、許可されたトラフィックへの応答も許可されます。逆に、ネットワーク ACL はステートレスです。したがって、許可されたトラフィックへの応答は、ネットワーク ACL ルールに従って行われます。

たとえば、ホームコンピュータ (IP アドレスが 203.0.113.12) からインスタンス (ネットワークインターフェイスのプライベート IP アドレスが 172.31.16.139) へは、ping コマンドを使用します。セキュリティグループのインバウンドルールで ICMP トラフィックが許可され、アウトバウンドルールで ICMP トラフィックが許可されません。ただし、セキュリティグループがステートフルであるため、インスタンスからの ping 応答は許可されます。ネットワーク ACL でインバウンド ICMP トラフィックが許可されますが、アウトバウンド ICMP トラフィックは許可されません。ネットワーク ACL はステートレスであるため、ping 応答は削除され、ホームコンピュータに達しません。フローログで、これは 2 つのフローログレコードとして表示されます。

  • ネットワーク ACL とセキュリティグループの両方で許可され、したがってインスタンスへの到達を許可された発信元の ping の ACCEPT レコード。

  • ネットワーク ACL で拒否された応答 ping の REJECT レコード。

2 123456789010 eni-1235b8ca 203.0.113.12 172.31.16.139 0 0 1 4 336 1432917027 1432917142 ACCEPT OK
2 123456789010 eni-1235b8ca 172.31.16.139 203.0.113.12 0 0 1 4 336 1432917094 1432917142 REJECT OK

ネットワーク ACL でアウトバウンド ICMP トラフィックを許可している場合、フローログには 2 つの ACCEPT レコード (1 つは発信元の ping、もう 1 つは応答 ping) が表示されます。セキュリティグループがインバウンド ICMP トラフィックを拒否する場合、トラフィックに対してインスタンスへの到達が許可されなかったため、フローログには 1 つの REJECT レコードが表示されます。

IPv6 トラフィックのフローログレコード

IPv6 アドレス 2001:db8:1234:a100:8d6e:3477:df66:f105 から、アカウント 123456789010 のネットワークインターフェイス eni-f41c42bf への SSH トラフィック (宛先ポート 22) が許可されたフローログレコードの例を以下に示します。

2 123456789010 eni-f41c42bf 2001:db8:1234:a100:8d6e:3477:df66:f105 2001:db8:1234:a102:3304:8879:34cf:4071 34892 22 6 54 8855 1477913708 1477913820 ACCEPT OK

フローログの制限事項

フローログを使用するには、次の制限事項に注意する必要があります。

  • EC2-Classic プラットフォームにあるネットワークインターフェイスのフローログを有効にすることはできません。これには、ClassicLink を使用して VPC にリンクされた EC2-Classic インスタンスが含まれます。

  • ピア VPC がアカウントにない限り、VPC とピアリング接続された VPC のフローログを有効にすることはできません。

  • フローログにタグを付けることはできません。

  • フローログを作成した後で、その設定を変更することはできません。たとえば、フローログに別の IAM ロールを関連付けることはできません。代わりにフローログを削除し、必要な設定で新しいログを作成できます。

  • フローログの API アクション (ec2:*FlowLogs) は、いずれもリソースレベルのアクセス権限をサポートしていません。フローログの API アクションの使用を管理するために IAM ポリシーを作成するには、ステートメントでリソース要素に対して * ワイルドカードを使用して、アクションにすべてのリソースを使用するユーザーアクセス権限を与える必要があります。詳細については、「Amazon VPC のリソースに対するアクセスの制御」を参照してください。

  • ネットワークインターフェイスに複数の IPv4 アドレスがある場合、トラフィックがセカンダリプライベート IPv4 アドレスに送信されても、フローログの送信先 IP アドレスフィールドにはプライマリプライベート IPv4 アドレスが表示されます。

フローログですべての IP トラフィックはキャプチャされません。以下のトラフィックの種類は記録されません。

  • Amazon DNS サーバーに接続したときにインスタンスによって生成されるトラフィック。独自の DNS サーバーを使用する場合は、その DNS サーバーへのすべてのトラフィックが記録されます。

  • Amazon Windows ライセンスのアクティベーション用に Windows インスタンスによって生成されたトラフィック。

  • インスタンスメタデータ用に 169.254.169.254 との間を行き来するトラフィック。

  • Amazon Time Sync Service の 169.254.169.123 との間でやり取りされるトラフィック。

  • DHCP トラフィック。

  • デフォルト VPC ルーターの予約済み IP アドレスへのトラフィック。詳細については、「VPC とサブネットのサイズ設定」を参照してください。

  • エンドポイントのネットワークインターフェイスと ネットワークロードバランサー のネットワークインターフェイスの間のトラフィック。詳細については、「VPC エンドポイントサービス (AWS PrivateLink)」を参照してください。