NSG のトラブルシューティング

完了

ポート、サービス タグ、優先度番号を含むネットワーク セキュリティ グループ (NSG) 構成データの理解を示す

ネットワーク セキュリティ グループ

Azure 仮想ネットワーク内のリソースで送受信されるネットワーク トラフィックは、Azure ネットワーク セキュリティ グループを使ってフィルター処理できます。 ネットワーク セキュリティ グループは、数種類の Azure リソースとの送受信ネットワーク トラフィックを許可または拒否するセキュリティ規則で構成されています。 各規則で、送信元と送信先、ポート、およびプロトコルを指定することができます。

このユニットでは、次のことについて学習します。

  • ネットワーク セキュリティ グループ規則のプロパティと、適用される既定のセキュリティ規則。

  • 拡張セキュリティ規則を作成するために変更できる規則のプロパティ。

セキュリティ規則

ネットワーク セキュリティ グループには、Azure サブスクリプションの制限内で 0 または必要な数の規則を含めることができます。 各規則では次のプロパティを指定します。

プロパティ 説明
名前 ネットワーク セキュリティ グループ内で一意の名前。
Priority 規則は、数値が小さいほど優先順位が高いために、大きい数値の前に小さい数値が処理されます。 数値は 100 から 4096 までで指定できます。
ソース/宛先 Azure リソースのアドレスを指定する場合は、リソースに割り当てられているプライベート IP アドレス、範囲、サービス タグ、またはアプリケーション セキュリティ グループを指定する必要があります。
Protocol TCP、UDP、ICMP、ESP、AH、または Any。
Direction 規則が受信トラフィックまたは送信トラフィックに適用されるかどうか。
ポートの範囲 範囲を指定すると、作成するセキュリティ規則の数を減らすことができます。 個別のポートまたはポートの範囲を指定できます。 たとえば、80 または 10000-10005 です。
アクション 許可または拒否。

ネットワーク セキュリティ グループ内に作成できるセキュリティ規則の数には、制限があります。 詳細については、Azure の制限 に関する記事をご覧ください。

既定セキュリティ規則

各ネットワーク セキュリティ グループに、Azure によって次の既定の規則が作成されます。

受信

AllowVNetInBound

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
65000 VirtualNetwork 0-65535 VirtualNetwork 0-65535 Any Allow

AllowAzureLoadBalancerInBound

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
65001 AzureLoadBalancer 0-65535 0.0.0.0/0 0-65535 Any Allow

DenyAllInbound

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
65500 0.0.0.0/0 0-65535 0.0.0.0/0 0-65535 Any Allow

Outbound

AllowVnetOutBound

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
65000 VirtualNetwork 0-65535 VirtualNetwork 0-65535 Any Allow

AllowInternetOutBound

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
65001 0.0.0.0/0 0-65535 インターネット 0-65535 Any Allow

DenyAllOutBound

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
65001 0.0.0.0/0 0-65535 0.0.0.0/0 0-65535 Any Allow

SourceDestination 列の VirtualNetworkAzureLoadBalancerInternet は、IP アドレスではなくサービス タグです。 "プロトコル" 列で "Any" は TCP、UDP、ICMP を含みます。 規則を作成するときに、TCP、UDP、ICMP、または Any を指定できます。 "ソース" 列と "宛先" 列の 0.0.0.0/0 は、すべてのアドレスを表します。 Azure portal、Azure CLI、PowerShell などのクライアントでは ***** または Any をこの式に使用できます。

既定の規則は削除できませんが、優先順位の高い規則を作成することでオーバーライドできます。

拡張セキュリティ規則

拡張セキュリティ規則によって、複数のポート、複数の明示的 IP アドレスおよび範囲を組み合わせて、単一のセキュリティ規則を作成することができます。 言い換えると、拡張セキュリティ規則により、仮想ネットワークのセキュリティ定義が簡略化されます。 これにより、大規模で複雑なネットワーク セキュリティ ポリシーを、より少なくシンプルな規則に分割できます。 拡張規則は、一般的に規則のソース、宛先、ポート フィールドで使います。

拡張セキュリティ規則とサービス タグまたはアプリケーション セキュリティ グループを組み合わせることで、セキュリティ規則の定義を合理化できます。 ただし、規則に指定できるアドレス、範囲、およびポートの数には制限があります。

  • サービス タグ: サービス タグは、指定された Azure サービスからの IP アドレス プレフィックスのグループを表します。 これは、ネットワーク セキュリティ規則を頻繁に更新する煩わしさを最小限に抑えるのに役立ちます。 Azure サービス タグを参照してください。

  • Storage サービス タグを使用してネットワーク アクセスを制限する方法の例については、Azure portal を使用して仮想ネットワーク サービス エンドポイントで PaaS リソースへのネットワーク アクセスを制限するに関するページを参照してください。

  • アプリケーション セキュリティ グループ: アプリケーション セキュリティ グループを使用すると、アプリケーションの構造の自然な拡張として、ネットワーク セキュリティを構成できます。 これにより、仮想マシンをグループ化し、それらのグループに基づくネットワーク セキュリティ ポリシーを定義することができます。 明示的な IP アドレスを手動でメンテナンスせずに、大きなセキュリティ ポリシーを再利用することができます。 詳細については、「アプリケーション セキュリティ グループ」を参照してください。

