Azure セキュリティ

Azure Firewall でFQDN filtering を利用してみる。

はじめに

新たにAzure Firewallがリリース(プレビュー)されました。
その中でも個人的注目している機能としてFQDN filteringがあります。

要はアウトバウンドをドメインでフィルタリングできます。
これまでは、IP + Portでした。AWSなどでも同様ですね。
そしてドメインでフィルタリングするにはsquidなど透過型Proxyを利用するのが一般的でしたが、
Azure Firewallの登場により楽に設定することが出来ます。
ただし日本はまだ利用できません。

実際に設定手順を見ていきます。

事前準備

プレビュー版の機能のため事前にサブスクリプションで有効化する必要があります。
またPowershellを利用する場合は AzureRm.Network.6.4.0-preview 以上で利用可能になります(今回は利用していません)。
https://github.com/Azure/azure-powershell/releases/tag/AzureRm.Network.6.4.0-preview

新規にインストールする場合

Install-Module -Name AzureRM.Network -Repository PSGallery -RequiredVersion 6.4.0-preview -AllowPrerelease -Force

アップデートする場合

Update-Module -Name AzureRM.Network -RequiredVersion 6.4.0-preview -AllowPrerelease

では有効化していきます。

Azure Firewallの有効化

Register-AzureRmProviderFeature -FeatureName AllowRegionalGatewayManagerForSecureGateway -ProviderNamespace Microsoft.Network

Register-AzureRmProviderFeature -FeatureName AllowAzureFirewall -ProviderNamespace Microsoft.Network

実行結果

PS C:\Users\kudo> Register-AzureRmProviderFeature -FeatureName AllowRegionalGatewayManagerForSecureGateway -ProviderNamespace Microsoft.Network

FeatureName                                 ProviderName      RegistrationState
-----------                                 ------------      -----------------
AllowRegionalGatewayManagerForSecureGateway Microsoft.Network Registering


PS C:\Users\kudo> Register-AzureRmProviderFeature -FeatureName AllowAzureFirewall -ProviderNamespace Microsoft.Network

FeatureName        ProviderName      RegistrationState
-----------        ------------      -----------------
AllowAzureFirewall Microsoft.Network Registering

登録完了には30分程度かかります。
完了の確認は下記のコマンドで行えます。

Get-AzureRmProviderFeature -FeatureName AllowRegionalGatewayManagerForSecureGateway -ProviderNamespace Microsoft.Network

Get-AzureRmProviderFeature -FeatureName AllowAzureFirewall -ProviderNamespace Microsoft.Network

実行結果でRegisteredになっていることを確認します。

PS C:\Users\kudo> Get-AzureRmProviderFeature -FeatureName AllowRegionalGatewayManagerForSecureGateway -ProviderNamespace Microsoft.Network

FeatureName                                 ProviderName      RegistrationState
-----------                                 ------------      -----------------
AllowRegionalGatewayManagerForSecureGateway Microsoft.Network Registered


PS C:\Users\kudo> Get-AzureRmProviderFeature -FeatureName AllowAzureFirewall -ProviderNamespace Microsoft.Network

FeatureName        ProviderName      RegistrationState
-----------        ------------      -----------------
AllowAzureFirewall Microsoft.Network Registered

以上で事前準備は完了です。

作成(ポータル)

ポータルでの作成にあたり事前に日本語設定の場合は英語に変更しましょう。
2018/07/24時点では概要確認時にエラーが発生します。

英語だと問題なく通ります。

FirewallはVNET上に専用のセグメントが必要となります。
そして必ず「AzureFirewallSubnet」という名前にする必要があります。

事前準備ができたらFirewallを検索し作成します。

ポータルで情報を入力していきます。

必要な情報、入力、選択します。

タグを設定する場合は入力します。

最後に確認します(英語設定)

以上でFirewallの作成は完了です。
次にルーティングの設定を行う必要があるあります。

ルーティングの設定

今回は下記のような構成になっています。
Firewallのルート設定を行うと直接対象となるサブネットのサーバーにはアクセスできないためJumpサーバーも用意します。

最初にルートテーブルを作成します。

次にルートテーブルの適用するサブネットを指定します。
今回は、検証にサーバーをが立っているサブネット(Azure Firewallがあるサブネットではない方)を指定します。

次にルートを作成します。

デフォルトルート(0.0.0.0/0)の設定をします。
次のホップアドレスとしてAzure FirewallのプライベートIPを指定します。

Firewallのルールを設定

Firewallの画面を開き、ルールを追加します。

最初にアプリケーションルールコレクションの追加を行います。
ソースアドレス(アクセスするサーバーやサブネットなど)、プロトコル、そしてFQDNを入力します。今回は、about.gitlab.comとでもしておきます。

以上で完了です。
アクセスしてみます。

問題なくアクセスされることを確認できました。

では、google.comにアクセスしてみましょう。

問題なくルールが適用されていることが確認できました。

まとめ

これまではIPでのみ制限がかけられたものをFQDNで適用出来るように出来るようになります。
特にAPIのゲートウェイへの制限などもFQDNで掛けたいなどセキュリティ要件が厳しいとこでは便利だと思います。
サブネット単位での適用です。これが個々のVMやサービスごとに紐づけれれば便利かなぁと思いつつ、
さらに機能が増えることを期待・・・ミラーリングポートとかミラーリングポート・・・

-Azure, セキュリティ
-,