アウトバウンド ネットワーク アクセスを制御することは、ネットワーク セキュリティ プラン全体の重要な要素です。 たとえば、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 portal にサインインします。
Azure portal のメニューで、[ リソース グループ ] を選択するか、任意のページから [リソース グループ ] を検索して選択し、[ 作成] を選択します。 以下の値を入力または選択します。
設定 値 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ 「Test-FW-RG」と入力します。 リージョン リージョンを選択します。 作成する他のすべてのリソースも、同じリージョン内のものである必要があります。 [確認と作成>作成] を選択します。
VNet を作成する
この VNet には 2 つのサブネットがあります。
Note
AzureFirewallSubnet サブネットのサイズは /26 です。 サブネットのサイズの詳細については、「Azure Firewall に関する FAQ」を参照してください。
Azure portal のメニューまたは ホームで、[ リソースの作成] を選択し、[ 仮想ネットワーク] を検索して、[ 作成] を選択します。
以下の値を入力または選択します。
設定 値 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ [Test-FW-RG] を選択します。 Name 「Test-FW-VN」と入力します。 リージョン 以前使用したのと同じ場所を選択します。 [ 次へ ] を 2 回選択して、[ IP アドレス ] タブに移動します。
[IPv4 アドレス空間] には、既定値の 10.0.0.0/16 をそのまま使用します。
[サブネット] で、[既定] を選択します。 [ サブネットの編集 ] ウィンドウで、[ サブネットの目的] を [Azure Firewall] に設定します。
ファイアウォールはこのサブネット内にあり、サブネット名は AzureFirewallSubnet である 必要があります 。
[開始アドレス] に「10.0.1.0」と入力し、[保存] を選択します。
[ サブネットの追加] を選択し、次の値を入力して、[ 追加] を選択します。
設定 値 サブネット名 Workload-SN 開始アドレス 10.0.2.0/24 [確認と作成>作成] を選択します。
Azure Bastion をデプロイする
テストのために Srv-Work 仮想マシンに安全に接続するために、Azure Bastion Developer エディションをデプロイします。
ポータルの上部にある検索ボックスに「 Bastion 」と入力し、結果から Bastions を選択します。 [ 作成] を選択し、次の値を入力します。
設定 値 プロジェクトの詳細 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ [Test-FW-RG] を選択します。 インスタンスの詳細 Name 「Test-Bastion」と入力します。 リージョン 以前使用したのと同じ場所を選択します。 レベル [ 開発者] を選択します。 仮想ネットワーク Test-FW-VN を選択します。 サブネット AzureBastionSubnet は、アドレス空間 10.0.0.0/26 で自動的に作成されます。 [確認と作成>作成] を選択します。
デプロイが完了するまでに数分かかる場合があります。
仮想マシンの作成
ワークロード仮想マシンを作成し、 ワークロード SN サブネットに配置します。
ポータルの上部にある検索ボックスに「 仮想マシン」と入力し、[ 仮想マシン]、[ 作成>仮想マシン] の順に選択します。
仮想マシンに次の値を入力または選択します。
設定 値 プロジェクトの詳細 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ [Test-FW-RG] を選択します。 インスタンスの詳細 仮想マシン名 「Srv-Work」と入力します。 リージョン 以前使用したのと同じ場所を選択します。 可用性オプション [インフラストラクチャ冗長は必要ありません] を選択します。 セキュリティの種類 標準を選択します。 Image Ubuntu Server 24.04 LTS -x64 Gen2 を選択する サイズ 仮想マシンのサイズを選択します。 管理者アカウント ユーザー名 「azureuser」と入力します。 SSH 公開キーのソース [新しいキーの組を生成] を選択します。 キーの組の名前 「Srv-Work_key」と入力します。 [ 受信ポート規則] で、[ パブリック受信ポート ] を [なし] に設定します。
他の既定値をそのまま使用し、[ネットワーク] タブで、Test-FW-VN / Workload-SN が選択され、[パブリック IP] が [なし] になっていることを確認します。
[確認と作成>作成] を選択します。 メッセージが表示されたら、[秘密キーのダウンロード] を選択 してリソースを作成 し、キー ファイルを保存します。
デプロイが完了したら、 後で使用するために Srv-Work プライベート IP アドレスを書き留めます。
Web サーバーをインストールする
仮想マシンに接続し、テスト用の Web サーバーをインストールします。
Test-FW-RG リソース グループで、Srv-Work 仮想マシンを選択します。
[操作]>コマンドの実行>RunShellScript を選択し、次のコマンドを入力して、[実行] を選択します。
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スクリプトが正常に完了するまで待ちます。
ファイアウォールとポリシーをデプロイする
仮想ネットワークにファイアウォールをデプロイします。
Azure portal のメニューまたは ホームで、[ リソースの作成] を選択し、[ ファイアウォール] を検索して、[ 作成] を選択します。
[ ファイアウォールの作成] で、次の表を使用してファイアウォールを構成します。
設定 値 プロジェクトの詳細 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ [Test-FW-RG] を選択します。 インスタンスの詳細 Name 「Test-FW01」と入力します。 リージョン 以前使用したのと同じ場所を選択します。 ファイアウォール SKU 標準を選択します。 ファイアウォール管理 [ファイアウォール ポリシーを使用してこのファイアウォールを管理する] を選択します。 ファイアウォール ポリシー [新規追加] を選択し、「fw-test-pol」と入力します。
前に使用したものじリージョンを選択します。 [OK]を選択します。仮想ネットワークの選択 [既存のものを使用]、[Test-FW-VN] の順に選択します。 強制トンネリングに関する警告は無視します。 警告は後の手順で解決されます. パブリック IP アドレス [新規追加] を選択し、[名前] に「fw-pip」と入力します。 [OK]を選択します。 [ ファイアウォール管理 NIC を有効にする ] チェック ボックスをオフにし、他の既定値をそのまま使用して、[ 確認と作成>作成] を選択します。
このプロセスのデプロイには数分かかります。
デプロイが完了したら、 Test-FW-RG に移動し、 Test-FW01 ファイアウォールを選択し、後で使用するためにプライベート IP アドレスとパブリック IP アドレスをメモします。
既定のルートを作成する
Workload-SN サブネットでは、アウトバウンドの既定ルートがファイアウォールを通過するように構成します。
ルート テーブルを検索して選択し、[作成] を選択して、次の値を入力します。
設定 値 プロジェクトの詳細 サブスクリプション Azure サブスクリプションを選択します。 リソースグループ [Test-FW-RG] を選択します。 インスタンスの詳細 Name 「Firewall-route」と入力します。 リージョン 以前使用したのと同じ場所を選択します。 [確認と作成>作成] を選択します。
デプロイが完了したら、[ リソースに移動] を選択します。
[ ファイアウォール ルート ] ウィンドウの [設定] で、[ サブネット>Associate] を選択します。
[仮想ネットワーク] で [Test-FW-VN] を選択し、[サブネット] で [Workload-SN] を選択します。 [OK]を選択します。
[ルート>追加] を選択し、次の値を入力します。
設定 値 ルート名 fw-dg 変換先の型 [IP アドレス] 宛先 IP アドレス/CIDR 範囲プレフィックス 0.0.0.0/0 ネクストホップの種類 仮想アプライアンス ネクストホップ アドレス 前にメモしたファイアウォールのプライベート IP アドレス Note
Azure Firewall は実際はマネージド サービスですが、この状況では仮想アプライアンスが動作します。
[追加]を選択します。
アプリケーション ルールを構成する
このアプリケーション 規則は、 www.google.comへの送信アクセスを許可します。
Test-FW-RG リソース グループを開き、[fw-test-pol] ファイアウォール ポリシーを選択します。
> Rules] で、[アプリケーション ルール] を選択>ルール コレクションを追加します。
次の値を入力します。
設定 値 Name App-Coll01 優先度 200 規則集合処理 許可 ルール Name Allow-Google ソースの種類 IPアドレス 情報源 10.0.2.0/24 プロトコル:ポート http、https 宛先タイプ FQDN 行き先 www.google.com[追加]を選択します。
Azure Firewall には、既定で許可されるインフラストラクチャ FQDN 用の組み込みのルール コレクションが含まれています。 これらの FQDN はプラットフォームに固有であり、他の目的には使用できません。 詳細については、インフラストラクチャ FQDN に関する記事を参照してください。
続行する前に、アプリケーション ルールのデプロイが完了するまで待ちます。
ネットワーク ルールを構成する
このネットワーク規則は、ポート 53 (DNS) で 2 つの IP アドレスへの送信アクセスを許可します。
[ネットワーク 規則] を選択>規則コレクションを追加します。
次の値を入力します。
設定 値 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 サーバー) [追加]を選択します。
ネットワーク ルールのデプロイが完了するまで待ってから、続行します。
DNAT ルールを構成する
この規則は、ファイアウォールを介して Srv-Work 仮想マシン上の Web サーバーに接続します。
DNAT ルールを選択>ルール コレクションを追加します。
次の値を入力します。
設定 値 Name HTTP 優先度 200 規則コレクション グループ デフォルトDNATルールコレクショングループ ルール Name http-nat ソースの種類 IPアドレス 情報源 * プロトコル TCP ターゲット ポート 80 行き先 ファイアウォールのパブリック IP アドレス 翻訳されたタイプ IPアドレス 変換されたアドレス Srv-Work プライベート IP アドレス 変換されたポート 80 [追加]を選択します。
Srv-Work ネットワーク インターフェイスのプライマリおよびセカンダリ DNS アドレスを変更する
このチュートリアルのテスト目的で、サーバーのプライマリおよびセカンダリ DNS アドレスを構成します。 この構成は、一般的な Azure Firewall 要件ではありません。
- Test-FW-RG リソース グループで、Srv-Work 仮想マシンのネットワーク インターフェイスを選択します。
- [ 設定] で、 DNS サーバー>Custom を選択します。
- DNS サーバーとして 「209.244.0.3 」と 「209.244.0.4 」と入力し、[ 保存] を選択します。
- Srv-Work 仮想マシンを再起動します。
ファイアウォールをテストする
今度は、ファイアウォールをテストして、想定したように機能することを確認します。
DNAT ルールをテストする
- ローカル コンピューターの Web ブラウザーで、「
http://<firewall-public-ip-address>」と入力します。 - カスタム Web ページ : Azure Firewall DNAT テストが表示されます。 これにより、DNAT ルールが機能していることを確認できます。
アプリケーションとネットワークルールをテストする
Azure Bastion を使用して Srv-Work 仮想マシンに安全に接続し、ファイアウォール規則をテストします。
Test-FW-RG リソース グループで、Srv-Work 仮想マシンを選択し、接続>Bastion 経由で接続を選択します。
[Bastion] ページで、次の値を入力または選択します。
設定 値 認証の種類 ローカル ファイルから SSH 秘密キーを選択します。 ユーザー名 「azureuser」と入力します。 ローカル ファイル [ 参照 ] を選択し、VM の作成時にダウンロードした Srv-Work_key.pem ファイルを選択します。 [接続] を選択します。
新しいブラウザー タブが開き、 Srv-Work 仮想マシンへの SSH セッションが表示されます。
SSH セッションで、次のコマンドを入力して Google へのアクセスをテストします。
curl -I https://www.google.com正常な HTTP 応答 (200 OK) が表示され、アプリケーション ルールが Google へのアクセスを許可していることを示します。
次に、Microsoft へのアクセスをテストします。これはブロックする必要があります。 次のように入力します。
curl -I https://www.microsoft.comコマンドは約 60 秒後にタイムアウトまたは失敗し、ファイアウォールがアクセスをブロックしていることを示します。
これで、ファイアウォール規則が動作していることを確認しました。
- DNAT ルールを使用して Web サーバーにアクセスできます。
- 1 つの許可された FQDN は参照できますが、それ以外は参照できません。
- 構成された外部 DNS サーバーを使用して、DNS 名を解決できます。
リソースをクリーンアップする
次のチュートリアルのためにファイアウォール リソースを保持しておくことができます。 不要になった場合は、 Test-FW-RG リソース グループを削除して、ファイアウォール関連のすべてのリソースを削除します。