Azure Firewallをためした

azure
Published: 2018-07-14

Azure FirewallがPublic Previewになりました。VNetからインターネットへのOutboundを集中管理できるマネージドFirewallです。クラウドネットワーク野郎にとってワクワクするサービスです。早速試しました。

Announcing public preview of Azure Virtual WAN and Azure Firewall

サインアップ

Public Previewのサービスを利用するにはサインアップが必要です。PowerShellで次のコマンドを実施します。サインアップが完了するまで約30分ほどかかります。

Register-AzureRmProviderFeature -FeatureName AllowRegionalGatewayManagerForSecureGateway -ProviderNamespace Microsoft.Network
Register-AzureRmProviderFeature -FeatureName AllowAzureFirewall -ProviderNamespace Microsoft.Network

サブネットを用意する

Azure FirewallをVNet内に設置するためには、VNet内に"AzureFirewalSubnet"という名前の/25以上のサブネットが必要です。

“AzureFirewalSubnet"が/25未満だと、デプロイに失敗します。ご注意ください。

Azure Firewallをデプロイする

VNetのブレードにAzure Firewallが追加されているので、設定画面に進みます。

設定するパラメータは下図のとおりです。簡単ですね。

Azure Firewallを配置するリソースグループは、VNetが配置されているリソースグループと同じものにします。Azure Firewalと"AzureFirewalSubnet"が別のリソースグループの場合、デプロイに失敗します。謎の仕様です。

しばらく待つとAzure Firewalがデプロイされます。デプロイされると、Azure Firewalに"AzureFirewallSubnet"内のIPアドレスが割り当てられます。このプライベートIPアドレスをユーザ定義ルートのネクストホップで利用しますので、控えておくと良いです。

ポリシーを設定する

Azure Firewallには2つのポリシーがあります。Network ruleとApplication ruleです。

種類 できること
Network rules プロトコルとIPアドレスとポート番号を組み合わせて通信を制御する
Application rules ドメイン名を利用してHTTP/HTTPSを制御する

Network rule

Network ruleはNSGと同じ考え方です。プロトコルとIPアドレスとポート番号を組み合わせてルールを作成します。NSGでは利用できないICMPがプロトコルで選択できます。Network rulesではAzure Firewallの特徴であるFQDNを利用できません。

また、Rule collectionという複数のルールをグルーピングする機能が導入されています。NSGでは大量のルールが並列になるため「このルール、何の用途?」となる場合があります。Rule collectionを利用してルールを意味のあるグループにまとめると、効果的にルールを運用できそうです。

Application rule

Application ruleはNSGと異なるものです。宛先として利用できるものはFQDNのみです。IPアドレスは利用できません。利用できるプロトコルはHTTPとHTTPSのみです。NSGのようにプトロコルとポート番号を利用して自由にサービスを定義することはできません。

ログの保存先を設定する

Azure Firewallは診断ログとして通信ログを吐き出します。診断ログとして吐き出すので、他のサービスの診断ログと同様、Storage AccountやLog Analyticsに自動的にログを保存できます。すばらしい。

“msg”: “HTTPS request from 10.1.0.5:55640 to mydestination.com:443. Action: Allow. Rule Collection: collection1000. Rule: rule1002”
“msg”: “TCP request from 111.35.136.173:12518 to 13.78.143.217:2323. Action: Deny”

Tutorial: Monitor Azure Firewall logs

サーバからの通信をAzure Firewallに向ける

Azure Firewallを用意しても、サーバからの通信はAzure Firewallに向かいません。User Defined Route(UDR)を利用して、Virtual Machineからインターネットへの通信をAzure Firewall経由にします。User Defined Routeに定義する0.0.0.0/0のネクストホップをAzure FirewallのプライベートIPアドレスにするのがポイントです。作成したUDRをサブネットに適用するのを忘れずに。

動作確認

準備がやっと終わりました。動作確認します。

通信制御

Application ruleで許可されていない http://www.google.com にアクセスすると、Azure Firewallの警告画面がでます。

警告画面がでるのはHTTPだけです。HTTPSは警告画面がでません。

通信が暗号化されているHTTPSの検査方法は不明です。MITMで復号化・再暗号化してるとは思えないので、FortiGateのSSL certificate inspectionと同じようにサーバ証明書の中身を見ているのかもしれません。

Common NameだけでなくSubject Alternate Namesも見ているのかを確認するために、sake.biccamera.comを許可する設定で動作確認しました。無事アクセスできました。sake.biccamera.com が利用しているサーバ証明書は、CNが www.biccamera.com でSANsに sake.biccamera.com が含まれています。Azure FirewallがCNだけを見てHTTPSを検査しているのであれば、アクセスできないはずです。細かい実装は不明ですが、いい感じに動作しています。

当然、インターネットから見たときのサーバのIPアドレスは、Azure FirewallのPublic IP Addressになります。

ログ

通信してから少し待つと、Log Analyticsに診断ログが取り込まれます。Kustoを使えば、Network ruleだけのログを抽出したり、特定ドメインへのアクセスを抽出したりと、自由自在にログを調査できます。

感想

これはいいものだ。Azure Firewallの登場によって、VNetからインターネットへのアクセスを集中管理するための選択肢が増えました。一長一短なので要件に合わせて適切なものを選びましょう。

  • 強制トンネリング
  • Network Virtual Appliance
  • Azure Firewal ←New!!