Microsoft のクラウドネイティブ管理ファイアウォールアプライアンスである Azure Firewall の使用方法を紹介します。サービスとしてのファイアウォール、firewall-as-a-service と呼ぶこともできます。
会社の Azure 仮想ネットワークへのネットワークトラフィックを保護する必要があるとします。具体的には、以下のような要件を満たさなければなりません。
サードパーティーのネットワーク仮想アプライアンスをハブの VNet にデプロイすると、上記のすべてが実行できます。
Azure Firewall は、ステートフルパケットインスペクション、高可用性、クラウドスケーラビリティを提供するネットワーク仮想アプライアンスで、Microsoft が管理します。ネットワークセキュリティグループ(NSG)のフィルタについて悩んだり、サードパーティーのネットワーク仮想アプライアンスに関連する追加のライセンスコストを支払ったりすることがないようにしたい、というのが根底にある考え方です。
図1は 、私のラボ環境を示しています。
[図1]
私の環境では、Azure Bastion を使用して win-vm-1 仮想マシンを管理しています。Azure Bastion については、別のブログ、「Azure Bastion の使用法」で説明していますので、ご参照ください。
ルートテーブルのデフォルトルートを Azure Firewall にして、win-vm-1 からのすべての出力トラフィックを Azure Firewall でキャプチャできるように設定します。そして、PowerShell ギャラリーへのアウトバウンドインターネット接続のみを許可するように、Azure Firewall ポリシーを設定します。
ファイアウォールをデプロイする前に、ターゲットの仮想ネットワークを設定しておきましょう。Azure Firewall 用に、サイズが最低 /27 で、”AzureFirewallSubnet” という名前のサブネットを作成します。
私の環境の、仮想ネットワークのサブネット・トポロジは図2のようになります。
[図2]
次に、Firewall の設定に進み、”Click here to add a new firewall” をクリックします。図3に示すように、[Create a firewall] ブレードが表示されます。
[図3]
ターゲットの仮想ネットワークに作成したサブネットにファイアウォールを設置します。リージョンでサポートされている場合は、Azure Firewall インスタンスをアベイラビリティゾーン(Azure データセンター)に分散できます。
Azure Firewall の脅威インテリジェンスの設定によって、既知の悪意のあるIPアドレスとドメインネームシステム(DNS)ドメインからのトラフィックに Azure Firewall がどう反応するかが決まります。図4でも確認できるように、設定オプションには次の3つがあります。
[図4]
Azure Firewall ルールは、ターミネートするという点でNSGルールに似ています。つまり、特定のトラフィックストリームに適用される最初のルールが使用されると、ファイアウォールは後続のルールを無視します。トラフィックストリームがルールに一致しない場合、デフォルトで拒否されます。
ルールはコレクションとしてオーガナイズされます。Azure Firewall では、次の3つのルールコレクションのタイプを使用できます。
まず、ワークロードのサブネットから PowerShell ギャラリーのWeb サイトへのトラフィックを許可するアプリケーションルールを作成します。[Rules] の設定で、[Application rule collection] タブにスイッチし、[Add application rule collection] をクリックします。
図5を参照にして、値を入力してください。
[図5]
次に、同様のプロセスを使用して、DNS解決トラフィックを許可するネットワークルールコレクションを作成します。ここでは、Google のパブリックDNSサーバーである 8.8.8.8 と 8.8.4.4 を使用することにします。
この設定は、図6のようになります。
[図6]
また、Google のDNSサーバーアドレスを仮想ネットワークのDNSサーバーリストに追加する必要があります。ワークロード VNet の Settings の DNS servers で、[Custom] を選択し、図7に示すようにDNSサーバーのIPアドレスを追加します。
[図7]
Google のDNSサーバーのIPアドレスに問題があった場合のフェイルセーフとして、Azure DNSサービスの仮想IPアドレスである 168.63.129.16 を含めてあります。
Azure Firewall の Overview ページに移動し、アプライアンスのプライベート IPv4 アドレスを書きとめておいてください。設定の最後のステップとして、ワークロードサブネットから Azure Firewall を経由するすべての送信トラフィックがトンネルを通過するようにするルートテーブルを作成します。
新しいルートテーブルを定義するには、[Route tables] ブレードをブラウズして、[Add] をクリックしてします。テーブルが VNet と同じリージョンに配置されるよう注意してください。
テーブルを開き、[Routes] の設定で、[Add] をクリックして、新しいルートを定義します。
最後に、ルートテーブルの [Subnets] 設定を選択し、ルートテーブルをワークロードサブネットに関連付ければ、それで終了です。仮想ネットワークの [Diagram] ブレードをブラウジングすると、図8のような仮想ネットワークトポロジを表示できます。
[図8]
では、ファイアウォールを介して接続するテストをしましょう。Azure Portal で、VMの [Overview] ブレードをブラウズし、[Connect] をクリックします。[Bastion] タブにスイッチして、VM にログインします。
図9を見ると、Azure Firewall のアプリケーションルールの設定にしたがって、powershellgallery.com への HTTPS 接続が成功したことがわかります。
[図9: PowerShell Gallery への接続が許可されています]
ルールで明示的に許可されていないネットワークトラフィックは Azure Firewall がブロックするので、別のWebサイトへの接続は失敗します(図10参照)。
[図10: 別の Webサイトへの接続はブロックされます]
最後のテストとしては、管理コマンドプロンプトを開き、nslookup を使用して許可されたDNSサーバーのみが使用可能なことを確認しましょう。図11を見るとわかるように、許可された Google DNS サーバーに対する powershellgallery.com の解決はうまく機能しており、Quad9 パブリック DNS サーバーに切り替えると、解決のリクエストはタイムアウトします。
[図11: Azure Firewall のネットワークルールの検証]
Azure Firewall は強力で便利ですが、制限もあり、注意が必要です。まず最初に、サポートされていないリージョンでは、テクニカルにはピア VNet で Azure Firewall を使用できますが、遅延の問題があるため、Microsoft は推奨していません。
第二に、Azure Firewall はかなり高額(アプライアンスあたり月額約900 米ドル)になります。リージョンの VNet ごとに複数の Azure Firewall アプライアンスをデプロイする必要がある場合は、さらに高額になります。
最後に、このブログの執筆時点では、Azure Firewall を別のネットワーク仮想アプライアンスにチェーンするという、Azure で強制トンネリングと呼ばれるプロセスがサポートされていません。つまり、現状では、Azure Firewall は常にインターネットに直接接続する必要があります。
以上で、Azure Firewall のデプロイと設定に関する説明を終わります。詳細に興味がある方は、以下の関連リソースにアクセスしてください。
Tim Warner is a Microsoft MVP, Microsoft Press/Wiley author, and Azure solution architect based in Nashville, TN. Contact Tim at Twitter (@TechTrainerTim) or his website, techtrainertim.com.
より優れた業務アプリケーションやウェブサイトの開発に役立つ、ニュース、情報、チュートリアルをご案内します。
The specified form no longer exists or is currently unpublished.