チュートリアル: Azure portal を使用して Azure Firewall とポリシーをデプロイして構成する

アウトバウンド ネットワーク アクセスを制御することは、ネットワーク セキュリティ プラン全体の重要な要素です。 たとえば、Web サイトへのアクセスを制限することができます。 また、アクセスできるアウトバウンドの IP アドレスとポートを制限したい場合があるかもしれません。

Azure ファイアウォールとファイアウォール ポリシーを使用して、Azure サブネットからの送信ネットワーク アクセスを制御できます。 Azure Firewall とファイアウォール ポリシーを使用すると、次の構成を行うことができます。

  • アプリケーション ルール: サブネットからアクセスできる完全修飾ドメイン名 (FQDN) を定義します。
  • ネットワーク ルール: 送信元アドレス、プロトコル、宛先ポート、送信先アドレスを定義します。

ネットワーク トラフィックは、サブネットの既定ゲートウェイとしてのファイアウォールにルーティングしたときに、構成されているファイアウォール ルールに制約されます。

このチュートリアルでは、簡単にデプロイできるように、2 つのサブネットを含む簡略化された単一仮想ネットワーク (VNet) を作成します。

  • AzureFirewallSubnet - このサブネットにファイアウォールがあります。
  • Workload-SN - このサブネットにワークロード サーバーがあります。 このサブネットのネットワーク トラフィックは、ファイアウォールを通過します。

ファイアウォール ネットワーク インフラストラクチャを示す図。

運用環境のデプロイでは、ファイアウォールが独自の VNet 内にある ハブ アンド スポーク モデルを使用します。 ワークロード サーバーは、1 つ以上のサブネットを含む同じリージョンのピアリングされた VNet に配置されます。

このチュートリアルでは、以下の内容を学習します。

  • テスト ネットワーク環境を設定する
  • ファイアウォールとファイアウォール ポリシーをデプロイする
  • 既定のルートを作成する
  • www.google.com へのアクセスを許可するようにアプリケーション ルールを構成する
  • 外部 DNS サーバーへのアクセスを許可するようにネットワーク ルールを構成する
  • テスト サーバーへの受信 HTTP アクセスを許可するように NAT 規則を構成する
  • ファイアウォールをテストする

必要に応じて、 Azure PowerShell を使用してこの手順を完了できます。

前提条件

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

西部など、Azure Bastion Developerをサポートする地域を選びましょう。 このチュートリアルのすべてのリソースはその地域を使ってください。

ネットワークのセットアップ

最初に、ファイアウォールをデプロイするために必要なリソースを含めるリソース グループを作成します。 その後、仮想ネットワーク、サブネット、およびテスト サーバーを作成します。

リソース グループを作成する

このリソース グループには、このチュートリアルのすべてのリソースが含まれます。

  1. Azure portal にサインインします。

  2. Azure portal のメニューで、[ リソース グループ ] を選択するか、任意のページから [リソース グループ ] を検索して選択し、[ 作成] を選択します。 以下の値を入力または選択します。

    設定 値
    サブスクリプション Azure サブスクリプションを選択します。
    リソースグループ 「Test-FW-RG」と入力します。
    リージョン リージョンを選択します。 作成する他のすべてのリソースも、同じリージョン内のものである必要があります。
  3. [確認と作成>作成] を選択します。

VNet を作成する

この VNet には 2 つのサブネットがあります。

Note

AzureFirewallSubnet サブネットのサイズは /26 です。 サブネットのサイズの詳細については、「Azure Firewall に関する FAQ」を参照してください。

  1. Azure portal のメニューまたは ホームで、[ リソースの作成] を選択し、[ 仮想ネットワーク] を検索して、[ 作成] を選択します。

  2. 以下の値を入力または選択します。

    設定 値
    サブスクリプション Azure サブスクリプションを選択します。
    リソースグループ [Test-FW-RG] を選択します。
    Name 「Test-FW-VN」と入力します。
    リージョン 以前使用したのと同じ場所を選択します。
  3. [ 次へ ] を 2 回選択して、[ IP アドレス ] タブに移動します。

  4. [IPv4 アドレス空間] には、既定値の 10.0.0.0/16 をそのまま使用します。

  5. [サブネット] で、[既定] を選択します。 [ サブネットの編集 ] ウィンドウで、[ サブネットの目的] を [Azure Firewall] に設定します。

    ファイアウォールはこのサブネット内にあり、サブネット名は AzureFirewallSubnet である 必要があります 。

  6. [開始アドレス] に「10.0.1.0」と入力し、[保存] を選択します。

  7. [ サブネットの追加] を選択し、次の値を入力して、[ 追加] を選択します。

    設定 値
    サブネット名 Workload-SN
    開始アドレス 10.0.2.0/24
  8. [確認と作成>作成] を選択します。

