VPCトラフィック検査の設計パターン ── メタデータ監視とコンテンツ検査の使い分け

目次

概要

VPC内を流れるIPパケットを「不正または不適切なコンテンツ」の観点で検査する場合、AWS上にはいくつかのアプローチが存在します。しかし、すべての監視手段がパケットの「中身」を見られるわけではありません。

VPC Flow LogsやNACLは通信のメタデータ(IPアドレス・ポート番号・バイト数など)を扱う仕組みであり、パケットのペイロード(実際のコンテンツ)を検査することはできません。一方、Host-based agentやEC2上のプロキシソリューション、AWS Network Firewallはパケットの中身まで確認できるディープパケットインスペクション(DPI)が可能です。

この記事では、VPCトラフィック検査における「メタデータ監視」と「コンテンツ検査」の違いを整理し、要件に応じた適切なアーキテクチャ選択の考え方についてまとめます。

メタデータ監視(VPC Flow Logs・NACL)とコンテンツ検査(Network Firewall・EC2プロキシ)の守備範囲を対比した全体像の図解
メタデータ監視(VPC Flow Logs・NACL)とコンテンツ検査(Network Firewall・EC2プロキシ)の守備範囲を対比した全体像の図解

この記事のメリット

  • VPC Flow LogsやNACLなど各サービスが「何を取得できるか・できないか」を正確に理解できる
  • ディープパケットインスペクション(DPI)が必要なユースケースで、適切なアーキテクチャを選択できる
  • AWS Network FirewallやEC2プロキシなど、実際の構成パターンを比較できる
  • 「検査要件に合ったソリューション選択」の判断軸が身につく

執筆者とキャラクター紹介

執筆者:土肥(とひ)

株式会社ジェニュインの代表であり元エンジニア。これまでオンプレミスと AWS 環境のインフラ業務を担当。AWS 認定資格の学習で得た知識を、ハンズオンとともに解説するのが得意。直近では新人の教育も行っており、これから技術を学ぶ方が納得できる解説を心がけています。基礎編・Cloud Practitioner の記事では、解説役としても登場します。

土肥

クラウドおさる

クラウドおさる

はじめましてでござる。弊猿はクラウドおさる。IT インフラが異常に発達した猿山から、雲に乗って地上の AWS を学びに降りてきたのでござる。

クラウドおさる

基礎編や Cloud Practitioner の記事では、とひさんに素朴な疑問をぶつける役でござるな。Security - Specialty などの記事では、要所でワンポイントや注意点をひとこと添えるでござる。

クラウドおさる

猿山にもデータセンターや監視当番があって、地上で起きることはだいたい猿山にも同じ仕組みがあるのでござる。例え話がつい猿山に寄るのは、弊猿の癖でござる。

技術解説

メタデータ監視とコンテンツ検査の違い

VPCのトラフィック監視手段は大きく2つに分類できます。

同じ通信を「メタデータ監視」と「コンテンツ検査」で見たときに取得できる情報の違いを対比した図解
同じ通信を「メタデータ監視」と「コンテンツ検査」で見たときに取得できる情報の違いを対比した図解

メタデータ監視 通信の「誰が・いつ・どこに・どれだけ」を記録する仕組みです。通信が発生したという事実と通信先の情報はわかりますが、HTTPリクエストの中身やファイルの内容などペイロードの検査はできません。

コンテンツ検査(ディープパケットインスペクション) パケットのペイロードを実際に読み取り、URLパターン・シグネチャ・マルウェアパターンなどの基準で検査する仕組みです。「不正または不適切なコンテンツ」の検出にはこちらが必要です。

各アプローチの比較

アプローチ検査対象コンテンツ検査主なユースケース
VPC Flow Logs通信メタデータ(IP・ポート・バイト数)✗通信ログの監査・異常トラフィックの検知
NACL + NAT GatewayIPアドレス・ポート番号✗特定IPやポートのブロック
CloudWatch Logs agentOS・アプリケーションのログ✗アプリケーションログの収集・監視
Host-based agentOSネットワークスタックレベルのパケット✓エンドポイントIDS/IPS、マルウェア検知
EC2プロキシHTTP/HTTPSのリクエスト・レスポンス✓URLフィルタリング、コンテンツポリシー適用
AWS Network Firewallネットワーク・アプリケーション層✓ステートフル検査、シグネチャベース検知

なぜVPC Flow Logsはコンテンツを閲覧できないのか

