VNet フローログの構成とトラフィック分析を使った可視化

こんにちは、アーキテクトのやまぱんです。
補足コメントや質問、<font color="red">**いいね、拡散**</font>、是非お願いします🥺！
間違ってたら<font color="red">**優しく**</font>教えてください！

-----------------------------------------------------------
今回は VNet フローログ を構成してトラフィックアナリティクス(トラフィック分析)を用いて可視化してみました。

# VNet フローログ とは
 VNet フローログは、Azure Network Watcher の機能の一つで、仮想ネットワークを通過するIPトラフィックの情報をログに記録するためのものです。これにより、ネットワークの監視、管理、最適化が可能になります。フローデータはストレージ アカウントに送信されます。

## NSG フローログ と VNet フローログ
VNet フローログは NSG フローログの後継の機能です。[NSGフローログは2027 年 9 月 30 日に引退が表明](https://learn.microsoft.com/ja-jp/azure/network-watcher/nsg-flow-logs-overview)されています。基本的はとれる情報に変わりはないです（むしろ増えている）が、VNet フローログでは VNet 単位で有効にすることができます。フローログの単位は VNet/Subnet/NIC で選べます。

+ むしろ増えている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/384857f5-ec9c-4966-8b07-7d7fd796ab30.png)
ref : フロー ログのサポート範囲の概要 
https://learn.microsoft.com/ja-jp/azure/network-watcher/vnet-flow-logs-overview#supported-scenarios
+ その他の違いについてはこちら
https://learn.microsoft.com/ja-jp/azure/network-watcher/vnet-flow-logs-overview#virtual-network-flow-logs-compared-to-network-security-group-flow-logs

また、今回は試していませんが、NSG フローログ から VNet フローログへの移行はガイド付きエクスペリエンスが提供されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/a72e8ba8-5e68-4717-be07-8d0e893643b2.png)



## そもそもフローとは
:::note info
ネットワークにおける「フロー」とは、特定の時間内にネットワークを通過する一連のパケットのことを指します。
具体的には、1.送信元IPアドレス、2.送信先IPアドレス、3.送信元ポート、4.送信先ポート、5.プロトコルなどの情報を持つ一連のパケットの流れです。
:::
フローログは、これらのフローに関する情報を記録するもので、ネットワークの状態、接続元、接続先、インターネットに対して開いているポート、予想されるネットワーク動作、異常なネットワーク動作、トラフィックの急増などを把握するために使用されます。各ログ レコードには、フローが適用されるネットワーク インターフェイス、5 タプル情報、トラフィックの方向、フローの状態、暗号化状態、およびスループット情報が含まれています。

-----------------------------------------------------------
# VNet フローログを構成する
## (前提) リソースプロバイダーの登録
Subscription  → 　リソースプロバイダー から ```microsoft.insights``` を登録されていなければ、登録します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/1bae647e-dd32-4c40-a180-9ceabb90553d.png)

## VNet フローログの構成
* Azure Portal  → Network Watcher
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/34f27f89-8f82-4d38-a3ad-9fe719f8de67.png)
* フローログ から有効化
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/973f9d9b-22fd-4869-a446-1fce5eba0fa2.png)
* フローログ 設定画面 で 仮想ネットワークを選ぶ
これが VNet フローログ 、なお今回はターゲットリソースとして VNet (仮想ネットワーク) を選択していますが、環境によってはログが大量になるため要件に合わせ適切なスコープ (仮想ネットワーク/サブネットピアリングも/NIC) を選ぶのがよいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2e43b036-fc64-499c-acde-b916577222ed.png)
+ ストレージ アカウントとリテンション期間
ストレージ アカウントは 対象 Vnet を同じリージョン、同じ Microsoft Entra ID テナント配下にあるSubscription にある必要がある。
リテンション期間は最大 365 日まで入力可能、０を入力すると無期限保存になるので注意
なお、フローログ名 (今回の例では``Vnet-B-rg-vfl-flowlog``) はデフォルトで入るが、変更することも可能。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/8aa08b9a-6b3d-43ab-b608-0dedc8b4dff6.png)
+ 分析：トラフィックアナリティクス
フローログ構成時に有効にすることも可能。今回は一旦構成しない。（後ほど構成する）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/f05c7df6-71a8-4f35-96bd-2a6b496f9fed.png)
+ 最終確認画面
今回は以下のようにして構成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/3cd1ad5f-0ce1-41e4-a4fc-804c223e86f8.png)
+ 作成されたVNet フローログ
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/0baac7c0-b26d-4893-9107-cec240ebdc03.png)
+ ストレージ アカウント → コンテナー 
以下のようなコンテナー (今回の例では``insights-logs-flowlogflowevent``) が作成されている
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/3e0a2da0-360b-45b1-b0bc-8cade0d75bec.png)