Azure Bastion をデプロイする

Azure Bastion Developerを使ってSrv-Workに安全に接続してテストしてください。 開発者は共有インフラを使用し、同じ仮想ネットワーク内のVMに接続します。 専用の AzureBastionSubnet やパブリックIPアドレスは必要ありません。

このチュートリアルには専用ホストの個別展開はありません。 VMを作成しファイアウォールを設定した後、 テストステップ はBastion経由で接続されます。 対応地域では、 Connect を選択すると自動的にBastion Developerが展開されます。 詳細は Deploy Bastion Developerをご覧ください。

仮想マシンの作成

ワークロード仮想マシンを作成し、 ワークロード SN サブネットに配置します。

  1. ポータルの上部にある検索ボックスに「 仮想マシン」と入力し、[ 仮想マシン]、[ 作成>仮想マシン] の順に選択します。

  2. 仮想マシンに次の値を入力または選択します。

    設定 値
    プロジェクトの詳細
    サブスクリプション Azure サブスクリプションを選択します。
    リソースグループ [Test-FW-RG] を選択します。
    インスタンスの詳細
    仮想マシン名 「Srv-Work」と入力します。
    リージョン 以前使用したのと同じ場所を選択します。
    可用性オプション [インフラストラクチャ冗長は必要ありません] を選択します。
    セキュリティの種類 標準を選択します。
    Image Ubuntu Server 24.04 LTS -x64 Gen2 を選択する
    サイズ 仮想マシンのサイズを選択します。
    管理者アカウント
    ユーザー名 「azureuser」と入力します。
    SSH 公開キーのソース [新しいキーの組を生成] を選択します。
    キーの組の名前 「Srv-Work_key」と入力します。
  3. [ 受信ポート規則] で、[ パブリック受信ポート ] を [なし] に設定します。

  4. 他の既定値をそのまま使用し、[ネットワーク] タブで、Test-FW-VN / Workload-SN が選択され、[パブリック IP] が [なし] になっていることを確認します。

  5. [確認と作成>作成] を選択します。 メッセージが表示されたら、[秘密キーのダウンロード] を選択 してリソースを作成 し、キー ファイルを保存します。

  6. デプロイが完了したら、 後で使用するために Srv-Work プライベート IP アドレスを書き留めます。

ファイアウォールとポリシーをデプロイする

仮想ネットワークにファイアウォールをデプロイします。

  1. Azure portal のメニューまたは ホームで、[ リソースの作成] を選択し、[ ファイアウォール] を検索して、[ 作成] を選択します。

  2. [ ファイアウォールの作成] で、次の表を使用してファイアウォールを構成します。

    設定 値
    プロジェクトの詳細
    サブスクリプション Azure サブスクリプションを選択します。
    リソースグループ [Test-FW-RG] を選択します。
    インスタンスの詳細
    Name 「Test-FW01」と入力します。
    リージョン 以前使用したのと同じ場所を選択します。
    ファイアウォール SKU 標準を選択します。
    ファイアウォール管理 [ファイアウォール ポリシーを使用してこのファイアウォールを管理する] を選択します。
    ファイアウォール ポリシー [新規追加] を選択し、「fw-test-pol」と入力します。
    前に使用したものじリージョンを選択します。 [OK]を選択します。
    仮想ネットワークの選択 [既存のものを使用]、[Test-FW-VN] の順に選択します。 強制トンネリングに関する警告は無視します。 警告は後の手順で解決されます.
    パブリック IP アドレス [新規追加] を選択し、[名前] に「fw-pip」と入力します。 [OK]を選択します。
  3. 「 ファイアウォール管理NICを有効にする 」チェックボックスをクリアし、「 次:進捗」を選択します。

  4. このチュートリアルでは 「NATゲートウェイを有効にする 」をクリアのままにしてください。 ファイアウォール作成時にStandardV2 NATゲートウェイを設定するには、「Azure FirewallとのNATゲートウェイ統合」をご覧ください。

  5. [確認および作成] を選択し、設定を確認してから、[作成] を選択します。

    デプロイには、数分かかります。

  6. デプロイが完了したら、 Test-FW-RG に移動し、 Test-FW01 ファイアウォールを選択し、後で使用するためにプライベート IP アドレスとパブリック IP アドレスをメモします。

既定のルートを作成する