VPC Flow LogsはVPCのElastic Network Interface(ENI)レベルで通信を記録しますが、キャプチャする情報はネットワーク層(L3)とトランスポート層(L4)のヘッダー情報のみです。

記録されるフィールドの例:

  • 送信元・宛先IPアドレス
  • 送信元・宛先ポート
  • プロトコル番号
  • パケット数・バイト数
  • 開始・終了時刻
  • アクション(ACCEPT / REJECT)

アプリケーション層(L7)のペイロード、つまりHTTPのリクエストボディやURLのパスなどは含まれません。

Host-based agentによる検査

EC2インスタンスにIDS/IPSソフトウェアやエンドポイントセキュリティエージェントをインストールする方式です。

特徴:

  • インスタンスのOSレベルでネットワーク通信を傍受し、ペイロードを検査できる
  • 暗号化されたトラフィックも、TLS終端後の復号されたデータを検査できる(インスタンス内での処理のため)
  • 各インスタンスに個別に設定が必要

代表的なソリューション:

  • サードパーティのIDS/IPS・EDRエージェント
  • Amazon GuardDuty ランタイムモニタリング(EC2・EKS・ECSのプロセス/ネットワーク挙動を検知)

Amazon Inspectorはエージェント(SSM Agent)を使いますが、行うのはソフトウェアの脆弱性スキャンとネットワーク到達性の分析であり、通信のペイロード検査ではありません。

EC2プロキシソリューション

VPC内にプロキシEC2インスタンスを配置し、すべてのアウトバウンドトラフィックをプロキシ経由でルーティングする方式です。

特徴:

  • URLフィルタリングやコンテンツポリシーの適用が可能
  • HTTPSトラフィックの検査にはSSL/TLSインスペクション(man-in-the-middle構成)の設定が必要
  • ルートテーブルでプロキシEC2をデフォルトゲートウェイに設定し、トラフィックを集約する

構成時の注意点: プロキシEC2インスタンスは送受信するトラフィックの送信元・宛先が自分自身ではないため、Source/Destination Check(コンソールの「ソース/宛先チェック」)を無効化する必要があります。この設定をしないと、EC2は自分宛でないパケットを破棄してしまいトラフィックを転送できません。

フリーランス案件
クラウドおさる
クラウドキャリアフリーランス

AWS の実務経験があるなら、単価を上げにいく

AWS に特化したフリーランスエージェントです。以下は取り扱い案件の一例です。設計・SRE・セキュリティ・生成 AI の領域で、専門を掛け合わせるほど単価が上がります。

横にスクロールできます。掲載時点の情報のため、募集が終了している場合があります。条件の近い案件をご紹介しますので、お気軽にご相談ください。

実践

ここでは、VPCアウトバウンドトラフィックのコンテンツ検査を実現するパターンとしてEC2プロキシーの構成概要を説明します。

前提条件

  • リージョン: ap-northeast-1(東京)
  • 以下のリソースが作成済みであること
リソース種別リソース名用途
VPCinspection-vpc(10.90.0.0/16)検証用のVPC
サブネットpublic-subnet(10.90.1.0/24)プロキシEC2を置くパブリックサブネット
サブネットprivate-subnet(10.90.2.0/24)検査対象のEC2を置くプライベートサブネット
ルートテーブルprivate-rtプライベートサブネットに関連付け済み
セキュリティグループproxy-sgプロキシEC2に割り当て
EC2インスタンスproxy-instanceパブリックサブネットで稼働するプロキシ

EC2プロキシによる集約検査

構成概要

プライベートサブネットのEC2からプロキシEC2を経由してインターネットへ抜ける、集約検査構成の図解
プライベートサブネットのEC2からプロキシEC2を経由してインターネットへ抜ける、集約検査構成の図解
[プライベートサブネット]          [パブリックサブネット]
EC2インスタンス群 → プロキシEC2(Squidなど) → インターネットゲートウェイ → インターネット

設定手順

  1. プロキシEC2の準備

パブリックサブネットにEC2インスタンスを起動し、Squidなどのプロキシソフトウェアをインストールします。

  1. Source/Destination Checkを無効化

EC2コンソール → 左側ナビゲーションの「インスタンス」→ proxy-instance を選択 → 「アクション」→「ネットワーキング」→「ソース/宛先チェックを変更」を選択します。「送信元/送信先チェックを変更」ダイアログが開くので、「停止」にチェックを入れて「保存」をクリックします。