# VNet フローログの確認 (json)
+ コンテナーから json 形式の VNetをダウンロード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/36c0e3fc-370a-4050-a5e6-99355886cc6c.png)

vscode で 確認してみる。一部抜粋画面ショットです。（成形済)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/41cf933e-6370-43b6-a0df-00a02d35a1a2.png)

たとえば以下のエントリ
> "1743076234521,10.11.1.4,13.107.21.239,52673,443,6,O,B,NX,0,0,0,0",
このエントリは、送信元IPアドレス 10.11.1.4 から宛先IPアドレス 13.107.21.239 へのTCPプロトコルを使用したHTTPSトラフィック (ポート443) のフローを示しています。このフローはアウトバウンドで、開始状態にあり、パケット数やバイト数が0であることから、まだデータの交換が行われていないことを示しています。

> "1743076235216,10.11.1.4,23.208.236.42,52668,80,6,O,E,NX,5,516,3,1019",
このエントリは、送信元IPアドレス 10.11.1.4 から宛先IPアドレス 23.208.236.42 へのTCPプロトコルを使用したHTTPトラフィック (ポート80) のフローを示しています。このフローはアウトバウンドで、確立された接続状態にあり、パケット数5、バイト数516、持続時間3秒 (1019ミリ秒) です。

> "1743076235216,10.11.1.4,23.37.92.142,52663,443,6,O,E,NX,47,3508,204,272036",
このエントリは、送信元IPアドレス 10.11.1.4 から宛先IPアドレス 23.37.92.142 へのTCPプロトコルを使用したHTTPSトラフィック (ポート443) のフローを示しています。このフローはアウトバウンドで、確立された接続状態にあり、パケット数47、バイト数3508、持続時間204秒 (272036ミリ秒)

表にするとこんな感じです
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/620cdea0-c0e2-4e5f-9ec4-7419f7f979da.png)


**はい、とても見やすいですね！** と思える方は可視化は不要かもしれません。

が、ほとんどの方は見にくいと思うので可視化するのがよいと思います。

# VNet フローログの可視化
jsonを生で見るなんてとってもしんどいので、可視化します。
リアルタイム分析もできませんしね。

方法はいくつかありますが、今回は[Traffic Analytics (トラフィック分析)](https://learn.microsoft.com/ja-jp/azure/network-watcher/traffic-analytics)を利用します。
なお、トラフィック分析 には Log Analytics Workspace が必要です。
というのもいかのようｎ裏側では Log Analytics Workspace / KQL が用いられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/05f280f4-3dc0-41b5-9397-e859d7e0eef4.png)


## Traffic Analytics (トラフィック分析) とは
　Traffic Analytics は、クラウド ネットワーク内のユーザーとアプリケーションのアクティビティを可視化するクラウドベースのソリューションです。 特にトラフィック分析では、Azure Network Watcher のフロー ログを分析して、Azure クラウドでのトラフィック フローに関する分析情報を提供します。
 以下のようなことがわかります、構成も簡単で非常に便利。
+ 誰がネットワークに接続しているか?
+ どこから接続しているか?
+ どのポートがインターネットからアクセスできるか?
+ 予想されるネットワーク動作はどのようなものか?
+ 不規則なネットワーク動作があるか?
+ トラフィックの急激な増加はあるか?

## トラフィック分析 の構成
+ フローログ → 先ほど作った VNet フローログ  → トラフィック分析 
トラフィック分析を有効にするにチェック → Log Analytics Workspace を設定、ログ記録の間隔を設定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/9d0e6a98-2e82-4649-9c9c-0cf9bcd9be68.png)