Workload-SN サブネットでは、アウトバウンドの既定ルートがファイアウォールを通過するように構成します。

  1. ルート テーブルを検索して選択し、[作成] を選択して、次の値を入力します。

    設定 値
    プロジェクトの詳細
    サブスクリプション Azure サブスクリプションを選択します。
    リソースグループ [Test-FW-RG] を選択します。
    インスタンスの詳細
    Name 「Firewall-route」と入力します。
    リージョン 以前使用したのと同じ場所を選択します。
  2. [確認と作成>作成] を選択します。

    デプロイが完了したら、[ リソースに移動] を選択します。

  3. [ ファイアウォール ルート ] ウィンドウの [設定] で、[ サブネット>Associate] を選択します。

  4. [仮想ネットワーク] で [Test-FW-VN] を選択し、[サブネット] で [Workload-SN] を選択します。 [OK]を選択します。

  5. [ルート>追加] を選択し、次の値を入力します。

    設定 値
    ルート名 fw-dg
    変換先の型 [IP アドレス]
    宛先 IP アドレス/CIDR 範囲プレフィックス 0.0.0.0/0
    ネクストホップの種類 仮想アプライアンス
    ネクストホップ アドレス 前にメモしたファイアウォールのプライベート IP アドレス

    Note

    Azure Firewall は実際はマネージド サービスですが、この状況では仮想アプライアンスが動作します。

  6. [追加]を選択します。

Web サーバーをインストールする

VMにはパブリックIPアドレスはありません。 作成したワークロードルートと一時的なアプリケーションルールを使って、ファイアウォール経由でnginxをダウンロードしてください。 インストール中はVMのデフォルトのAzure提供DNS設定を維持してください。

  1. fw-test-polを開いてください。 >] で、[アプリケーション ルール] を選択>。

  2. 次の値を入力します。

    設定 値
    Name Install-Nginx
    規則コレクションの種類 アプリケーション
    優先度 100
    規則集合処理 許可
    規則コレクション グループ DefaultApplicationRuleCollectionGroup
    規則名 Allow-Package-Repositories
    ソースの種類 IPアドレス
    情報源 10.0.2.0/24
    プロトコル:ポート http:80、 https:443
    変換先の型 FQDN
    ターゲットの FQDN azure.archive.ubuntu.com、 archive.ubuntu.com、 security.ubuntu.com、 packages.microsoft.com
  3. 「追加」を選択し、ポリシーの更新が完了するまで待ちます。

  4. Test-FW-RGでSrv-Workを選択します。 Operations>Run command>RunShellScriptを選択し、以下のコマンドを入力してからRunを選択します:

    set -eu
    sudo apt-get update
    sudo apt-get install -y nginx
    echo "<html><body><h1>Azure Firewall DNAT Test</h1><p>If you can see this page, the DNAT rule is working correctly!</p></body></html>" | sudo tee /var/www/html/index.html
    curl --fail http://localhost
    
  5. コマンドが正常に完了し、Azure FirewallのDNATテストページが戻ることを確認しましょう。 パッケージダウンロードが失敗した場合は、エラー内のリポジトリホスト名を一時ルールと照らし合わせてください。 設定済みパッケージリポジトリのみを許可してください。ワイルドカードインターネットルールは追加しないでください。 「 UbuntuのAPTに関するよくある問題のトラブルシューティング」をご覧ください。

  6. fw-test-pol に戻り、Install-Nginx ルールコレクションを削除してください。 ポリシーの更新が完了するまで待ってから続けてください。 この削除により、後のテストではチュートリアルの恒久的なルールのみが評価されるようになります。

アプリケーション ルールを構成する

このアプリケーション 規則は、 www.google.comへの送信アクセスを許可します。

  1. Test-FW-RG リソース グループを開き、[fw-test-pol] ファイアウォール ポリシーを選択します。

  2. >] で、[アプリケーション ルール] を選択>。

  3. 次の値を入力します。

    設定 値
    Name App-Coll01
    優先度 200
    規則集合処理 許可
    ルール
    Name Allow-Google
    ソースの種類 IPアドレス
    情報源 10.0.2.0/24
    プロトコル:ポート http、https
    宛先タイプ FQDN
    行き先 www.google.com
  4. [追加]を選択します。

Azure Firewall には、既定で許可されるインフラストラクチャ FQDN 用の組み込みのルール コレクションが含まれています。 これらの FQDN はプラットフォームに固有であり、他の目的には使用できません。 詳細については、インフラストラクチャ FQDN に関する記事を参照してください。

続行する前に、アプリケーション ルールのデプロイが完了するまで待ちます。

