高度なネットワーク保護のための Azure Firewall の構成
2024/08/08
この技術的および教育的な記事は、セキュリティ アナリスト、IT 管理者、システム エンジニアが高度なネットワーク保護を目的として Azure Firewall を構成および使用する方法をガイドすることを目的としています。 Azure Firewall は、Azure ネットワーク リソースにレイヤー 4 およびレイヤー 7 の脅威保護を提供する、マネージド型のクラウド ベースのネットワーク セキュリティ サービスであり、ネットワーク制御の一元化と、クラウド環境全体で一貫したセキュリティ ポリシーの実装を可能にします [1]。
はじめに
成長を続けるクラウド環境において、ネットワーク セキュリティはアプリケーションとデータを保護するための基本的な柱です。 Azure Firewall は、ネットワーク トラフィックを検査および制御するための堅牢なソリューションを提供し、セキュリティ ポリシーを適用する中心点として機能します。これは、完全修飾ドメイン名 (FQDN) ベースのトラフィック フィルタリング、脅威インテリジェンス、侵入検知防御システム (IDPS)、TLS インスペクションなどの高度な機能を提供することで、基本的なネットワーク セキュリティ グループ (NSG) を超えており、Azure、特にハブ アンド スポーク モデルの安全なネットワーク アーキテクチャに不可欠なものとなっています [2]。
この実践的なガイドでは、Azure Firewall のデプロイ、ネットワークとアプリケーションのルールの構成、脅威インテリジェンスと IDPS の有効化、他の Azure サービスとの統合、およびネットワーク ガバナンスのベスト プラクティスについて説明します。読者が効果的なネットワーク保護戦略を実装して検証し、攻撃対象領域を減らし、Azure インフラストラクチャのサイバー回復力を強化できるように、段階的な手順、Azure CLI コマンドの例、および例が提供されます。
Azure Firewall が高度なネットワーク保護にとって重要なのはなぜですか?
- 高度なトラフィック フィルタリング: IP アドレス、ポート、プロトコル、FQDN、URL に基づいてネットワーク トラフィックをフィルタリングし、きめ細かい制御を提供します。
- 脅威インテリジェンス: Microsoft の脅威インテリジェンス フィードに基づいて、既知の悪意のあるドメインおよび IP アドレスとの間のトラフィックを自動的にブロックします。
- IDPS (侵入検知および防止システム): 脆弱性エクスプロイトやマルウェアなどのシグネチャベースの攻撃をリアルタイムで検出し、ブロックします。
- TLS 検査: 送信 TLS/SSL トラフィックを復号化して隠れた脅威を検査し、セキュリティ ポリシーを適用し、宛先に送信する前に再暗号化します。
- 集中展開: ハブ仮想ネットワークに展開して、複数のスポーク仮想ネットワークを保護し、管理とポリシーの適用を簡素化できます。
- 高可用性とスケーラビリティ: これは、トラフィックの急増に対処するための統合された高可用性と自動スケーラビリティを備えたフルマネージド サービスです。
- Azure エコシステムの統合: Azure Monitor、Azure Sentinel、Azure Firewall Manager とシームレスに統合し、一元的な監視、分析、管理を実現します。
前提条件
高度なネットワーク保護を実現するために Azure Firewall を構成するには、次のアイテムが必要です。
- アクティブな Azure サブスクリプション: リソースを作成および管理するための Azure サブスクリプション。
- 管理アクセス: Azure サブスクリプション、またはファイアウォールと VNet がデプロイされるリソース グループ内の「所有者」または「共同作成者」のロールを持つアカウント。
- Azure Virtual Network (VNet): Azure Firewall をデプロイするための少なくとも 1 つの VNet、理想的にはデモンストレーション用のハブ アンド スポーク アーキテクチャ。
- オプション: 仮想マシン (VM): ファイアウォール ルールをテストするためにスポーク VNet にデプロイされた VM。
- Azure CLI または Azure PowerShell: Azure と対話するためのコマンド ライン ツールをインストールおよび構成しました。
ステップバイステップ: 高度な保護のための Azure Firewall の構成
Azure Firewall をデプロイし、その主な機能を構成しましょう。
1. ハブアンドスポーク アーキテクチャの準備
ハブ アンド スポーク アーキテクチャは、Azure の一般的なネットワーク トポロジであり、ハブ VNet には共有サービス (Azure Firewall など) が含まれ、スポーク VNet にはワークロードが含まれます。スポーク間のトラフィックとインターネットへのトラフィックは、ハブ経由でルーティングされます。
- リソース グループの作成: すべてのリソースのリソース グループを作成します。 「」バッシュ az group create --name RG-Firewall-Artigos --location eastus 「」
- VN の作成et Hub: Azure Firewall 専用のサブネット (
AzureFirewallSubnet) を使用してハブの VNet を作成します。 「」バッシュ az network vnet create --name VNet-Hub --resource-group RG-Firewall-Artigos --address-prefix 10.0.0.0/16 --location eastus az network vnet subnet create --name AzureFirewallSubnet --vnet-name VNet-Hub --resource-group RG-Firewall-Articles --address-prefix 10.0.1.0/24 「」 - VNet スポークの作成: VM のサブネットを持つスポークの VNet を作成します。 「」バッシュ az network vnet create --name VNet-Spoke --resource-group RG-Firewall-Artigos --address-prefix 10.1.0.0/16 --location eastus az network vnet subnet create --name WorkloadSubnet --vnet-name VNet-Spoke --resource-group RG-Firewall-Articles --address-prefix 10.1.1.0/24 「」
- VNet ピアリングの構成: ハブ VNet とスポーク VNet をピアリング経由で接続します。 「」バッシュ az network vnetpeering create --name HubToSpoke --resource-group RG-Firewall-Articles --vnet-name VNet-Hub --remote-vnet VNet-Spoke --allow-vnet-access az network vnetpeering create --name SpokeToHub --resource-group RG-Firewall-Articles --vnet-name VNet-Spoke --remote-vnet VNet-Hub --allow-vnet-access 「」
2. Azure ファイアウォールのデプロイ
-
Azure Firewall の作成: Azure Firewall をハブ VNet の「AzureFirewallSubnet」にデプロイします。 「」バッシュ az network firewall create --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --location eastus --sku Standard az network firewall ip-config create --firewall-name AzureFirewall-01 --name AzureFirewall-IP --resource-group RG-Firewall-Articles --vnet-name VNet-Hub --public-ip-address az-firewall-pip 「」
- 注意: 名前 (例:
az-firewall-pip) を指定すると、az network firewall ip-config createコマンドでファイアウォールのパブリック IP が自動的に作成されます。
- 注意: 名前 (例:
-
ファイアウォールのプライベート IP を取得: ルーティングに使用される Azure Firewall のプライベート IP をメモします。 「」バッシュ az network firewall show --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv 「」
3. Azure Firewall のルーティングの構成
スポーク VNet トラフィックが Azure Firewall を通過するには、ルート テーブルを作成し、それをスポーク サブネットに関連付ける必要があります。
- ルート テーブルの作成: ルート テーブルを作成します。 「」バッシュ az network Route-table create --name FirewallRouteTable --resource-group RG-Firewall-Artigos --location eastus 「」
- デフォルト ルートの追加: すべてのトラフィックを Azure Firewall プライベート IP に送信するデフォルト ルート (0.0.0.0/0) を追加します。
「」バッシュ
#
を前の手順で取得したプライベート IP に置き換えます FIREWALL_PRIVATE_IP=$(az network firewall show --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --query ipConfigurations[0].privateIpAddress -o tsv) az network Route-table Route create --name DefaultRouteToFirewall --resource-group RG-Firewall-Artigos --route-table-name FirewallRouteTable --address-prefix 0.0.0.0/0 --next-hop-type VirtualAppliance --next-hop-ip-address $FIREWALL_PRIVATE_IP 「」 - ルート テーブルをスポーク サブネットに関連付けます: ルート テーブルを「VNet-Spoke」の「WorkloadSubnet」に関連付けます。 「」バッシュ az network vnet subnet update --name WorkloadSubnet --vnet-name VNet-Spoke --resource-group RG-Firewall-Articles --route-table FirewallRouteTable 「」
4. Azure ファイアウォール ルールの構成
Azure Firewall は、ルールのコレクションを使用してトラフィックを制御します。ルールには「ネットワーク ルール」、「アプリケーション ルール」、「NAT ルール」の 3 種類があります。
4.1.ネットワークルール
レイヤ 3 およびレイヤ 4 トラフィック (IP、ポート、プロトコル) を制御します。
-
DNS の送信トラフィックを許可: 名前解決に不可欠です。 「」バッシュ az network firewall network-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-DNS" --name "Allow-DNS-Outbound" --resource-group RG-Firewall-Articles --priority 100 --actionAllow --source-addresses "" --destination-addresses "" --protocols UDP --destination-ports 53 「」
-
特定の IP への送信トラフィックを許可: 例: パッチ サーバーへのアクセスを許可します。 「」バッシュ az network firewall network-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-Patch-Server" --name "Allow-Patch-Server-Outbound" --resource-group RG-Firewall-Articles --priority 110 --action--source-addresses "10.1.1.0/24" --destination-addresses "20.1.2.3" --protocols TCP --destination-ports 443 を許可します 「」
4.2.応募規定
FQDN に基づいてレイヤー 7 トラフィック (HTTP/HTTPS) を制御します。
-
Microsoft サイトへのアクセスを許可: 例:
learn.microsoft.comへのアクセスを許可します。 「」バッシュ az network firewall application-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-Microsoft-Sites" --name "Allow-Learn-Microsoft" --resource-group RG-Firewall-Articles --priority 100 --actionAllow --source-addresses "10.1.1.0/24" --protocols Http=80 Https=443 --fqdn-tags "Microsoft.Websites" --target-fqdns "learn.microsoft.com" 「」- ヒント: 「Fqdn-tags」は、共通サービス用に Microsoft によって事前に定義された FQDN のグループです。
-
悪意のある Web サイトへのアクセスをブロック: 既定では、Azure Firewall は明示的に許可されていないものをすべてブロックします。ただし、特定の FQDN に対して明示的な拒否ルールを作成できます。 「」バッシュ az network firewall application-rule create --firewall-name AzureFirewall-01 --collection-name "Block-Malicious-Sites" --name "Block-Bad-Site" --resource-group RG-Firewall-Articles --priority 200 --action Deny --source-addresses "10.1.1.0/24" --protocols Https=443 --target-fqdns 「badsite.com」 「」
4.3. NAT (ネットワーク アドレス変換) ルール
受信トラフィックを内部リソース (DNAT - 宛先 NAT) に転送できるようにします。
-
VM への外部 RDP アクセスを許可する (注意してください!): 例: 特定のパブリック IP から VM への RDP を許可します。 「」バッシュ # WorkloadSubnet 上に VM を作成してテストします az vm create --name TestVM --resource-group RG-Firewall-Articles --image UbuntuLTS --size Standard_B1s --vnet-name VNet-Spoke --subnet WorkloadSubnet --admin-username azureuser --admin-password "P@ssw0rd12345!" --いいえ、お待ちください
VM のプライベート IP を取得する
VM_PRIVATE_IP=$(az vm show --name TestVM --resource-group RG-Firewall-Artigos --query privateIps -o tsv)
ファイアウォールのパブリック IP を取得する
FIREWALL_PUBLIC_IP=$(az network public-ip show --name az-firewall-pip --resource-group RG-Firewall-Artigos --query ipAddress -o tsv)
DNAT ルールを作成する
az network firewall nat-rule create --firewall-name AzureFirewall-01 --collection-name "Allow-RDP-Inbound" --name "RDP-to-TestVM" --resource-group RG-Firewall-Articles --priority 100 --action Dnat --source-addresses "YOUR_PUBLIC_IP" --destination-addresses $FIREWALL_PUBLIC_IP --protocols TCP --宛先ポート 3389 --変換されたアドレス $VM_PRIVATE_IP --変換されたポート 3389 「」 * 警告: アクセスを制限するには、「YOUR_PUBLIC_IP」を実際のパブリック IP アドレスに置き換えます。 運用環境では DNAT ルールに「*」を使用しないでください。
5. Azure Firewall Premium の構成 (IDPS および TLS 検査)
IDPS や TLS インスペクションなどの高度な保護機能を利用するには、Azure Firewall Premium が必要です。
-
ファイアウォール SKU をアップグレードします (必要な場合): 標準ファイアウォールを作成している場合は、それをプレミアムにアップグレードできます。 「」バッシュ az network firewall update --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --sku Premium 「」
-
TLS 検査の構成: TLS 検査には、企業またはパブリック CA によって発行され、Azure Key Vault に保存されている SSL/TLS 証明書が必要です。
- 前提条件: Azure Key Vault で認定されている (詳細については、Azure Key Vault に関する以前の記事を参照してください)。
- ファイアウォール ポリシーを作成し、ファイアウォールに関連付けます。 「」バッシュ az network firewall Policy create --name FirewallPolicy-01 --resource-group RG-Firewall-Artigos --location eastus az network firewall Policy update --name FirewallPolicy-01 --resource-group RG-Firewall-Artigos --threat-intel-mode Alert az network firewall update --name AzureFirewall-01 --resource-group RG-Firewall-Artigos --firewall-policy FirewallPolicy-01 「」
- Azure portal で、「ファイアウォール ポリシー」 -> 設定 -> TLS 検査 に移動します。
- TLS 検査を有効にし、Key Vault のルート証明書を選択します。
-
IDPS の構成: IDPS はファイアウォール ポリシーを通じて有効になり、構成されます。
- Azure portal で、「ファイアウォール ポリシー」 -> 設定 -> IDPS に移動します。
- IDPS モード (アラートまたはアラートと拒否) を設定し、カスタム IDPS 署名ルールを作成できます。
6. インテリジェンスの活性化脅威の
Azure Firewall の脅威インテリジェンスは、既知の悪意のある IP アドレスおよび FQDN との間のトラフィックを「アラート」または「アラートと拒否」するように構成できます。
- Azure portal で、Azure Firewall (
AzureFirewall-01) に移動します。 - 左側のナビゲーション ペインで、脅威インテリジェンスを選択します。
- 「モード」を「警告と拒否」に設定します。
検証とテスト
Azure Firewall 構成を検証することは、セキュリティ ポリシーが正しく適用されていることを確認するために重要です。
1. ネットワークルールのテスト
-
DNS 接続テスト: 「WorkloadSubnet」上の VM からドメイン名の解決を試みます。 DNS ルールが設定されている場合、これは機能するはずです。 「」バッシュ nslookup google.com 「」
- 期待される結果: DNS 解決は成功しました。
-
ポート ブロッキング テスト: 外部 IP に許可されていないポートへのアクセスを試みます。 「」バッシュ nc -vz 8.8.8.8 80 「」
- 期待される結果: 接続が拒否されるか、タイムアウトになります。
2. アプリケーション ルールのテスト
-
FQDN アクセス許可テスト:
WorkloadSubnet上の VM から、ブラウザー経由でlearn.microsoft.comにアクセスしてみます。- 期待される結果: アクセスは成功しました。
-
FQDN ブロック テスト: 「badsite.com」にアクセスしてみます (拒否ルールを設定している場合)。
- 予想される結果: アクセスはファイアウォールによってブロックされ、ブラウザーにエラー メッセージが表示されます。
3. NAT ルール (DNAT) のテスト
- Azure の外部のコンピューター (DNAT ルールで指定したパブリック IP を使用) から、RDP/SSH 経由でポート 3389/22 の Azure Firewall パブリック IP に接続してみます。
- 期待される結果: 内部 VM への接続に成功しました。
4. Azure Firewall ログの確認
Azure Firewall ログは、トラフィックの監視とルールの検証に不可欠です。
- Azure portal で、Azure Firewall (
AzureFirewall-01) に移動します。 - 左側のナビゲーション ペインで、[ログ] を選択します。
- Log Analytics を使用して、ファイアウォール ログをクエリできます。 「AzureFirewallNetworkRule」イベントと「AzureFirewallApplicationRule」イベントを探して、どのルールがトリガーされたか、トラフィックが許可されたか拒否されたかを確認します。
5. 脅威インテリジェンスと IDPS のテスト (プレミアム)
- 脅威インテリジェンス: 悪意があることが知られている IP または FQDN にアクセスしてみます (「test.malware.testing.com」などの安全なマルウェア テスト サイトまたは脅威インテリジェンス テスト IP を使用します)。ファイアウォールはアクセスをブロックする必要があります。
- IDPS: IDPS によって検出される攻撃をシミュレートしてみます (たとえば、脆弱性テスト ツールを使用して、該当する場合、スポーク VM 上の Web アプリケーションに SQL インジェクションを試みます)。ファイアウォールはアラートを生成したり、トラフィックをブロックしたりする必要があります。
セキュリティのヒントとベスト プラクティス
- ハブ アンド スポーク モデル: 可能な限り、ハブに Azure Firewall を備えたハブ アンド スポーク モデルを使用して、ネットワーク制御を一元化し、ポリシー管理を簡素化します。
- 最小権限の原則: 最小限の権限でファイアウォール ルールを作成し、重要なトラフィックのみを許可します。デフォルトですべてのトラフィックをブロックし、必要なものはすべて明示的に許可します。
- ルールの優先順位付け: 競合を回避し、目的のルールが確実に適用されるように、各コレクション内のルールの処理順序 (NAT > ネットワーク > アプリケーション) と優先順位を理解します。
- 脅威インテリジェンスを有効にする: 既知の悪意のあるソースから自動的に保護するために、脅威インテリジェンスを「アラートと拒否」モードで有効にしておきます。
- Azure Firewall Premium: 高度な保護が必要な環境の場合は、Premium SKU を使用して、IDPS や TLS Inspection などの機能を活用します。
- TLS 検査: 送信トラフィックに TLS 検査を実装して、暗号化されたセッションに隠れた脅威を検出します。ただし、証明書の管理については慎重に計画してください。
- 監視と監査: Azure Firewall ログを Azure Monitor および Azure Sentinel と統合して、継続的な監視、セキュリティ分析、インシデント対応を実現します。
- Azure Firewall Manager: 複数のファイアウォールと複雑なポリシーがある環境の場合は、Azure Firewall Manager を使用して一元的な階層型ポリシー管理を行います。
- ドキュメント: ファイアウォール ルールとそれぞれの理論的根拠を明確にドキュメント化して維持します。
一般的なトラブルシューティング
- トラフィックブロック予期せぬことから: Log Analytics で Azure Firewall ログを確認します。これらは、どのルール (ネットワーク、アプリケーション、または脅威インテリジェンス) がトラフィックをブロックしたかを示します。必要に応じてルールを調整します。
- 接続が遅い: トラフィックが遅い場合は、Azure Monitor でファイアウォールの CPU 使用率を確認してください。ファイアウォールがパフォーマンスの限界に達している可能性があります。 SKU をスケーリングするかルールを最適化することを検討してください。
- NAT ルールが機能しない: パブリック IP、宛先、および変換されたポートが正しいことを確認してください。 NAT ルールの送信元 IP が正しいことを確認してください (制限されている場合)。ターゲット VM でトラフィックをブロックしている可能性のある NSG を確認します。
- TLS 検査の問題: ルート証明書が Key Vault とファイアウォール ポリシーで正しく構成されていることを確認してください。クライアントが TLS 検査に使用されるルート CA を信頼していることを確認します。
- IDPS は攻撃を検出しません: IDPS が「アラートと拒否」モードになっていること、および関連するシグネチャが有効になっていることを確認してください。トラフィックが実際にファイアウォールを通過していることを確認してください。
- 間違ったルーティング: VM のサブネットに関連付けられているルート テーブルを確認してください。デフォルト ルート (0.0.0.0/0) が Azure Firewall プライベート IP を指していることを確認してください。
結論
Azure Firewall は、Azure で堅牢なネットワーク セキュリティ体制を確立するための強力かつ不可欠なツールです。高度なトラフィック フィルタリング、脅威インテリジェンス、IDPS、TLS インスペクションを実装することで、組織は幅広いサイバー脅威からワークロードを保護できます。 Azure Firewall を中心としたハブ アンド スポーク モデルを採用し、ベスト プラクティスを適用して継続的に監視することで、ネットワーク トラフィックが効果的に検査および制御されるようになります。この実践的なガイドにより、セキュリティ専門家は Azure Firewall を構成および管理するための十分な準備を整え、最新の脅威に対する Azure 環境のネットワーク セキュリティと回復力を強化できます。
参考文献:
[1] Microsoft Learn。 Azure ファイアウォールとは何ですか?。入手可能場所: https://learn.microsoft.com/pt-br/azure/firewall/overview [2] Microsoft Learn。 Azure Firewall アーキテクチャの概要。入手可能場所: https://learn.microsoft.com/pt-br/azure/firewall/firewall-architecture [3] Microsoft Learn。 Azure Firewall のプレミアム機能。入手可能場所: https://learn.microsoft.com/pt-br/azure/firewall/premium-features [4] Microsoft Learn。 Azure Firewall の脅威インテリジェンスに基づくフィルタリング。入手可能場所: https://learn.microsoft.com/pt-br/azure/firewall/threat-intel