## Log Analytics Workspace での確認
以下のようなテーブルができていたことが確認できました。
今回は実施していませんが、Log Analytics Workspace に格納できるので、クエリ処理によって独自のグラフや表を作ったり、アラートを設定することも可能です。

### NTAIpDetails　
　https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/tables/ntaipdetails
>IPアドレス: 公開IPの情報
DNSドメイン: 悪意のあるIPの場合、そのIPに関連するドメイン名
脅威の種類と説明: Microsoftのセキュリティインテリジェンスソリューションによって特定された脅威の種類と説明
地理的位置: 公開IPの地理的位置情報
その他の属性: データの生成時間、ログのサイズ、ソースシステムなど

例）NTAIpDetails :Threat Type や Public IP アドレスの情報などが見えることがわかります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/832c9a04-a82d-4987-9202-3608b38f2786.png)

### NTANetAnalytics
　https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/tables/ntanetanalytics
 >ネットワークトラフィック分析（NTA）に関する詳細な分析結果を提供するAzure Monitor Logsのテーブルです。このテーブルには、ネットワークセキュリティグループ（NSG）やセキュリティ管理構成に関連するアクセス制御リスト（ACL）ルール、許可されたインバウンドおよびアウトバウンドフローの数、接続名、接続タイプ、国コード、送信元および送信先のIPアドレス、ポート番号などの情報が含まれます。

例）NTANetAnalytics
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/44b86f8d-27ec-4f4f-8d03-f61254ef77d3.png)



### NTAInsights
　https://learn.microsoft.com/ja-jp/azure/azure-monitor/reference/tables/ntainsights
 >アドレスプレフィックス: 発見されたリソースに関連するアドレスプレフィックス
ネットワークセキュリティグループのルール: 許可/拒否のアクセス情報
バックエンドIPアドレスとポート: インバウンドNATルールに関連するバックエンドIPアドレスとポート
接続ステータス: ゲートウェイ接続のステータス
暗号化の有効化: 仮想ネットワークの暗号化の有効化状態

例）こちらは私の環境では取れなかったのでなしです。今後取れたら追加します。


## トラフィック分析 での確認
+ Network Watcher → トラフィック分析 より確認可能です
 FlowLog Type は「VNet」です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/d369985a-eb64-4529-8dae-731c1045d4ce.png)


非常に分析しやすくインサイトをだしてくれるよいインターフェースになっています。
このポストで一番伝えたいのがこのあたりになります。

参考に画面ショットをいくつか張っておきたいと思います。
シンプルな Webサーバを IIS でたてて、インバウンド80番を開けてるだけのサーバーなので通信料が少なく恐縮ですが。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/3c8c0dde-565c-40d3-b90b-eccadc2108a0.png)
こちらサマリー的な画面です

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/3ef0465b-c51f-426a-9a8b-9f0bcc82510f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2910f4f7-0a4b-4529-a66f-2cad905cb1ca.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/2365e0ba-5449-4ca3-b3a7-df42a10877c8.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/cce1f799-40bf-41c1-8d63-cb4052cf83e0.png)
オランダ・ドイツあたりからたくさん通信がきてるようです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/dfba86e0-9b30-48d8-b3bb-777baa03948f.png)
ロシアからたくさん通信がきてるようです

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2982508/78713d18-af0a-4aeb-99c3-191b5ebfd616.png)
*私の環境には VNetGW(VPN/ER) や LB や AppGW がないので表示されていませんが参考までに。

# まとめ
VNet フローログを使って、Azure Network Watcherで仮想ネットワークの IPトラフィックを記録し、トラフィックアナリティクスで可視化してみました！これにより、ネットワークの異常や急増するトラフィックが簡単に把握できます。実際に、海外からのアクセス（特にオランダやロシア）も確認できて、予想以上の動きがありました！簡単に構成できるトラフィック分析でこれだけ可視化できるのは便利ですね！

# 参考

こちら先輩の記事です。VNet フローログそのものについて詳しく書かれています！✨

https://qiita.com/Isato-Hiyama/items/1830ed4e8921b57b4204