VPC Flow Logs、ENI、ソース/宛先チェック

VPC Flow Logsで記録できる通信メタデータと制約、ENIの役割、仮想ネットワークアプライアンスを使う際のソース/宛先チェックを解説します。

学習順Step 66 / 101サービスネットワーク試験ドメイン開発

VPC Flow Logs、ENI、ソース/宛先チェック

VPC内で通信障害や予期しないアクセスを調査するとき、まず確認するのは「どのアドレスから、どのアドレスへ、どのプロトコルで通信し、AWSのネットワーク制御で許可されたか」です。VPC Flow Logsは、VPC内のIPトラフィックに関する情報を記録し、通信の傾向や拒否された接続を調べるための機能です。

フローログが扱うのはパケットの内容ではなく、通信を説明するメタデータです。アプリケーションの要求本文やファイルの中身、暗号化された通信の復号内容は記録されません。通信の記録を分析する機能と、通信内容を検査して脅威を遮断するファイアウォールの機能は分けて考えます。

VPC Flow Logsの記録と配信先

VPC Flow Logsで記録する情報

フローログは、VPC、サブネット、またはネットワークインターフェイス(ENI)を対象に作成できます。対象範囲をVPCにすれば配下の通信を広く確認でき、特定のサブネットやENIを対象にすれば調査範囲を絞れます。作成したフローログは、対象のリソースを通過するIPトラフィックについて記録します。

標準のレコード形式には、たとえば次の情報が含まれます。

情報 読み取れること
インターフェイスID 通信に関連するENI
送信元・宛先アドレス 通信の両端に記録されたIPアドレス
送信元・宛先ポート TCPやUDPなどのポート番号
プロトコル番号 IPプロトコル。TCP、UDP、ICMPなどを識別する
パケット数・バイト数 集約された通信量
開始・終了時刻 集約されたフローの時間範囲
アクション ACCEPT または REJECT
ログステータス レコードが記録されたか、スキップされたかなどの状態

フローログのレコードは、一定の集約期間に観測された通信をまとめて表します。必要に応じてカスタム形式を選び、アカウントID、方向、TCPフラグ、パケットレベルの送信元・宛先アドレスなどの追加フィールドを含めることもできます。選べる項目とフィールドの意味はAWSの仕様に従うため、ログクエリや分析基盤では使用する形式を明示しておくと安全です。

ACCEPT は対象通信が許可されたこと、REJECT は拒否されたことを示します。たとえば、バッチ処理用のENIから社内の成果物サーバーへ接続できないとき、送信元・宛先、ポート、アクションを照らし合わせると、拒否記録があるかを調査できます。ただし、フローログだけでどのルールが拒否の原因になったか、アプリケーションが何を送信したかまでは特定できません。セキュリティグループやネットワークACL、ルート、アプリケーションログと併せて確認します。

配信先と運用上の性質

VPC Flow Logsの配信先には、次のサービスを選べます。

配信先 向いている用途
Amazon CloudWatch Logs CloudWatch Logs Insightsなどで検索・集計し、アラームや運用監視と連携する
Amazon S3 長期保存し、Amazon Athenaなどから大規模なログを分析する
Amazon Data Firehose ストリーミング配信先やデータ変換を含むログ処理パイプラインへ送る

「Kinesisへ送る」とまとめて呼ぶことがありますが、フローログの直接の配信先として選ぶサービス名はAmazon Data Firehoseです。CloudWatch LogsやS3、Firehoseでは、保存期間、分析方法、アクセス制御、取り込み量に応じた費用が異なります。フローログの有効化だけでなく、配信先の取り込み・保存料金や、ログの保持期間も設計に含めます。料金は変わるため、Amazon VPCの料金ページで最新の課金条件を確認します。

フローログはベストエフォートで配信されます。ログの配信に数分かかることがあり、記録がすべて欠落なく届くことや、リアルタイム監視として即時に使えることは保証されません。短い時間のインシデントを逐一検出する唯一の仕組みとして扱わず、アプリケーション側の監視、CloudWatchメトリクスやアラーム、必要な脅威検知サービスと組み合わせます。

フローログは通信のペイロードを含みません。侵入検知・防止、HTTP要求の検査、マルウェアや悪意のあるコンテンツの遮断が必要な場合は、AWS Network Firewall、AWS WAF、または要件に合う第三者製品などを利用します。ログの記録と通信の検査・遮断は異なる役割です。

また、フローログですべてのIP通信が観測できるわけではありません。AWSの予約済みアドレスとの通信など、記録対象外となる通信があります。見たい通信が記録されない場合は、公式ドキュメントの「制限事項」と対象サービス固有の条件を確認し、必要な観測手段を別に用意します。

ENIがリソースとVPCをつなぐ

**Elastic Network Interface(ENI、ネットワークインターフェイス)**は、VPC内でIPネットワークへ接続する仮想インターフェイスです。プライベートIPアドレス、セキュリティグループ、MACアドレスなどの属性を持ち、EC2インスタンスをはじめとするVPC対応リソースの通信点になります。セキュリティグループのルールもENIに関連付けて適用します。

