Azure Firewall の デプロイ手順

# はじめに
Azure Firewall のデプロイ手順です。
今後、Azure Firewall のログを取得する方法や AVD と組み合わせて利用する方法などの発展形を想定して、まずは 基本的なところからの投稿です。

内容は、以下の公開情報を元に作成しています。

**公開情報**

https://learn.microsoft.com/ja-jp/azure/firewall/tutorial-firewall-deploy-portal-policy?wt.mc_id=mvp_407731

# 前提
一番安価な **Basic SKU** を使用します。
Basic SKU の場合は、**AzureFirewallManagementSubnet** を事前作成する必要があって、その点がハマりポイントでした。私が記載した手順の通りにやっていけば、問題無いはずです。

手順は、既存の仮想ネットワークに追加する形で記載しています。
以下の記事をもとに、仮想ネットワーク を作成するか、皆さんの仮想ネットワークの構成に読み替えて確認ください。

https://qiita.com/carol0226/items/c9975b5b438139481a73

# ネットワーク設計
前提で用意した既存のネットワークに、以下のサブネットを追加して利用する設計としました。

|変更点|役割|名称|アドレス|
|:-:|:-:|:-:|:-:|
|－|リソースグループ|AVD-Environment|－|
|－|仮想ネットワーク<br>(アドレス空間)|AZ-DefaultVNet|10.10.0.0/16|
|－|サブネット１|Subnet1|10.10.10.0/24|
|－|サブネット２|Subnet2|10.10.20.0/24|
|追加|Azure Firewall<br> サブネット|AzureFirewallSubnet|10.10.30.0/24|
|追加|Azure Firewall<br>管理用サブネット|AzureFirewallManagementSubnet|10.10.40.0/24|

# Firewall Subnet の作成
Azure Firewall をデプロイするためには、専用のサブネットが必要です。
アドレス空間に空きがないと、デプロイすることができないので、サブネットを追加する余裕がない場合は、アドレス空間を追加してください（既存のアドレス空間と連続していなくても大丈夫です）

0. **前提** として作成済みの **仮想ネットワーク** を開きます。
左ペインから、**サブネット** を選択して **＋サブネット** のボタンを押します。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/87ad7073-0b69-da91-d154-43ca0b706ee8.png)
　<br>
0. 下図の通り、**サブネットの目的** 欄で、**Azure Firewall** を選択すると、自動的に値が設定されます。
設計に合わせるために、開始アドレスを 以下のように変更をおこなって **追加** ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/6a42f2cd-60d2-d129-5c14-22b8ed4d7e72.png)
　<br>
0. 以下のように追加されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/251527b0-7848-01ac-a881-1c01ef02fe6a.png)
　<br>
0. 続けて、もう１つサブネットを追加します。
**サブネットの目的** 欄で、**Firewall Management (forced tunneling)** を選択すると、自動的に値が設定されます。
設計に合わせるために、開始アドレスを 以下のように変更をおこなって **追加** ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/3ef2369e-f723-2f18-cb7c-a9cd1268d3fd.png)
　<br>
0. 以下のように追加されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ab1ac79e-26ca-1fce-5a15-1db0e274b558.png)

# Azure Firewall のデプロイ
0. 検索窓で **ファイアウォール** と入力して サービスを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/c9597aaf-151b-98d3-8f9c-137f0a1930b8.png)
　<br>
0. Firewall Manager が開くため 左ペインの **セキュリティ** を開き **Azure Firewall** を選択します。
その後 **＋作成** ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8004d556-4534-6edb-b2f3-b2ae77bf3c3b.png)
　<br>
0. 下図の通りに値を入力していきます。
なお、リソースグループは 仮想ネットワークと同一になっている必要があります。
緑下線の **(New)** や **(新規)** となっている項目は、黄色枠の **Add New** や **新規** を押してウィンドウを開いて設定します。設定値は、後述していますので、参照してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/618ea632-b279-d020-202f-83131bfba1d5.png)
　<br>
**Firewall policy** のウィンドウでは、以下のように入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1e64765e-c8c7-625d-854b-58188b7303be.png)
　<br>
**パブリック IP アドレス** のウィンドウでは、以下のように入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/4ac76bdf-f61b-f63f-403c-043e73abf476.png)
　<br>
**管理パブリック IP アドレス** のウィンドウでは、以下のように入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/54bb06ac-d5ec-e153-148f-92c7528a963b.png)
　<br>
0. **DDoS protection** では、今回は **Disabled** を選択します。
DDoS のサービスは有償サービスなので、Azure Firewall に慣れてから、運用フェーズに入る際に検討いただくレベルで良いと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/e03e6a43-6b42-0847-3c0e-9dbc0382bd51.png)
　<br>
0. **タグ** は、特に変更はせずに **次：確認および作成** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/add7fa8c-545d-2dfa-e29a-eb15cd0b1ca8.png)
　<br>
0. **確認および作成** タブでは、最終的な値を確認して、**作成** を押します。
デプロイには、およそ 5 分くらい掛かりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/92ac1f07-a119-b844-7bf5-92631f2e0993.png)
　<br>
0. 下図が デプロイ完了の画面です。**リソースに移動** を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/46d9e233-05be-bd7c-49cd-74913b54d480.png)
　<br>
0. 以下が ファイアウォール のリソース画面です。
緑枠の **プライベート IP** は、あとで使う為 値を控えておいてください。
ファイアウォールポリシーの画面へ移動するため、赤枠部分 を押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/2e986907-85da-216e-5685-a325229bce95.png)

:::note info
この時点で、ファイアウォールのインスタンスが稼働しているので、**課金の対象** です。しかし ファイアウォール の機能としては役立たずの状態です。このまま放置すると、お金をドブに捨てているのと同じですので、後続の手順まで一気に済ませてしまいましょう。

このあと、ファイアウォールポリシーの作成を行い、ルーティングを変更（パケットをファイアウォール経由に変更）した時に、**パケットの制御が開始** されます。
:::

この段階で、アクセス元 IP を確認しておきましょう。
仮想ネットワーク配下の VM から、 https://www.cman.jp/network/support/go_access.cgi へアクセスしてください。

以下のようなページに IP アドレスが表示されると思いますが、仮想ネットワークの NAT 用 のパブリック IP アドレス が表示されていると思います（Firewall 経由の経路に切り替わった際に 比較 しますので、控えておいてください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/95e19b6e-8353-ab30-5907-1a5f210d082c.png)

# ファイアウォールポリシー（FW 規則）
ファイアウォールの規則は、用途に応じてさまざまであるため、この章では サンプル の設定を行う事を目的に手順を紹介します。

0. 以下が、ファイアウォールポリシーの TOP 画面です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/192327d2-9a31-8779-5662-6e045b0c9bd2.png)
　<br>
0. 左ペインの **設定** を開き、**アプリケーション規則** を選択します。そのあと **＋規則コレクションの追加** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/8bcbdaaa-7273-c82c-0998-465f2a00121f.png)
　<br>
0. 以下を例に、設定を入力していきます。
- 200 = 10.10.0.0/16 のアドレスから、www.google.co.jp 宛の http,https パケットを許可
- 201 = 10.10.0.0/16 のアドレスから、www.cman.jp 宛の http,https パケットを許可

※www.cman.jp は、前章の最後に　アクセス元の IP を表示するために使っていた サイト です。作業後にも、アクセス元 IP を確認できるようにするために、規則に加えています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/722967a7-7251-7dcf-0c49-62b8c5e74e17.png)

:::note info
高度な規則の設定は、本記事の最終章 (Next Step) に、AVD と組み合わせた高度な規則の例を紹介しているので、参考にしてみてください。
:::

これで、ポリシーが作成されましたが、まだ パケットの制御は行われません。
次章の ルートテーブルの設定 を実施後に パケットの制御が行われます。

# ルートテーブルの設定
最後に、ルートテーブルを作成し **サブネット** と **ルート** の紐づけを行うと、パケットの制御が開始されます。

0. 検索窓で **ルート** と入力して **ルート テーブル** のサービスを選択します。
続いて **＋作成** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/7b2c5ec8-c7a0-f6e0-6ddd-ec032659c02f.png)
　<br>
0. 下図の通り、値を入力します。リージョンは、仮想ネットワーク に合わせましょう。
**確認と作成** ボタンを押して進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/d72f179d-437e-1dce-7859-0f6f1deb60a7.png)
　<br>
0. **確認と作成** タブでは、設定した内容を確認して **作成** ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/b318cbd8-427f-4946-3cad-5140c72b67d3.png)
　<br>
0. 以下は、デプロイが完了した画面です。**リソースに移動** を押して進めます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/911c93ca-68c0-85d3-82e7-a870ff88e43d.png)
　<br>
0. 左ペインで **設定** を開き、**ルート** を選択して **＋追加** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/a039322f-e931-2dbf-5e07-f855e260799e.png)
　<br>
0. 以下の設定値を入力します。
**IP アドレスが 0.0.0.0/0** の意味は、**インターネットすべて** に該当します。
つまり、インターネット宛のトラフィックは、Azure Firewall (10.10.30.4) へ転送（ルーティング）する・・・という意味になります。この時のネクストホップアドレスは、事前に控えておいた Azure Firewall の プライベート IP アドレスを指定してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/027d8146-6176-5994-5bd7-4fedb5ce1a81.png)
　<br>
0. 最後に、作成した ルートテーブル を サブネットに割り当てます。
左ペインの 設定 を開き、**サブネット** を選択後に **＋関連付け** を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/01f170b5-3fd9-f967-affa-e56adc956de7.png)
　<br>
0. 以下の通り、サブネットを割り当てます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ec5a70f2-adbb-e606-b6cd-9e1da5eead1e.png)
　<br>
0. 以下の通り、構成が反映されれば OK です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/1ad2adc3-8c3c-b3ce-ecb1-bc964c4ce62b.png)

これで、ファイアウォール が機能し始めます。

再度、アクセス元 IP を確認しておきましょう。
仮想ネットワーク配下の VM から、 https://www.cman.jp/network/support/go_access.cgi へアクセスしてください。

以下のようなページに IP アドレスが表示されると思いますが、Azure Firewall のパブリック IP アドレス が表示されていると思います。これで パケットが Azure Firewall を経由している事が判ります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/ec17927b-047a-647e-673e-36785eae001a.png)

**Azure Firewall の パブリック IP**
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1619637/23433c3a-4f36-76f9-f420-c9cd1d535b75.png)

そのあと、許可したサイト (www.google.co.jp) にはアクセスできるが、その他のサイトにはアクセスできない事を確認してください。

以上となります。
以後は、必要なサイトを ファイアウォールポリシー に記述する事で 制御 を行う事ができます。

# おまけ：コスト削減のコツ
Azure Firewall をデプロイすると、それなりのコストが発生します。
検証時など、Azure Firewall を常時運用する必要が無い場合でも、課金が発生します。
それを、うまく コスト削減するための方法を 以下の記事で紹介していますので、参考にしてみてください。

https://qiita.com/carol0226/private/84b6f30d9376446a608a

# Next Step
次は、ログの取得を試してみましょう。

https://qiita.com/carol0226/items/b626d67a74c27b4a224b

高度な構成例として AVD と組み合わせて構成した際の例を紹介しています。

https://qiita.com/carol0226/items/894f506d3f7aa8e1a77e