ネットワーク ルールを構成する

このネットワーク規則は、ポート 53 (DNS) で 2 つの IP アドレスへの送信アクセスを許可します。

  1. [ネットワーク 規則] を選択>規則コレクションを追加します。

  2. 次の値を入力します。

    設定 値
    Name Net-Coll01
    優先度 200
    規則集合処理 許可
    規則コレクション グループ デフォルトネットワークルールコレクショングループ
    ルール
    Name Allow-DNS
    ソースの種類 IPアドレス
    情報源 10.0.2.0/24
    プロトコル UDP
    ターゲット ポート 53
    変換先の型 IPアドレス
    行き先 209.244.0.3,209.244.0.4 (CenturyLink が運営するパブリック DNS サーバー)
  3. [追加]を選択します。

ネットワーク ルールのデプロイが完了するまで待ってから、続行します。

DNAT ルールを構成する

この規則は、ファイアウォールを介して Srv-Work 仮想マシン上の Web サーバーに接続します。

  1. DNAT ルールを選択>ルール コレクションを追加します。

  2. 次の値を入力します。

    設定 値
    Name HTTP
    優先度 200
    規則コレクション グループ デフォルトDNATルールコレクショングループ
    ルール
    Name http-nat
    ソースの種類 IPアドレス
    情報源 *
    プロトコル TCP
    ターゲット ポート 80
    行き先 ファイアウォールのパブリック IP アドレス
    翻訳されたタイプ IPアドレス
    変換されたアドレス Srv-Work プライベート IP アドレス
    変換されたポート 80
  3. [追加]を選択します。

Srv-Work ネットワーク インターフェイスのプライマリおよびセカンダリ DNS アドレスを変更する

このチュートリアルのテスト目的で、サーバーのプライマリおよびセカンダリ DNS アドレスを構成します。 この構成は、一般的な Azure Firewall 要件ではありません。

  1. Test-FW-RG リソース グループで、Srv-Work 仮想マシンのネットワーク インターフェイスを選択します。
  2. [ 設定] で、 DNS サーバー>Custom を選択します。
  3. DNS サーバーとして 「209.244.0.3 」と 「209.244.0.4 」と入力し、[ 保存] を選択します。
  4. Srv-Work 仮想マシンを再起動します。

ファイアウォールをテストする

今度は、ファイアウォールをテストして、想定したように機能することを確認します。

DNAT ルールをテストする

  1. ローカル コンピューターの Web ブラウザーで、「 http://<firewall-public-ip-address>」と入力します。
  2. カスタム Web ページ : Azure Firewall DNAT テストが表示されます。 これにより、DNAT ルールが機能していることを確認できます。

アプリケーションとネットワークルールをテストする

Azure Bastion を使用して Srv-Work 仮想マシンに安全に接続し、ファイアウォール規則をテストします。

  1. Test-FW-RG リソース グループで、Srv-Work 仮想マシンを選択し、接続>Bastion 経由で接続を選択します。

  2. [Bastion] ページで、次の値を入力または選択します。

    設定 値
    認証の種類 ローカル ファイルから SSH 秘密キーを選択します。
    ユーザー名 「azureuser」と入力します。
    ローカル ファイル [ 参照 ] を選択し、VM の作成時にダウンロードした Srv-Work_key.pem ファイルを選択します。
  3. [接続] を選択します。

    Bastion Developerは自動的に展開し、ポータル内で Srv-Work へのSSHセッションを開きます。

  4. SSH セッションで、次のコマンドを入力して Google へのアクセスをテストします。

    curl -I https://www.google.com
    

    正常な HTTP 応答 (200 OK) が表示され、アプリケーション ルールが Google へのアクセスを許可していることを示します。

  5. 次に、Microsoft へのアクセスをテストします。これはブロックする必要があります。 次のように入力します。

    curl -I https://www.microsoft.com
    

    コマンドは約 60 秒後にタイムアウトまたは失敗し、ファイアウォールがアクセスをブロックしていることを示します。

これで、ファイアウォール規則が動作していることを確認しました。

  • DNAT ルールを使用して Web サーバーにアクセスできます。
  • 1 つの許可された FQDN は参照できますが、それ以外は参照できません。
  • 構成された外部 DNS サーバーを使用して、DNS 名を解決できます。

リソースをクリーンアップする

次のチュートリアルのためにファイアウォール リソースを保持しておくことができます。 不要になった場合は、 Test-FW-RG リソース グループを削除して、ファイアウォール関連のすべてのリソースを削除します。

次のステップ