VPCトラフィックミラーリングは、EC2インスタンスなどのネットワーク通信を丸ごとコピーして、セキュリティ分析ツールに転送する機能です。この機能は、以下の4つの構成要素を組み合わせて動作します。
VPCトラフィックミラーリングは、ビルの監視カメラシステムとそっくりです。
ビル内の各フロアにカメラを設置して、映像を警備室のモニターに送り、録画条件を設定して、配線で全部つなげる——
AWSのネットワーク監視も、まったく同じ発想で構成されています。
| 監視カメラのたとえ | 📹 AWSの構成要素 | 具体的な役割 |
|---|---|---|
| 📷 カメラの設置場所(どのフロアのどのドア前) | ① ミラーソース(ENI) | EC2やNLBのネットワークインターフェースを指定して、通信をキャプチャする起点 |
| 🖥️ 警備室のモニター(映像の受信先) | ② ミラーターゲット(NLB / ENI / GWLB) | コピーされたパケットの送信先。分析ツールが稼働するリソース |
| 🎚️ 録画ルール(営業時間外のみ・特定エリアのみ) | ③ ミラーフィルター | プロトコル・ポート・IPで条件を指定し、必要なパケットだけコピーする |
| 🔗 カメラ→モニターの配線設定・チャンネル | ④ ミラーセッション | ソース・ターゲット・フィルターを結び付けて、ミラーリングを有効にする |
4つの構成要素がどのように連携してトラフィックミラーリングが動作するのか、全体の流れを図で確認しましょう。
トラフィックをキャプチャするENI(Elastic Network Interface)を指定する。EC2やNLBのネットワークインターフェースが対象。
コピーされたパケットの送信先。NLB、ENI、またはGateway Load Balancerエンドポイントを指定する。
どのトラフィックをコピーするかをルールで定義。プロトコル、ポート範囲、CIDR等で条件指定する。
ソース・フィルター・ターゲットを1つに結びつける設定。セッション番号で優先順位も管理できる。
ミラーソースは、パケットのコピーを取得するネットワークインターフェース(ENI)です。ビルの例では「どのフロアのどのドア前にカメラを置くか」に相当します。
NitroベースのインスタンスのENIのみがミラーソースになれます。旧世代(t2, m4, c4等)のインスタンスは非対応です。たとえるなら「古いビルの旧型カメラ端子には新しい録画装置を接続できない」のと同じです。
1つのENIは最大3つのミラーセッションのソースとして使えます。これは1台のカメラの映像を最大3つのモニターに同時配信できるイメージです。
ミラーターゲットは、コピーされたパケットの送信先です。ここにセキュリティ分析ツール(IDS/IPS等)が待ち構えており、パケットを受け取って解析します。
本番環境ではNLBをターゲットに選ぶのがベストプラクティスです。NLBの背後に複数の分析インスタンスを配置すれば、1台が故障しても残りがカバーでき、大量トラフィックにも対応できます。
ミラーターゲットはソースと同じVPC内、またはVPCピアリング/Transit Gateway経由の別VPCに配置できます。たとえるなら、カメラの映像を同じビル内の警備室に送ることも、隣のビルの中央警備センターに送ることもできるということです。
ミラーフィルターは、どのトラフィックをキャプチャしてどれを除外するかをルールで定義します。全トラフィックをコピーするとコストが膨大になるため、必要なパケットだけを絞り込むのが現実的です。
| 設定項目 | 説明 | 監視カメラのたとえ |
|---|---|---|
| ルール番号 | ルールの優先順位(小さい番号ほど優先) | 「ルール1が最優先、ルール2はその次…」 |
| アクション | ACCEPT = キャプチャする REJECT = しない | 「このフロアは録画する/しない」 |
| プロトコル | TCP(6)、UDP(17)、ICMP(1) 等を番号で指定 | 「映像通話だけ録画」「電話だけ録画」 |
| 送信元 CIDR | 送信元IPアドレスの範囲(0.0.0.0/0 で全通信) | 「来訪者の出身エリアで絞る」 |
| 宛先 CIDR | 宛先IPアドレスの範囲 | 「特定フロアへ向かう人だけ録画」 |
| 送信元ポート範囲 | 送信元ポートの範囲(例: 1024-65535) | 「どの入口から来たか」 |
| 宛先ポート範囲 | 宛先ポートの範囲(例: 443-443 でHTTPSのみ) | 「どの部屋に入ろうとしているか」 |
重要:フィルターにはインバウンド(受信)とアウトバウンド(送信)それぞれにルールを設定します。ルールはNACLのように番号順に評価され、最初にマッチしたルールが適用されます。
ミラーセッションは、ここまでの3つの構成要素を1つのセットとして結びつける設定です。ビルの例では「このカメラの映像を、このルールで録画して、この警備室モニターに送る」という配線チャンネルの設定に相当します。
1つのENIに複数セッションがある場合の優先順位。番号が小さいほどパケットが先に評価される。同じパケットを複数のターゲットに送りたいときに使う。
ミラーリングするパケットの最大バイト数を指定。ヘッダーだけ必要な場合は短く設定してコスト削減。省略すると全体をコピー。
VXLANカプセル化で使用する識別番号。ターゲット側で複数のセッションからのトラフィックを区別するために使う。
セッションの用途をメモする任意フィールド。「本番WebサーバーHTTPS監視用」のように、運用時にわかりやすい説明を付ける。
# ミラーセッションの作成
aws ec2 create-traffic-mirror-session \
--traffic-mirror-target-id tmt-0abcd1234efgh5678 \
--network-interface-id eni-0a1b2c3d4e5f6g7h8 \
--traffic-mirror-filter-id tmf-0abcd1234efgh5678 \
--session-number 1 \
--description "Web-server-HTTPS-monitoring"
このパターンでは、3台のサーバーそれぞれに個別のミラーセッションを作成し、同じフィルターと同じNLBターゲットを共有しています。フィルターとターゲットは複数セッションで再利用可能なので、管理がシンプルに保てます。
Flow Logsはメタデータ(IP・ポート・バイト数等)だけを記録しますが、トラフィックミラーリングはパケットの中身(ペイロード)まで丸ごとコピーします。深い分析が必要ならミラーリング、ログ記録だけならFlow Logsを使います。
Nitroベースのインスタンスではハードウェアレベルでパケットコピーが行われるため、影響は最小限です。ただし、大量のミラーリングトラフィックが発生すると、ネットワーク帯域を消費します。フィルタリングで対象を絞ることが重要です。
はい。VPCピアリングまたはTransit Gatewayを使えば、ソースとは別のVPCにあるターゲットにミラーパケットを送信できます。セキュリティ専用VPCに分析基盤を集約する構成が一般的です。
ミラーリング自体の追加料金はありません。ただし、コピーされたパケットが通過するデータ転送料金、ターゲット(NLB等)の利用料金、分析ツールのEC2コストが発生します。フィルタリングでトラフィック量を抑えるのがコスト最適化の鍵です。
いいえ。ミラーソースに指定できるのはNitroベースインスタンスに接続されたENIのみです。LambdaやFargateは自前のENIを持ちますが、現時点ではミラーソースとして指定できません。
Created by SSuzuki1063
AWS SAP Learning Resources