EC2インスタンスの起動時にはプライマリENIが使われ、プライマリのプライベートIPv4アドレスはインスタンスの基本的な通信に使われます。プライマリENIはインスタンスの存続中に取り外せません。必要に応じてセカンダリENIを追加し、別のプライベートアドレスやセキュリティグループを持たせることができます。ENIには複数のプライベートIPv4アドレスを割り当てる構成も可能です。

ENIはアドレスとセキュリティグループを持つ単位であると同時に、ネットワーク経路を接続する単位でもあります。ネットワークアプライアンスをENIでVPCに接続し、ルートテーブルのターゲットとして指定すると、該当する経路のトラフィックをそのアプライアンスへ送れます。

ソース/宛先チェックと中継アプライアンス

EC2に関連付けられたENIでは、通常、**ソース/宛先チェック(source/destination check)**が有効です。このチェックは、そのインスタンスが送受信するパケットの送信元または宛先が、そのインスタンス自身に属するかを確認します。インスタンスを中継せず、自身宛ての通常の通信を処理する用途では既定の設定を使います。

一方、仮想ルーター、NATアプライアンス、透過型ファイアウォールや侵入検知・防止アプライアンスは、自身を送信元・宛先としないパケットを受け取り、転送する場合があります。チェックが有効なままだと、そのような転送パケットが破棄されるため、該当インスタンスのソース/宛先チェックを無効にします。これはファイアウォールルールの代わりではなく、中継インスタンスが他の通信を扱えるようにする設定です。

ルートテーブルから仮想アプライアンスENIへ通信を転送する構成

転送する通信がアプライアンスへ届くには、VPCルートテーブルにも適切な経路が必要です。宛先CIDRに対するルートのターゲットとしてアプライアンスのENIを指定すると、その宛先へ向かう通信はまずアプライアンスへ送られます。アプライアンス側では、OSやファイアウォールソフトウェアでIP転送、検査、必要に応じた転送先を設定します。戻り通信も正しい経路を通るように設計し、片方向だけを検査して応答が別の経路を通る非対称ルーティングを避けます。

この構成では、次の要素がすべて整合しているか確認します。

  1. 対象インスタンスまたはENIのソース/宛先チェックを無効にする。
  2. ルートテーブルで対象トラフィックの次の転送先としてアプライアンスENIを指定する。
  3. アプライアンスのOSとソフトウェアでパケット転送や検査を有効にする。
  4. セキュリティグループやネットワークACLが必要な通信を許可する。
  5. 戻り方向のルートも確認し、通信が意図した検査経路を通るようにする。

ソース/宛先チェックだけを無効にしても、ルートテーブルがアプライアンスを指していなければ通信はそこへ転送されません。逆に、経路がアプライアンスENIを指していても、チェックが有効なままでは中継対象のパケットが通らない可能性があります。設定とルーティングは一組で考えます。

学習の要点

  • フローログは通信メタデータを記録する:アドレス、ポート、プロトコル、パケット数やバイト数、時刻、ACCEPT/REJECTなどを調査できる。パケットの内容は読めない。
  • 対象範囲と配信先を選ぶ:VPC、サブネット、ENIを対象にできる。CloudWatch Logs、S3、Amazon Data Firehoseから、検索、長期保存、ストリーミング処理の要件に合わせて選ぶ。
  • 配信はベストエフォート:遅延や記録対象外の通信があるため、全件・リアルタイムの保証として扱わない。宛先側の取り込み・保存費用も見積もる。
  • ENIはVPC通信の接続点:アドレスやセキュリティグループを持つ仮想インターフェイスであり、EC2のプライマリENIは取り外せない。セカンダリENIや複数アドレスを用途に応じて使う。
  • 転送アプライアンスではチェックと経路が必要:ソース/宛先チェックを無効化し、ルートテーブルのターゲットにアプライアンスENIを指定する。転送ソフトウェア、制御ルール、戻り経路も確認する。
  • ログ記録とペイロード検査を区別する:通信内容を調べたり悪意ある内容を遮断したりするには、専用のファイアウォールや検査サービスを使う。

公式ドキュメント

重要ポイント

  • ▸VPC Flow LogsはVPC、サブネット、またはネットワークインターフェイスを通るIP通信のメタデータを記録し、通信内容そのものは記録しない
  • ▸ログはCloudWatch Logs、Amazon S3、Amazon Data Firehoseへ発行でき、ACCEPT/REJECTや送信元・宛先、ポート、プロトコル、パケット数、バイト数を調べられる
  • ▸フローログはベストエフォートで配信され、すべての記録がリアルタイムに届くとは限らない。保存先の取り込み・保存料金も考慮する
  • ▸ENIはVPCリソースにプライベートIPアドレスやセキュリティグループを提供する仮想ネットワークインターフェイスで、EC2のプライマリENIはデタッチできない
  • ▸ルーターや透過型ファイアウォールなどの中継アプライアンスでは、ソース/宛先チェックを無効化し、ルートテーブルでトラフィックをENIへ転送する

このトピックの学習を完了しますか?

完了状態はいつでも切り替えられます