NSG 構成に関する問題のトラブルシューティング

ネットワーク セキュリティ グループ (NSG) を使用すると、仮想マシン (VM) のトラフィックの受信と送信フローを制御できます。 Azure 仮想ネットワーク内のサブネット、または VM に接続されたネットワーク インターフェイス、もしくはその両方に、NSG を関連付けることができます。 ネットワーク インターフェイスに適用されるすべてのセキュリティ規則は、ネットワーク インターフェイスとそのネットワークが存在するサブネットに存在するすべてのセキュリティ規則を組み合わせたものです。 VM のネットワーク インターフェイスに適用されるさまざまな NSG の規則間の競合を調べることができます。

次の記事は、次の理解を深めるのに役立ちます。

このユニットでは、VM に対して有効な NSG のセキュリティ規則を表示することによって、ネットワーク トラフィック フィルターに関する問題を診断する方法を学習します。

Azure portal を使用して診断する

シナリオ

インターネットからポート 80 経由で VM に接続しようとすると、接続が失敗します。 これが発生する理由を理解するには、Azure portal、PowerShell、または Azure CLI を使用して、ネットワーク インターフェイスの有効なセキュリティ規則を調べることができます。

有効なセキュリティ規則を表示する既存の VM がない場合、タスクを完了するには最初に Linux または Windows VM をデプロイする必要があります。

次のタスクでは、myVMVMNic という名前のネットワーク インターフェイスを持つ myVM という名前の VM の例を示します。 VM およびネットワーク インターフェイスは、myResourceGroup というリソース グループにあり、米国東部リージョンにあります。 問題を診断するには、VM については、手順の値を適宜変更します。

  1. Azure Portal にログインします。

  2. Azure portal の上部の検索ボックスに、VM の名前を入力します。 検索結果に VM の名前が表示されたら、それを選択します。

  3. [設定] で、 [ネットワーク] を選択します。

    次の画像に示されている規則は、myVMVMNic という名前のネットワーク インターフェイスのものです。 2 つの異なるネットワーク セキュリティ グループからのネットワーク インターフェイスに対する受信ポートの規則があります。

    • mySubnetNSG: ネットワーク インターフェイスが含まれるサブネットに関連付けられています。

    • myVMNSG: myVMVMNic という名前の VM 内のネットワーク インターフェイスに関連付けられています。

    前の画像でわかるように、DenyAllInBound という名前の規則によって、インターネットから VM へのポート 80 経由の受信通信が妨げられています。 規則の [ソース] には 0.0.0.0/0 と表示されており、これにはインターネットが含まれます。 優先順位がそれより高くて (小さい値) ポート 80 での受信を許可する規則は他にありません。 インターネットから VM へのポート 80 での受信を許可する方法については、「問題を解決する」をご覧ください。

    [送信ポート規則] の下部には、ネットワーク インターフェイスの送信ポート規則があります。 VirtualNetworkAzureLoadBalancer は サービス タグです。 サービス タグは IP アドレス プレフィックスのグループを表し、セキュリティ規則の作成の複雑さを最小限に抑えるのに役立ちます。

  4. VM が実行状態であることを確認した後、次の画像のように [有効なセキュリティ規則] を選択します。

    ネットワーク インターフェイスとサブネットに関連付けられている NSG には、さまざまなタブがあることがわかります。 一覧表示されている規則は手順 3 と同じですが、画像に示されているように、最初の 50 個の規則のみが表示されます。 すべての規則を含む .csv ファイルをダウンロードするには、[ダウンロード] を選択します。

    各サービス タグが表すプレフィックスを確認するには、AllowAzureLoadBalancerInbound のような規則を選択します。 以下の画像では、AzureLoadBalancer サービス タグのプレフィックスが示されています。

    Screenshot showing prefixes for the AzureLoadBalancer service tag.

  5. この例の VM には、myVMVMNicmyVMVMNic2 の 2 つのネットワーク インターフェイスが接続されています。 有効なセキュリティ規則は、ネットワーク インターフェイスごとに異なる場合があります。 このネットワーク インターフェイスの規則を表示するには、myVMVMNic2 を選択します。

