一元管理機能を搭載した Azure Firewall とは?

Azure Firewall とは、マネージドサービスとして提供されるステートフルなファイアウォールです。ハブ・アンド・スポーク構成にて、インターネットの出入り口に設置するのがオススメです。NSGでブラックリスト方式、Azure Firewallでホワイトリスト方式の組み合わせが良いでしょう。また、ネットワークフィルタリング機能以外に、コンテンツフィルタリング・IDPS・TLSインスペクション・脅威インテリジェンスなど様々な機能が利用できます。これらの機能を”Firewall Policy”として保持し、複数のFirewallに適用する事が可能です。

・Firewall Manager:Firewall Policyを一元管理するマネージドサービス
・Firewall Policy:Firewallに関する設定情報を保持。複数のFirewallに適用して利用する。
・Azure Firewall:Firewall Policyを適用し実行するNVA(Network Virtual Appliance)
※専用サブネット[AzureFirewallSubnet](Min/26)の作成が必要

Firewall Policy に含まれる設定
・リージョン:Firewall Policyをデプロイするリージョン
・SKU:[Standard / Premium]
・Parent Policy:作成済みFirewall Policyの継承[有/無]
・Rule Collection:DNAT・ネットワークルール・アプリケーションルールを設定
・DNS:DNSサーバーの指定・DNS Proxy[有/無]
・TLSインスペクション:マネージドID・Key Vault・中間証明書
・IDPS:[Disabled / Alert / Alert and Deny]
・脅威インテリジェンス:[Disabled / Alert / Alert and Deny]

【SKU】

[Basic]
・アプリケーションルール:FQDN/FQDNタグ/Webカテゴリ(FQDN)でのフィルターが可能
※Port[80][443][1433]のみが対象
・ネットワークルール:IP/Port/サービスタグ/IPグループでのフィルターが可能
・ホワイトリスト方式 ※暗黙のDeny
・アプリケーションルール上限[?]/ネットワークルール上限[2万]が作成可能
・最大スループット250Mbps
・SNAT & DNAT が可能 (NATルール)
・Public IP を最大250 設定可能
・Azure Monitor 統合
・Availability Zones (99.99%)対応。※送受信データ費用は必要
・強制トンネリングをサポート
・デフォルトルートが Internet に設定されている。※FW管理のためInternetへの接続が必要
・BGPが有効となっており、経路学習を行う。

[Standard] ※[Basic]機能に追加
・ネットワークルール:IP/Port/サービスタグ/FQDN/IPグループでのフィルターが可能
・最大スループット30Gbps
・DNS Proxy
・脅威インテリジェンス:悪意のある既知のIPやドメインを判断し、通知/遮断を行う。
・Webカテゴリ:FQDNに基づきコンテンツ内容を検査 ※カスタマイズ不可

[Premium] ※[Standard]機能に追加
・最大スループット100Gbps
・[80][443][1433]に限り、URLでのフィルターが可能 (アプリケーションルール)
・TLSインスペクション:送信時に暗号化されたパケットを復号化し検査を行う。
・IDPS:通信パターン(シグネチャ)から危険性を判断し、通知/拒否を行う。バイパスも可能
・URLフィルタリング:FQDNと違いファイルパスまで指定可能 ※www.cloudou.net/a/b/
・Webカテゴリ:URLに基づきコンテンツ内容を検査 ※カスタマイズ不可

[FQDNタグ] (アプリケーションルール)
Microsoft Active Protection Service (Windows Defender)
Windows Diagnostics
Windows Update
App Service Environment
Azure Backup
HDInsight
Windows Virtual Desktop
Azure Kubernetes Service

※サービスタグは、数が多いので割愛します。

【Rule Collectionの処理順序】

処理順序:RCG(C)Net → RCG(B)Net → RCG(A)App → RCG(C)App → RCG(B)App

優先度に関係なく、ネットワーク>アプリケーションの順で処理されます。
優先度が重複した際は、
・継承された”Rule Collection Group”を優先します。
・次に”Rule Collection Group”の優先度が高い方を優先します。

複数の”Rule Collection Group”を作成可能
1つの”Rule Collection Group”内に複数の”Rule Collection”を作成可能
“Rule Collection Group”の優先度の重複は不可
優先度:100~65000 ※数字が小さいほど優先
※優先度は、DNAT>ネットワークルール>アプリケーションルール の順に設定する必要があります。仮にアプリケーションルールの優先度を”105″とした場合、ネットワークルールに使用できるのは”100~104″だけとなります。

※複数の”Rule Collection Group”を設定できるが、1つにした方がわかりやすいです。

【処理順序】

[アウトバウンド]
①脅威インテリジェンス
②ネットワークルール
③アプリケーションルール ※[80][443][1433]のみが検査対象となる
※TLSインスペクションが有効

[インバウンド]
①脅威インテリジェンス
②DNAT
③ネットワークルール
※アプリケーションルールは適用されません。必要な場合は、WAFを利用すること

IDPS
通知モード:ネットワーク/アプリケーションルールと平行して検査します。
拒否モード:ネットワーク/アプリケーションルールの後に検査します。
※TLSインスペクションが有効だと、暗号化されたパケットも検査します。

