Azure Firewall + Virtual WAN で安全なネットワーク構築

## Azure Firewall とは
Azure で実行されているクラウド ワークロードに最高レベルの脅威保護を提供する、クラウドネイティブでインテリジェントなネットワーク ファイアウォールのセキュリティ サービスです。 組み込みの高可用性とクラウドの無制限のスケーラビリティを備えた、完全にステートフルなサービスとしてのファイアウォールです。 Standard と Premium 2 つの SKU で提供されます。

## すなわち何？
1. Azure Firewall の `Virtual Hub` 機能は、Microsoft の WAN 経由で `VNet`、`Site to Site VPN`、 `Point to Site VPN`、`ExpressRoute` を Virutal Hub に接続し、同じコンソールでネットワークの接続とルーティングを管理できます。
2. Azure Firewall の `Azure Firewall Policy` 機能は、内部からインターネットへの通信、内部ネットワーク間の通信制限を管理できます。

## デモの概要
ユーザが `Azure Firewall` 介して RDP で`VM01`に接続し、`VM01` から `Azure Firewall` 介して、RDPで`VM02`に接続します。

## デモの全体図
![Firewall+vHub](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/22bd69ae-99e2-cfe6-0855-7e4f26117ee5.png)

## 主な構築タスク
1. Virtual WAN、Virtual Hub の作成
2. VNet01、VM01 の作成
3. VNet02、VM02 の作成
4. VNet01、VNet02 を Virtual Hub に Peering する
5. Azure Firewall の Public IP を確認する
6. Azure Firewall Policy 作成する
7. Azure Firewall Policy を Virtual Hub にデプロイする
8. 全てのトラフィックは Azure Firewall 経由で通信する

### Virtual WAN、Virtual Hub の作成
`Virtual Hub` 作成には約30分かかります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/daa2dd4f-f9cd-7df9-7a78-af636b7a6fdf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/769aa225-be1e-063b-7fb2-b4ca9c53a4bf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/8f6d1f13-e276-4b22-4091-58a11f9a8b62.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/e7a01c70-5bed-c69f-f136-4f75ce3511a9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/ea50b0f4-0fdc-299a-6ef4-3f9e0d2dc130.png)

### VNet01、VM01 の作成
`-g` は各自の環境に合わせて修正してください。VM の Private IP はメモしてください。
```bash:CloudShell
# Create virutal network
az network vnet create -g DEMO_RG \
    -n VNet01 --address-prefix 10.1.0.0/16 \
    --subnet-name default --subnet-prefix 10.1.1.0/24

# Create virtual machine (windows)
az vm create -g DEMO_RG --vnet-name VNet01 --subnet default --name VM01 \
    --public-ip-address "" --image Win2019Datacenter --size Standard_B1s \
    --admin-username azureuser
```

### VNet02、VM02 の作成
`-g` は各自の環境に合わせて修正してください。VM の Private IP はメモしてください。
```bash:CloudShell
# Create virutal network
az network vnet create -g DEMO_RG \
    -n VNet02 --address-prefix 10.2.0.0/16 \
    --subnet-name default --subnet-prefix 10.2.1.0/24

# Create virtual machine (windows)
az vm create -g DEMO_RG --vnet-name VNet02 --subnet default --name VM02 \
    --public-ip-address "" --image Win2019Datacenter --size Standard_B1s \
    --admin-username azureuser
```

### VNet01、VNet02 を Virtual Hub に Peering する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/f5c99fc4-0f65-74e0-33de-af4d0a627cf0.png)

#### VNet01のPeering
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/a00fe3dd-2077-0625-8d4c-e71da28799bd.png)

#### VNet02のPeering
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/7cc153dc-fd0c-959e-896c-24ff9cde8334.png)

### Azure Firewall の Public IP を確認する
DNAT に Public IP と VM の Private IP をマッピングするため、Firewall の Public IP をメモします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/84d00030-d20a-9203-e6ec-de2387f13747.png)
１つをメモする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/9cb4bda7-a58d-b05b-9dad-e29a2a6ce30f.png)

### Azure Firewall Policy 作成する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/04206001-a867-c0f1-04f6-94153bb2459f.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/a4002d5d-0450-db86-27d1-520e0b323ecf.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/9b1c6c8a-0116-f1e3-8fd3-323663b397ea.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5760fd21-de25-9d4b-8c22-31e693cc9dd9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5cfdd986-51a7-b9a0-c485-7521dd2cd8c7.png)

#### Internet から VM01 への RDP 接続許可ルール追加
**Name**: allow_rdp
**Rule collection type**: DNAT
**Priority**: 100
**Name**: inbound_rdp_vm01
**Source Type**: *
**Protocol**: TCP
**Destination Ports**: 3389
**Destination Type**: IP Address
**Destination**: 20.194.237.18 **(firewall public ip)**
**Translated address**: 10.1.1.4 **(vm private ip)**
**Translated port**: 3389

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/e75cf544-b5ce-9742-d562-032e493887fb.png)

#### VNet01 から VNet02 への RDP 接続許可ルール追加
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/790ce91d-5f25-4e7c-be6f-a5e0f031669c.png)

**Name**: allow_rdp
**Rule collection type**: Network
**Priority**: 100
**Rule collection action**: Allow
**Name**: vnet_rdp
**Source Type**: 10.1.1.0/24 (VNet01 subnet range)
**Protocol**: TCP
**Destination Ports**: 3389
**Destination Type**: IP Address
**Destination**: 10.2.1.0/24 (VNet02 subnet range)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/6efdbc80-8302-26e3-afce-6d488b0ac6d1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/d57ab179-ae7d-9d7b-f5d4-dc66e6683d4a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/0a879a02-993c-9833-6c12-362411135846.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/e50014a0-0f08-2acd-e6d4-4699e75046a7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5b90f182-4742-c6a2-a0fb-c19d690e6864.png)

### Azure Firewall Policy を Virtual Hub にデプロイする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/acf5f221-37f5-ac6f-dbaa-abb53548d80b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5d3850c8-dca8-8933-2322-2943f7ed1838.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/2b034b3d-c45e-9de8-de12-cd643ddc70dd.png)

### 全てのトラフィックは Azure Firewall 経由で通信する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/c692556c-087f-9c8e-eb96-7f4633a8a752.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/c0fafe0e-e5dd-28a0-830a-dd83e919bc80.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/00f23b25-4b5c-95b1-53bb-cd65ce7740b1.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5d0b21bf-d32e-21b1-6f3f-2dd35e29802a.png)

## デモの検証①： Internet から RDP で接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/dc90bb9e-fa01-20f2-da44-839e14e3fa01.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/306f02b6-1b7b-f2cb-d289-471dd04ce4a5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5de2b692-5d8b-7a5e-6cd9-f877d3436f33.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/fab64268-a4be-de00-c5a2-3936dfa93c38.png)

## デモの検証②： VNet01 から VNet02 へ RDP で接続
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/5587713c-f57c-1cd3-fab5-e799070803e5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/69cf178a-8b78-2367-abc8-345e86330104.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/160072/7d8b4f91-efc0-50d0-d3b6-6650186a1fb6.png)