Azure Firewall の起動法

3月 08, 2020 セキュリティとコンプライアンス, MOVEit

Microsoft のクラウドネイティブ管理ファイアウォールアプライアンスである Azure Firewall の使用方法を紹介します。サービスとしてのファイアウォール、firewall-as-a-service と呼ぶこともできます。

会社の Azure 仮想ネットワークへのネットワークトラフィックを保護する必要があるとします。具体的には、以下のような要件を満たさなければなりません。

  • ポリシーを策定し、仮想ネットワークと Azure サブスクリプション全体の入出力トラフィックを集中的にコントロール
  • 実際のまたは潜在的なセキュリティ/脅威インテリジェンスの問題をログに記録してレポート
  • 環境内で管理する必要があるネットワークセキュリティグループ(NSG)を最小限に抑える

サードパーティーのネットワーク仮想アプライアンスをハブの VNet にデプロイすると、上記のすべてが実行できます。

Azure Firewall アーキテクチャ

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 のデプロイ

ファイアウォールをデプロイする前に、ターゲットの仮想ネットワークを設定しておきましょう。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つがあります。

  • Off: 脅威インテリジェンスを無効にします
  • Alert only: ファイアウォールは、信頼性の高い脅威インテリジェンス信号データをチェックして通知します
  • Alert and deny: 既知の悪意のあるIPアドレスやドメインが検出されたらネットワークトラフィックをブロックし、信頼性が高い警告通知を行います

[図4]

Azure Firewall ルールコレクションの定義

Azure Firewall ルールは、ターミネートするという点でNSGルールに似ています。つまり、特定のトラフィックストリームに適用される最初のルールが使用されると、ファイアウォールは後続のルールを無視します。トラフィックストリームがルールに一致しない場合、デフォルトで拒否されます。

ルールはコレクションとしてオーガナイズされます。Azure Firewall では、次の3つのルールコレクションのタイプを使用できます。

  • NAT ルールコレクション: ネットワークアドレス変換(Network Address Translation、NAT)を使用して、VNet 内の特定のリソースへの受信接続ルールを定義。
  • ネットワークルールコレクション: IPアドレスやサービスタグに基づいて、トラフィックの許可ルールまたは拒否ルールを定義。ネットワークルールは、アプリケーションルールの前に適用されます。
  • アプリケーションルールコレクション: ドメインネームシステム(DNS)名に基づいて、許可ルールまたは拒否ルールを定義。

まず、ワークロードのサブネットから PowerShell ギャラリーのWeb サイトへのトラフィックを許可するアプリケーションルールを作成します。[Rules] の設定で、[Application rule collection] タブにスイッチし、[Add application rule collection] をクリックします。

 図5を参照にして、値を入力してください。

[図5]

  • Name: workload-app-rule-collection
  • Priority: 1000 (有効な値の範囲は100から65,000です)
  • Action: Allow
  • Target FQDN rule name: allow-psgallery
  • Source Addresses: 10.30.2.0/24 (これは、ワークロードサブネットのネットワークIDです)
  • Protocol:port: https
  • Target FQDNs: *.powershellgallery.com (ワイルドカードが使用可能です)

次に、同様のプロセスを使用して、DNS解決トラフィックを許可するネットワークルールコレクションを作成します。ここでは、Google のパブリックDNSサーバーである 8.8.8.8 と 8.8.4.4 を使用することにします。

  • Name: workload-network-rule-collection
  • Priority: 1000
  • Action: Allow
  • IP Addresses name: allow-dns-goog
  • Protocol: UDP, TCP
  • Source Addresses: 10.30.2.0/24 (上と同様、これは、ワークロードサブネットのネットワークIDです)
  • Destination Addresses: 8.8.8.8,8.8.4.4 (カンマで区切って複数の値を入力できます)
  • Destination Ports: 53

この設定は、図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] をクリックして、新しいルートを定義します。

  • Route name: firewall-default-route
  • Address prefix: 0.0.0.0/0 (これにより、すべての発信トラフィックに使用されるデフォルトルートが作成されます)
  • Next hope type: Virtual appliance
  • Next hop address: 10.30.1.4 (Azure Firewall のプライベート IP アドレスです)

最後に、ルートテーブルの [Subnets] 設定を選択し、ルートテーブルをワークロードサブネットに関連付ければ、それで終了です。仮想ネットワークの [Diagram] ブレードをブラウジングすると、図8のような仮想ネットワークトポロジを表示できます。

[図8]

Firewall を介した接続のテスト

では、ファイアウォールを介して接続するテストをしましょう。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

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.

Read next パスワードは機能しない:多要素認証が不可欠