トラフィックミラーリングを使用しネットワークトラフィックをキャプチャ

投稿者: | 2021年5月24日

VPCトラフィックミラーリング(AWS VPC Traffic Mirroring)はAWSのサービスです。
あるAWSリソースに対するネットワークトラフィックを別のリソースに複製して流せます。
下記の図のようにあるEC2インスタンスに来るトラフィックを別のECにそのまま流せます。

トラフィックミラーリングを開始するためには下記の3つの設定を行います
・ターゲット
・フィルター
・セッション

まずはターゲットのミラーリングを設定します。
トラフィックミラーリングはVPCのメニューにあります。
「ターゲットをミラーリングする」から「トラフィックミラーターゲットの作成」を選択します。

ターゲットは複製先のリソースになります。
ターゲットはENIとNLBのみが選択可能です。
下記の画像のようにENIを設定した場合はENIの付いているインスタンスにトラフィックが流れます。

続いて「フィルターをミラーリングする」から「トラフィックミラーフィルタの作成」を選択します。

ここではミラーリングするトラフィックの中身を設定します。
INとOUT及び全てのトラフィックをミラーリングする場合は下記のように設定します。

最後に「セッションをミラーリングする」から「トラフィックミラーセッションの作成」を選択します。

ミラーソースに複製させたい元のENIを指定します。
ミラーターゲットには先ほど作成した複製先を指定します。
フィルタに先ほど作成したフィルタを指定します。

これでトラフィックのミラーリングの設定が完了します。

ミラーリングの確認は複製先のインスタンスにSSHで接続し、tdcdumpで確認することができます。

$ sudo tcpdump -i eth0 -n port 4789 -w output.pcap

複製されたトラフィックは複製先でポート4789で受け取っています。
上記のコマンドで出力したファイルは「wireshark」で通信の中身も確認することができます。
※HTTPリクエストならヘッダやボディの中身も参照可能

今回は複製したトラフィックを履歴として保存したかったためS3へ保存する仕組みも作成しました。
下記のシェルは1時間毎にトラフィックキャプチャファイルをS3にアップロードするものです。

<h1>!/bin/bash</h1>
TODAY=<code>date +%Y%m%d</code>
DATETIME=<code>date +%Y%m%d_%H%M%S</code>

ps=<code>ps aux | grep -i tcpdump | grep -v grep | wc -l</code>
if [ $ps -eq 0 ]; then # 対象プロセスが存在しない場合
tcpdump -i eth0 -n port 4789 -Z ec2-user -G 3600 -w - | aws s3 cp - s3://XXXXXXXX/TCPDUMP/${TODAY}/tcpdump_${DATETIME}.cap &amp;
fi

これをcronで1分毎に実行し、プロセスを常駐させる形で今回は仕込みました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA