Az - Azure Network

Reading time: 26 minutes

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする

基本情報

Azureは、ユーザーがAzureクラウド内に孤立した****ネットワークを作成できる仮想ネットワーク(VNet)を提供します。これらのVNet内では、仮想マシン、アプリケーション、データベースなどのリソースを安全にホストおよび管理できます。Azureのネットワーキングは、クラウド内の通信(Azureサービス間)と外部ネットワークおよびインターネットへの接続の両方をサポートしています。
さらに、VNetを他のVNetやオンプレミスネットワークと
接続
することも可能です。

仮想ネットワーク(VNET)とサブネット

Azure仮想ネットワーク(VNet)は、クラウド内の自分のネットワークの表現であり、サブスクリプションに専用のAzure環境内での論理的隔離を提供します。VNetは、Azureで仮想プライベートネットワーク(VPN)をプロビジョニングおよび管理できるようにし、仮想マシン(VM)、データベース、アプリケーションサービスなどのリソースをホストします。これにより、IPアドレス範囲、サブネットの作成、ルートテーブル、ネットワークゲートウェイなどのネットワーク設定に対する完全な制御が提供されます。

サブネットは、特定のIPアドレス範囲によって定義されたVNet内の細分化です。VNetを複数のサブネットに分割することで、ネットワークアーキテクチャに応じてリソースを整理し、保護できます。
デフォルトでは、同じAzure仮想ネットワーク(VNet)内のすべてのサブネットは、制限なしに相互に通信できます。

例:

  • MyVNetのIPアドレス範囲は10.0.0.0/16。
  • サブネット-1: ウェブサーバー用の10.0.0.0/24。
  • サブネット-2: データベースサーバー用の10.0.1.0/24。

列挙

Azureアカウント内のすべてのVNetとサブネットをリストするには、Azureコマンドラインインターフェース(CLI)を使用できます。手順は以下の通りです。

bash
# List VNets
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}"

# List subnets of a VNet
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, addressPrefix:addressPrefix}" -o table

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

ネットワーク セキュリティ グループ (NSG) は、Azure 仮想ネットワーク (VNet) 内の Azure リソースへのネットワークトラフィックをフィルタリングします。これは、受信および送信トラフィックのために開くポートをソースポート、ソースIP、ポートの宛先によって示すことができる一連の セキュリティルール を含んでおり、優先度を割り当てることも可能です(優先度番号が低いほど優先度が高くなります)。

NSG は サブネットおよび NIC に関連付けることができます。

ルールの例:

  • 任意のソースからあなたのウェブサーバーへの HTTP トラフィック (ポート 80) を許可する受信ルール。
  • 特定の宛先 IP アドレス範囲への SQL トラフィック (ポート 1433) のみを許可する送信ルール。

列挙

bash
# List NSGs
az network nsg list --query "[].{name:name, location:location}" -o table
az network nsg show --name <nsg-name>

# Get NSG rules
az network nsg rule list --nsg-name <NSGName> --resource-group <ResourceGroupName> --query "[].{name:name, priority:priority, direction:direction, access:access, protocol:protocol, sourceAddressPrefix:sourceAddressPrefix, destinationAddressPrefix:destinationAddressPrefix, sourcePortRange:sourcePortRange, destinationPortRange:destinationPortRange}" -o table

# Get NICs and subnets using this NSG
az network nsg show --name MyLowCostVM-nsg --resource-group Resource_Group_1 --query "{subnets: subnets, networkInterfaces: networkInterfaces}"

Azure Firewall

Azure Firewallは、クラウドリソースを保護するためにトラフィックを検査および制御する管理されたネットワークセキュリティサービスです。これはステートフルファイアウォールであり、レイヤー3から7のルールに基づいてトラフィックをフィルタリングし、Azure内(東西トラフィック)および外部ネットワークとの間(南北トラフィック)の通信をサポートします。仮想ネットワーク(VNet)レベルで展開され、VNet内のすべてのサブネットに対して集中保護を提供します。Azure Firewallは、トラフィックの需要に応じて自動的にスケールし、手動設定を必要とせずに高可用性を確保します。

これは、特定の顧客ニーズに合わせた3つのSKU—BasicStandard、およびPremiumで利用可能です:

Criteria/FeatureOption 1Option 2Option 3
推奨使用ケース限定的なニーズを持つ中小企業(SMB)一般的な企業利用、レイヤー3–7フィルタリング高度に機密性の高い環境(例:支払い処理)
パフォーマンス最大250 Mbpsのスループット最大30 Gbpsのスループット最大100 Gbpsのスループット
脅威インテリジェンスアラートのみアラートとブロック(悪意のあるIP/ドメイン)アラートとブロック(高度な脅威インテリジェンス)
L3–L7フィルタリング基本的なフィルタリングプロトコル全体にわたるステートフルフィルタリング高度な検査を伴うステートフルフィルタリング
高度な脅威保護利用不可脅威インテリジェンスに基づくフィルタリング侵入検知および防止システム(IDPS)を含む
TLS検査利用不可利用不可インバウンド/アウトバウンドTLS終端をサポート
可用性固定バックエンド(2つのVM)オートスケーリングオートスケーリング
管理の容易さ基本的なコントロールファイアウォールマネージャー経由で管理ファイアウォールマネージャー経由で管理

Enumeration

bash
# List Azure Firewalls
az network firewall list --query "[].{name:name, location:location, subnet:subnet, publicIp:publicIp}" -o table

# Get network rules of a firewall
az network firewall network-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

# Get application rules of a firewall
az network firewall application-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

# Get nat rules of a firewall
az network firewall nat-rule collection list --firewall-name <FirewallName> --resource-group <ResourceGroupName> --query "[].{name:name, rules:rules}" -o table

Azure ルートテーブル

Azure ルートテーブル は、サブネット内のネットワークトラフィックのルーティングを制御するために使用されます。これらは、パケットがどのように転送されるべきかを指定するルールを定義します。転送先は、Azure リソース、インターネット、または仮想アプライアンスや Azure ファイアウォールのような特定の次ホップです。ルートテーブルを サブネット に関連付けることができ、そのサブネット内のすべてのリソースはテーブル内のルートに従います。

例: サブネットが、検査のためにネットワーク仮想アプライアンス (NVA) を介して外向きトラフィックをルーティングする必要があるリソースをホストしている場合、ルートテーブルに ルート を作成して、すべてのトラフィック (例: 0.0.0.0/0) を NVA のプライベート IP アドレスに次ホップとしてリダイレクトできます。

列挙

bash
# List Route Tables
az network route-table list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# List routes for a table
az network route-table route list --route-table-name <RouteTableName> --resource-group <ResourceGroupName> --query "[].{name:name, addressPrefix:addressPrefix, nextHopType:nextHopType, nextHopIpAddress:nextHopIpAddress}" -o table

Azure Private Linkは、Azureサービスへのプライベートアクセスを可能にするAzureのサービスです。これは、Azure仮想ネットワーク(VNet)とサービス間のトラフィックが完全にMicrosoftのAzureバックボーンネットワーク内を移動することを保証します。これにより、サービスがVNetに取り込まれます。この設定は、データを公共のインターネットにさらさないことでセキュリティを強化します。

Private Linkは、Azure Storage、Azure SQL Database、Private Linkを介して共有されるカスタムサービスなど、さまざまなAzureサービスで使用できます。これは、自分のVNet内または異なるAzureサブスクリプションからサービスを消費するための安全な方法を提供します。

caution

NSGはプライベートエンドポイントには適用されないため、Private Linkを含むサブネットにNSGを関連付けても効果はありません。

例:

あなたがVNetから安全にアクセスしたいAzure SQL Databaseを持っているシナリオを考えてみてください。通常、これは公共のインターネットを経由することを含むかもしれません。Private Linkを使用すると、VNet内にプライベートエンドポイントを作成し、Azure SQL Databaseサービスに直接接続できます。このエンドポイントにより、データベースは自分のVNetの一部であるかのように見え、プライベートIPアドレスを介してアクセスできるため、安全でプライベートなアクセスが保証されます。

Enumeration

bash
# List Private Link Services
az network private-link-service list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List Private Endpoints
az network private-endpoint list --query "[].{name:name, location:location, resourceGroup:resourceGroup, privateLinkServiceConnections:privateLinkServiceConnections}" -o table

Azure Service Endpoints

Azure Service Endpointsは、仮想ネットワークのプライベートアドレス空間とVNetのアイデンティティを、直接接続を介してAzureサービスに拡張します。サービスエンドポイントを有効にすることで、VNet内のリソースがAzureのバックボーンネットワークを使用してAzureサービスに安全に接続できるようになります。これにより、VNetからAzureサービスへのトラフィックがAzureネットワーク内に留まることが保証され、より安全で信頼性の高い経路が提供されます。

例:

たとえば、Azure Storageアカウントはデフォルトでパブリックインターネット経由でアクセス可能です。VNet内でAzure Storageのサービスエンドポイントを有効にすることで、VNetからのトラフィックのみがストレージアカウントにアクセスできるようにすることができます。その後、ストレージアカウントのファイアウォールを構成して、VNetからのトラフィックのみを受け入れるようにできます。

Enumeration

bash
# List Virtual Networks with Service Endpoints
az network vnet list --query "[].{name:name, location:location, serviceEndpoints:serviceEndpoints}" -o table

# List Subnets with Service Endpoints
az network vnet subnet list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, serviceEndpoints:serviceEndpoints}" -o table

サービスエンドポイントとプライベートリンクの違い

Microsoftは、docsでプライベートリンクの使用を推奨しています:

サービスエンドポイント:

  • VNetからAzureサービスへのトラフィックは、Microsoft Azureバックボーンネットワークを経由して、公共のインターネットをバイパスします。
  • エンドポイントはAzureサービスへの直接接続であり、VNet内のサービスにプライベートIPを提供しません。
  • サービス自体は、サービスファイアウォールを設定してそのトラフィックをブロックしない限り、VNetの外部からその公共エンドポイントを介してアクセス可能です。
  • サブネットとAzureサービスの間には一対一の関係があります。
  • プライベートリンクよりもコストが低いです。

プライベートリンク:

  • プライベートリンクは、VNet内のプライベートIPアドレスを持つネットワークインターフェースであるプライベートエンドポイントを介してAzureサービスをVNetにマッピングします。
  • AzureサービスはこのプライベートIPアドレスを使用してアクセスされ、ネットワークの一部であるかのように見えます。
  • プライベートリンクを介して接続されたサービスは、VNetまたは接続されたネットワークからのみアクセス可能であり、サービスへの公共のインターネットアクセスはありません。
  • AzureサービスやAzureにホストされている自分のサービスへの安全な接続を可能にし、他者と共有されているサービスへの接続も提供します。
  • サービスエンドポイントでのサブネットレベルの広範なアクセス制御に対して、VNet内のプライベートエンドポイントを介してより詳細なアクセス制御を提供します。

要約すると、サービスエンドポイントとプライベートリンクの両方がAzureサービスへの安全な接続を提供しますが、プライベートリンクはサービスが公共のインターネットにさらされることなくプライベートにアクセスされることを保証することにより、より高いレベルの隔離とセキュリティを提供します。一方、サービスエンドポイントは、VNet内にプライベートIPを必要とせず、Azureサービスへのシンプルで安全なアクセスが必要な一般的なケースに対して設定が容易です。

Azure Front Door (AFD) & AFD WAF

Azure Front Doorは、グローバルなウェブアプリケーションの迅速な配信のためのスケーラブルで安全なエントリーポイントです。これは、グローバルな負荷分散、サイト加速、SSLオフロード、Webアプリケーションファイアウォール(WAF)機能など、さまざまなサービスを単一のサービスに統合しています。Azure Front Doorは、ユーザーに最も近いエッジロケーションに基づいてインテリジェントなルーティングを提供し、最適なパフォーマンスと信頼性を確保します。さらに、URLベースのルーティング、複数サイトホスティング、セッションアフィニティ、アプリケーション層のセキュリティを提供します。

Azure Front Door WAFは、バックエンドコードを変更することなくウェブアプリケーションをウェブベースの攻撃から保護するように設計されています。SQLインジェクション、クロスサイトスクリプティング、その他の一般的な攻撃に対する脅威から保護するためのカスタムルールと管理されたルールセットが含まれています。

例:

世界中にユーザーがいるグローバルに分散したアプリケーションがあると想像してください。Azure Front Doorを使用して、ユーザーのリクエストをアプリケーションをホストしている最寄りの地域データセンターにルーティングすることで、レイテンシを減少させ、ユーザーエクスペリエンスを向上させ、WAF機能でウェブ攻撃から防御します。特定の地域でダウンタイムが発生した場合、Azure Front Doorは自動的に次の最適な場所にトラフィックを再ルーティングし、高可用性を確保します。

列挙

bash
# List Azure Front Door Instances
az network front-door list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

# List Front Door WAF Policies
az network front-door waf-policy list --query "[].{name:name, resourceGroup:resourceGroup, location:location}" -o table

Azure Application Gateway と Azure Application Gateway WAF

Azure Application Gateway は ウェブトラフィックロードバランサー であり、ウェブ アプリケーションへのトラフィックを管理することを可能にします。これは、サービスとしてのアプリケーションデリバリーコントローラー (ADC) において レイヤー 7 ロードバランシング、SSL ターミネーション、およびウェブアプリケーションファイアウォール (WAF) 機能 を提供します。主な機能には、URL ベースのルーティング、クッキー ベースのセッションアフィニティ、およびセキュアソケットレイヤー (SSL) オフロードが含まれ、グローバルルーティングやパスベースのルーティングのような複雑なロードバランシング機能を必要とするアプリケーションにとって重要です。

例:

複数のサブドメインを持つeコマースウェブサイトがあるシナリオを考えてみてください。これには、ユーザーアカウントや支払い処理などの異なる機能が含まれます。Azure Application Gateway は URL パスに基づいて適切なウェブサーバーにトラフィックをルーティング できます。たとえば、example.com/accounts へのトラフィックはユーザーアカウントサービスに、example.com/pay へのトラフィックは支払い処理サービスに向けられる可能性があります。
そして WAF 機能を使用してウェブサイトを攻撃から保護します。

列挙

bash
# List the Web Application Firewall configurations for your Application Gateways
az network application-gateway waf-config list --gateway-name <AppGatewayName> --resource-group <ResourceGroupName> --query "[].{name:name, firewallMode:firewallMode, ruleSetType:ruleSetType, ruleSetVersion:ruleSetVersion}" -o table

Azure Hub, Spoke & VNet Peering

VNet Peeringは、Azureのネットワーキング機能であり、異なる仮想ネットワーク(VNet)を直接かつシームレスに接続することを可能にします。VNetピアリングを通じて、1つのVNet内のリソースは、同じネットワークにいるかのように、別のVNet内のリソースとプライベートIPアドレスを使用して通信できます
VNetピアリングは、オンプレミスネットワークとも使用できます。サイト間VPNまたはAzure ExpressRouteを設定することで実現します。

Azure Hub and Spokeは、Azureでネットワークトラフィックを管理および整理するために使用されるネットワークトポロジーです。「ハブ」は、異なる「スポーク」間のトラフィックを制御しルーティングする中央ポイントです。ハブには通常、ネットワーク仮想アプライアンス(NVA)、Azure VPN Gateway、Azure Firewall、またはAzure Bastionなどの共有サービスが含まれます。「スポーク」は、ワークロードをホストし、VNetピアリングを使用してハブに接続するVNetです。これにより、ハブ内の共有サービスを活用できます。このモデルは、クリーンなネットワークレイアウトを促進し、異なるVNet間で複数のワークロードが使用できる共通サービスを集中化することで複雑さを軽減します。

[!CAUTION] > AzureではVNETピアリングは非推移的であり、スポーク1がスポーク2に接続され、スポーク2がスポーク3に接続されている場合、スポーク1はスポーク3と直接通信できません。

例:

販売、HR、開発などの別々の部門を持つ会社を想像してください。各部門には独自のVNet(スポーク)が存在します。これらのVNetは、中央データベース、ファイアウォール、インターネットゲートウェイなどの共有リソースへのアクセスを必要とします。これらのリソースはすべて別のVNet(ハブ)にあります。ハブとスポークモデルを使用することで、各部門はハブVNetを介して共有リソースに安全に接続でき、これらのリソースをパブリックインターネットにさらすことなく、複雑なネットワーク構造を作成することなく接続できます

Enumeration

bash
# List all VNets in your subscription
az network vnet list --query "[].{name:name, location:location, addressSpace:addressSpace}" -o table

# List VNet peering connections for a given VNet
az network vnet peering list --resource-group <ResourceGroupName> --vnet-name <VNetName> --query "[].{name:name, peeringState:peeringState, remoteVnetId:remoteVnetId}" -o table

# List Shared Resources (e.g., Azure Firewall) in the Hub
az network firewall list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

サイト間VPN

Azureのサイト間VPNは、オンプレミスネットワークをAzure仮想ネットワーク(VNet)に接続することを可能にし、Azure内のVMなどのリソースがローカルネットワーク上にあるかのように見えるようにします。この接続は、トラフィックを暗号化するVPNゲートウェイを介して確立されます。

例:

ニューヨークに本社を置く企業が、Azure内のVNetに安全に接続する必要があるオンプレミスデータセンターを持っています。このVNetは仮想化されたワークロードをホストしています。サイト間VPNを設定することで、企業はオンプレミスサーバーとAzure VM間の暗号化された接続を確保でき、両方の環境でリソースに安全にアクセスできるようになります。

列挙

bash
# List VPN Gateways
az network vnet-gateway list --query "[].{name:name, location:location, resourceGroup:resourceGroup}" -o table

# List VPN Connections
az network vpn-connection list --gateway-name <VpnGatewayName> --resource-group <ResourceGroupName> --query "[].{name:name, connectionType:connectionType, connectionStatus:connectionStatus}" -o table

Azure ExpressRoute

Azure ExpressRouteは、オンプレミスのインフラストラクチャとAzureデータセンター間のプライベートで専用の高速接続を提供するサービスです。この接続は接続プロバイダーを通じて行われ、公共のインターネットをバイパスし、通常のインターネット接続よりも信頼性が高く、速度が速く、遅延が低く、セキュリティが高いです。

例:

多国籍企業は、大量のデータと高スループットの必要性から、Azureサービスへの一貫した信頼性のある接続を必要としています。この会社は、オンプレミスのデータセンターをAzureに直接接続するためにAzure ExpressRouteを選択し、プライバシーと速度を向上させながら、日次バックアップやリアルタイムデータ分析などの大規模なデータ転送を容易にします。

Enumeration

bash
# List ExpressRoute Circuits
az network express-route list --query "[].{name:name, location:location, resourceGroup:resourceGroup, serviceProviderName:serviceProviderName, peeringLocation:peeringLocation}" -o table

tip

AWSハッキングを学び、実践する:HackTricks Training AWS Red Team Expert (ARTE)
GCPハッキングを学び、実践する:HackTricks Training GCP Red Team Expert (GRTE) Azureハッキングを学び、実践する:HackTricks Training Azure Red Team Expert (AzRTE)

HackTricksをサポートする