FQDNフィルターの違い
アプリケーションルール:複数のIPアドレスを判別できます。※HTTP/S,MSSQLは推奨
ネットワークルール:DNSプロキシを有効にすることで、複数のIPアドレスを判別できます。

【SNATとポート制限】

Azure Firewallを通過するグローバルIP向けのパケットは、必ずSNAT(PAT)されます。
SNAT(PAT)に利用できる最大ポート数は下記のように求めます。

Azure Firewall PIP(Max250) x 2496Port = 624,000
※Instance(VMSS)はCPU負荷(60%)で自動スケールアウトします。 ※7分ほどかかる
※1つのFW_PIPあたり、最大2496Portになります。
※宛先がプライベートIPの場合はSNATの対象外(デフォルト)

624,000port以上必要な場合は、NAT Gatewayを組み合わせる事で対応できます。
※最大 1,032,192ポートまで対応可能

【強制トンネリング構成】

強制トンネリング環境上にAzure Firewallを作成する際の構成。
Azure Firewallの管理用通信は、直接インターネットに流す必要があるため、
管理用通信[AzureFirewallManagementSubnet]とユーザー用通信[AzureFirewallSubnet]をサブネットにて分離します。
当然ですが、[AzureFirewallManagementSubnet]にUDRは設置できません。

強制トンネリング環境において必須構成ではなく、通常構成である[AzureFirewallSubnet]にUDR(0.0.0.0/0)を設置することでも対応できます。


全体の流れ

Step1:Azure Firewallの作成
Step2:Rule Collectionの設定
Step3:診断ログの設定


Step1:Azure Firewallの作成

[+リソースの作成]ー[検索:firewall]ー[Firewall]を選択

サブスクリプション:Azureサービスの提供範囲
リソースグループ:グループ名(複数のリソースを1つにグループ化する機能)
名前:表示名
場所:FWをデプロイするリージョン
可用性ゾーン:ゾーン冗長
Firewall tier:※FWのSKUを選択。変更不可
ファイアウォール管理:※Premiumの場合、ポリシーでの管理が必須
Firewall policy:※FWに適用するポリシー(SKU)を選択。適用変更可能
仮想ネットワークの選択:※サブネット[AzureFirewallSubnet]の作成が必要
パブリックIPアドレス:※可用性ゾーンを利用する場合は、予め作成しておく必要がある
強制トンネリング:※FWのデフォルトルートをオンプレに向けたい場合、有効にする

これにて、”Azure Firewall”と”Firewall policy”の作成が完了!!


Step2:Rule Collection の作成

作成した、Firewall policyを選択し、”Rule Collection Group”を作成します。

名前:表示名
優先度:”Rule Collection Group”同士での優先度。※数字が小さいほど優先

名前:表示名
規則コレクションの種類:[ネットワーク/アプリケーション/DNAT]から選択
優先度:100~65000 ※数字が小さいほど優先
規則コレクション アクション:[許可/拒否]
規則コレクション グループ:※作成済みの”Rule Collection Group”を選択
規則:
Destination Type
ネットワーク: [IP/サービスタグ/FQDN/IPグループ]
アプリケーション:[FQDN/FQDNタグ/URL/Webカテゴリ]
※DNATのターゲットは、FWのPIPを入力

これにて、フィルタリング設定は完了です!


Step3:診断ログの設定

Azure Firewallのログは、テキストで出力されるのですが、これを見やすくするためにグラフ化する設定を行います。
① Log Analytics Workspace の作成
② Azure Firewall での診断設定
③ Azure Firewall Book の設定

① Log Analytics Workspace の作成

[+リソースの作成]ー[検索:Log Analytics Workspace]

サブスクリプション:Azureサービスの提供範囲
リソースグループ:グループ名(複数のリソースを1つにグループ化する機能)
名前:表示名
場所:デプロイするリージョンを選択

② Azure Firewall での診断設定

作成したAzure Firewallー[診断設定]ー[診断設定を追加する]を選択

Log Analyticsでは、2年間保存することができますが、長期間保存する場合は、[ストレージアカウントへのアーカイブ]を選択します。

③ Azure Firewall Book の設定

Githubから”Azure Firewall Book”のテンプレートをコピーし、
カスタムテンプレートからデプロイを行います。

Workbook Display Name:表示名
Wookbook Type:※workbookを選択
Diagnostics Workspace Name:作成した”Log Analytics Workspace”名
Diagnostics Workspace Resource Group:リソースグループ名
Workbook Id:※変更なし

作成したAzure Firewall Book を選択ー[ブックを開く]を選択

Azure Firewall – Overview
Azure Firewall – Application rule log statistics
Azure Firewall – Network rule log statistics
Azure Firewall – DNS Proxy
Azure Firewall – IDPS
Azure Firewall – Investigation

クライアント側では、ブロックされたメッセージが表示されます。


おまけ:脅威インテリジェンス

脅威インテリジェンスモード:[無効/警告のみ(デフォルト)/警告して拒否]
許可リスト:※IPアドレスとFQDNで指定可能


おまけ:IDPS

IDPSモード:[無効/アラート(デフォルト)/アラートを出して拒否]

シグネチャごとにモードを定義できる。

指定したパケットをIDPS検査の対象外とする。