プロキシEC2の「送信元/送信先チェックを変更」ダイアログ(「停止」が選択された状態)
プロキシEC2の「送信元/送信先チェックを変更」ダイアログ(「停止」が選択された状態)
  1. ルートテーブルの変更

プライベートサブネットのルートテーブルで、デフォルトルート(0.0.0.0/0)の送信先をプロキシEC2インスタンスのENI IDに変更します。

プライベートサブネットのルートテーブル編集画面(0.0.0.0/0のターゲットがプロキシEC2のENI IDに設定された状態)
プライベートサブネットのルートテーブル編集画面(0.0.0.0/0のターゲットがプロキシEC2のENI IDに設定された状態)
  1. セキュリティグループの設定

プロキシEC2のセキュリティグループに、プライベートサブネットからのTCPポート80・443の受信を許可するルールを追加します。

プロキシEC2のセキュリティグループのインバウンドルール(TCPポート80・443がプライベートサブネットCIDRから許可されている状態)
プロキシEC2のセキュリティグループのインバウンドルール(TCPポート80・443がプライベートサブネットCIDRから許可されている状態)
  1. プロキシの設定ファイルでコンテンツポリシーを適用

Squidのsquid.confにブロック対象のURLパターンやドメインリストを記述します。

2で実施する「ソース/宛先チェック」を停止することで、プロキシーとなるインスタンスは自身のIPアドレス以外を宛先にしているトラフィックを処理することができます。

確認方法

プライベートサブネットのEC2インスタンスからcurlコマンドで外部URLにアクセスし、プロキシのアクセスログ(/var/log/squid/access.log)にリクエストが記録されることを確認します。ブロック対象のURLへアクセスすると、403 Forbiddenが返ることを確認できます。

—

要件別のアプローチ選択ガイド

要件推奨アプローチ
パケットの中身(コンテンツ)を検査したいHost-based agent / EC2プロキシ / AWS Network Firewall
特定のドメインやURLをブロックしたいEC2プロキシ(Squid) / AWS Network Firewall(ドメインリスト)
既知の脅威シグネチャを検知したいAWS Network Firewall(Suricataルール)
管理コストを抑えてスケールしたいAWS Network Firewall(マネージドサービス)
通信の発生有無・通信先のIPを記録したいVPC Flow Logs
特定IPアドレスやポートをブロックしたいNACL

まとめ

VPC内のIPパケットをコンテンツの観点で検査するには、メタデータを記録するだけのサービスでは不十分です。以下の点が重要です。

  • VPC Flow Logs はL3/L4のメタデータのみを記録し、ペイロードの検査はできない
  • NACL はIPアドレス・ポート番号によるフィルタリングのみ対応し、コンテンツは検査できない
  • CloudWatch Logs agent はOSやアプリのログを収集する仕組みであり、パケットデータを扱わない
  • Host-based agent はインスタンス内部でネットワーク通信を傍受し、コンテンツ検査が可能
  • EC2プロキシ はVPCのアウトバウンドトラフィックを集約し、URLフィルタリングやコンテンツポリシーを適用できる(ソース/宛先チェックの無効化が必須)
  • AWS Network Firewall はマネージドサービスとしてステートフル検査・シグネチャ検知・ドメインフィルタリングを提供する

コンテンツ検査が必要な要件では、「メタデータしか取れないサービス」と「中身まで見られるサービス」の区別を意識してアーキテクチャを設計することが重要です。

フリーランス案件
クラウドおさる
クラウドキャリアフリーランス

AWS の実務経験があるなら、単価を上げにいく

AWS に特化したフリーランスエージェントです。以下は取り扱い案件の一例です。設計・SRE・セキュリティ・生成 AI の領域で、専門を掛け合わせるほど単価が上がります。

横にスクロールできます。掲載時点の情報のため、募集が終了している場合があります。条件の近い案件をご紹介しますので、お気軽にご相談ください。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

株式会社ジェニュイン(https://genuine-pt.jp)の代表取締役.

2018年〜インフラエンジニアとしてキャリアをスタートし、オンプレミスのネットワーク・サーバ環境で3年半、クラウド環境で4年半の8年間エンジニアとして従事。
2021年に佐藤氏の創業した株式会社Luxyを引き継ぎ、代表に就任。
その後アガルートグループ内の株式会社ジェニュインと合併。
合併後同社代表に就任。

目次