myVMVMNic2 ネットワーク インターフェイスには、myVMVMNic ネットワーク インターフェイスのようにネットワーク セキュリティ グループが関連付けられていません。 各ネットワーク インターフェイスとサブネットには、1 つの NSG を関連付けることができ、NSG を関連付けなくてもかまいません。 各ネットワーク インターフェイスまたはサブネットに関連付ける NSG は、同じでも異なっていてもかまいません。 同じ NSG を、任意の数のネットワーク インターフェイスとサブネットに関連付けることができます。

Note

ここでは VM から有効なセキュリティ規則を表示しましたが、以下の個々の項目から表示することもできます。

PowerShell を使用してコマンドを実行するには、PowerShell を使用した診断に関するページを参照してください。

Azure CLI を使用してコマンドを実行するには、Azure CLI を使用した診断に関するページを参照してください。

接続の問題をトラブルシューティングするには次を行います。

  • インターネットからの受信トラフィックを許可するには、既定の規則より優先順位の高いセキュリティ規則を追加します。

  • 仮想ネットワークのピアリングに関する問題をトラブルシューティングするには、ExpandedAddressPrefix の一覧でプレフィックスを表示できます。

  • VM のネットワーク インターフェイスやサブネットに関連付けられている NSG があることを確認します。 また、VM が実行中の状態であることも確認します。

  • VM にパブリック IP アドレスがある場合は、ネットワーク インターフェイスが含まれるサブネットに NSG を適用することをお勧めします。

追加の診断

  • Azure Network Watcher の IP フロー検証機能を使用して、VM との間でトラフィックが許可されているかどうかを判断します。

  • VM のネットワーク接続の失敗を引き起こすセキュリティ規則がない場合は、他の原因が考えられます。

    • VM のオペレーティング システム内で実行されているファイアウォール ソフトウェア。

    • 仮想アプライアンスまたはオンプレミス トラフィック用に構成されたルートについては、強制トンネリングに関するページを参照してください。 また、VM からのトラフィックのフローを妨げる可能性があるルートの問題を診断する方法については、「仮想マシンのルーティングの問題を診断する」をご覧ください。

NSG フロー ログの確認と解釈

はじめに

Azure Network Watcher の NSG フロー ログ機能では、NSG を流れる IP トラフィックに関する情報をログに記録できます。 フロー データは、Azure Storage アカウントに送信され、そこから選択した視覚化ツール (SIEM またはIDS) にエクスポートできます。

フロー ログを使用する理由

フロー ログは、クラウド環境内のすべてのネットワーク アクティビティの管理と監視に関して重要です。 フロー ログは、ネットワーク フローの最適化、データの監視、コンプライアンスの検証、侵入の検出などに使用できます。

一般的なユース ケースの一部は次のとおりです。

ネットワーク監視:

  • 不明または不要なトラフィックを特定します。

  • トラフィック レベルと帯域幅の消費を監視します。

  • アプリケーションの動作を把握するために、フロー ログを IP およびポートでフィルター処理します。

  • フロー ログを選択した分析および視覚化ツールにエクスポートして、監視ダッシュボードを設定します。

使用状況の監視と最適化:

  • ネットワークのトップ トーカーを特定します。

  • GeoIP データと組み合わせて、リージョン間のトラフィックを識別します。

  • 容量の予測用にトラフィックの増加について把握します。

  • データを使用して、明らかに制限の厳しいトラフィック規則を削除します。

コンプライアンス:

  • フロー データを使用して、ネットワークの分離とエンタープライズ アクセス規則への準拠を確認します。

ネットワークフォレンジックとセキュリティ分析:

  • 侵害された IP とネットワーク インターフェイスからのネットワーク フローを分析します。

  • 選択した SIEM または IDS ツールにフロー ログをエクスポートします。

ログ記録のしくみ

  • フロー ログは第 4 層 (トランスポート層) で動作します。 NSG との間で送受信されるすべての IP フローを記録します。

  • ログは、お客様のリソースやネットワーク パフォーマンスに影響を与えることなく、Azure プラットフォームを通じて 1 分間隔で収集されます。

  • ログは JSON 形式で書き込まれます。 NSG 規則ベースごとの送信フローと受信フローを表示します。

  • 各ログ レコードには、ネットワーク インターフェイス (NIC) が含まれています。 フローは、トラフィックの決定と (バージョン 2 のみ) スループット情報の 5 タプル情報に適用されます。 ログ形式に関するページを参照してください。

  • フロー ログでは、作成後最大 1 年間ログが削除されます。

フロー ログを有効にするには、NSG Flow ログの有効化に関するページを参照してください。

IP フロー検証

IP フロー検証では、仮想マシンから送受信されるパケットが許可または拒否されているかが確認されます。 IP フロー検証を使用して、インターネットとの間、またはオンプレミス環境との間の接続の問題を診断できます。 方向、プロトコル、ローカル IP、リモート IP、ローカル ポート、リモート ポートに関する情報を提供します。 セキュリティ グループでパケットが拒否された場合、使用される規則の名前が返されます。

IP フロー検証では、サブネットや仮想マシン NIC など、ネットワーク インターフェイスに適用されるすべての NSG に対するルールが考慮されます。 次に、そのネットワーク インターフェイスに関する構成済みの設定に基づいてトラフィック フローが検証されます。

IP フロー検証では、仮想マシンとの間のイングレスまたはエグレス トラフィックが、NSG のセキュリティ規則によってブロックされているかどうかが検証されます。 また、Azure Virtual Network Manager の規則と NSG 規則も評価されます。

Screenshot displaying IP flow verify window.

NSG フロー ログのトラブルシューティングの詳細については、一般的な問題のトラブルシューティングに関するページを参照してください。

VM または VM のグループがアプリケーション セキュリティ グループ (ASG) に関連付けられているかどうかを判断する

アプリケーション セキュリティ グループを使用すると、Azure 仮想ネットワークにある仮想マシンをグループ化し、それらのグループに基づいてネットワーク セキュリティ ポリシーを定義することができます。 これは、明示的な IP アドレスのメンテナンス作業を減らすのに役立ちます。 ASG の理解を深めるには、次の画像を検討してください。

アプリケーション セキュリティ グループ
Diagram demonstration Application security groups.

前の画像では、NIC1 と NIC2 が AsgWeb ASG のメンバーです。 NIC3 は AsgLogic ASG のメンバーであり、NIC4 は AsgDb ASG のメンバーです。 この例では、各ネットワーク インターフェイスは単一のネットワーク セキュリティ グループのメンバーです。 ただし、ネットワーク インターフェイスは、Azure の制限までの複数の ASG のメンバーにすることができます。

ネットワーク セキュリティ グループが関連付けられているネットワーク インターフェイスはありません。 NSG1 は両方のサブネットに関連付けられており、次の規則を含んでいます。

Allow-HTTP-Inbound-Internet

この規則は、インターネットから Web サーバーへのトラフィックを許可するために必要です。 インターネットからの受信トラフィックは DenyAllInbound 既定セキュリティ規則によって拒否されるため、AsgLogic または AsgDb アプリケーション セキュリティ グループでは追加の規則は必要ありません。

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
100 インターネット * AsgWeb 80 TCP Allow

Deny-Database-All

AllowVNetInBound 既定セキュリティ規則では、同じ仮想ネットワーク上にあるリソース間の通信がすべて許可されるため、この規則はすべてのリソースからのトラフィックを拒否するために必要です。

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
120 * * AsgWeb 1433 Any 拒否

Allow-Database-BusinessLogic

この規則により、AsgLogic ASG から AsgDb ASG へのトラフィックが許可されます。 この規則の優先度は、Deny-Database-All 規則のものよりも高くなっています。 その結果、この規則は Deny-Database-All 規則の前に処理されるため、AsgLogic アプリケーション セキュリティ グループからのトラフィックは許可されますが、他のすべてのトラフィックはブロックされます。

Priority source 送信元ポート 宛先 送信先ポート Protocol アクセス
110 AsgLogic * AsgDb 1433 TCP Allow

ソースまたは宛先として ASG を指定する規則は、ASG のメンバーであるネットワーク インターフェイスにのみ適用されます。 ネットワーク インターフェイスが ASG のメンバーではない場合、ネットワーク セキュリティ グループがサブネットに関連付けられている場合でも、この規則はネットワーク インターフェイスに適用されません。

アプリケーション セキュリティ グループには、次の制約があります。

  • ASG にはいくつかの制限があります。 そのうちの 1 つは、サブスクリプションに含めることができる ASG の数です。

  • 異なる仮想ネットワークから同じ ASG にネットワーク インターフェイスを追加することはできません。 たとえば、AsgWeb という名前の ASG に割り当てられた最初のネットワーク インターフェイスが、VNet1 という名前の仮想ネットワーク内にある場合、ASGWeb に割り当てられた後続のすべてのネットワーク インターフェイスが VNet1 に存在する必要があります。

  • ソースと宛先の両方の ASG のすべてのネットワーク インターフェイスが、同じ仮想ネットワークに存在する必要があります。 たとえば、VNet1 のネットワーク インターフェイスが AsgLogic、VNet2 のネットワーク インターフェイスが AsgDb に存在する場合、規則の送信元として AsgLogic、送信先として AsgDb を割り当てることはできません。