AzureでVMの通信ログを取得しようとしたとき、Azure Firewall、NSGフローログ、ネットワーク診断ツールなどが挙げられると思います。さらにAzureではTraffic Analyticsなど可視化ツールも用意されています。 今回は AdGuard HomeでDNSサーバをVMで作成し、しばらくスマホのDNSサーバとして運用しました。NSGフローログで取得したトラフィックを見てみたいとおもいます。
構成図
Azure資源の構成図は以下です。
VNETとSubnetを作成し、その中にAdGuard Homeを導入したVMが存在しています。
NSGの設定は以下です。
VMへのSSHとAdGuard Homeのダッシュボード閲覧は自宅からのみできるものとし、そのIPアドレスだけポート22,443での通信を許可しています。DNSで使用するポートだけすべての通信を許可する設定にしています。
NSGフローログを設定
NSGのダッシュボードからNSGフローログ-> 作成へと進みます。
「基本」ではフローログを格納するBLOBストレージ、フローログの保持期間を設定します。
「分析」ではフローログのバージョンは「バージョン2」に設定しました。今回はデータの可視化とかをやってみたいのでTraffic Analysisを有効にしました。
NSGフローログのファイルを確認する
DNSサーバを運用、実際に使ってみて数日経ったのでNSGフローログを確認してみます。
NSGフローログはBLOBストレージに保存されています。 ダウンロードして中身を確認してみます。
$ cat PT1H.json | jq '.' -C | less -R ... "flows": [ { "rule": "DefaultRule_DenyAllInBound", "flows": [ { "mac": "6045BD65D389", "flowTuples": [ "1705640652,104.156.155.13,10.1.1.4,51230,3069,T,I,D,B,,,,", "1705640660,35.203.210.128,10.1.1.4,55018,45648,T,I,D,B,,,,", "1705640660,35.203.211.9,10.1.1.4,49354,51,U,I,D,B,,,,", "1705640660,167.248.133.53,10.1.1.4,37470,80,T,I,D,B,,,,", "1705640661,167.248.133.53,10.1.1.4,60272,80,T,I,D,B,,,,", "1705640662,167.248.133.53,10.1.1.4,60272,80,T,I,D,B,,,,", "1705640662,167.248.133.53,10.1.1.4,58572,80,T,I,D,B,,,,", "1705640679,62.122.184.110,10.1.1.4,52530,15045,T,I,D,B,,,,", "1705640681,104.156.155.13,10.1.1.4,51230,56019,T,I,D,B,,,,", "1705640684,35.203.210.87,10.1.1.4,55182,22443,T,I,D,B,,,," ] } ] ...
flowTuplesがNSGルールが処理したトラフィックになります。上ではDenyAllInBoundが処理したトラフィックです。8番目の項目がDであれば、拒否されたトラフィックです。Dが連なっているので許可していないIPアドレス、ポートからのトラフィックが拒否されていることがわかります。 ログの見方は以下を参照してください。
NSG フロー ログの概要 - Azure Network Watcher | Microsoft Learn
Traffic Analysisでログを可視化する
Traffic Analysisの geoビューでどこから通信が来たのかマップで表示してくれます。
自家用DNSサーバなので自分しか使うユーザーはいないはずなのですが、海外からもアクセスが来ているようですね...
参考文献
Traffic Analytics を検証してみた #Azure - Qiita Azure Network Watcher で VM のパケット キャプチャを管理する - Azure portal | Microsoft Learn Azure Network Watcher で VM のパケット キャプチャを管理する - Azure portal | Microsoft Learn
Log Analytics を用いた Azure NSG フローログの分析方法 (Network Watcher) #Azure - Qiita