Azure Firewall でオンプレミスネットワークからのインターネット接続をコントロールする

Azure Firewall は Azure Vnet を保護するための L7 ファイアウォールです。マネージドサービスなので、インスタンス運用などは Azure にお任せできます。

Azure Firewall とは | Microsoft Docs

こちら、L7 ファイアウォールのため、URL 単位でフィルタリングを行うことができます。Internet → Azure への通信も制御できますが、Azure → Internet への通信も制御できますので、プロキシ代わりに使ったりすることもできるわけです。

プロキシの代わりにできるなら、既存のオンプレミスネットワークからのインターネットアクセスもこれでコントール出来たら良いですよね。ということで、やってみました。

実現したいこと

  • 全てのネットワークを Azure Firewall 経由にする(デフォルトルート(0.0.0.0/0)を Azure Firewall に向ける)
  • Site to Site ( S2S )VPN で接続されるオンプレミス拠点側にルーティングを伝搬させる
  • Azure Firewall を使ってインターネットアクセス制御を行う(今回は、bing.com だけアクセスできるように設定)

f:id:minorun40:20200510182723p:plain

実現したいイメージ

そこで、今回は、2月にプレビューが開始された、Azure Firewall Manager を使って実現してみたいと思います。

※本記事は、プレビュー中である Azure Firewall Manager を使っているため、一般提供時に画面や操作手順他が変わる可能性があります。
※ちなみに、Azure Firewall 、 後述の Virtual WAN はそれぞれ単体のサービスとしては一般提供されています。

Azure Firewall Manager は、セキュリティポリシーとルートの一元管理を行ってくれるサービスなのですが、今回の構成に必要な Azure Firewall と Virtual WAN ( vWAN )を一緒にデプロイしてくれる(セキュリティとルーティングを vWAN ハブ に関連付けてくれる)サービスです。

Azure Firewall Manager プレビューとは | Microsoft Docs

f:id:minorun40:20200510183227p:plain

Azure Firewall Manager の実現イメージ

ちなみに、Azure Virtual WAN は、オンプレミス拠点や  Azure Vnet を接続して相互ルーティングを実現させることができる、いわゆる ” WAN ” として機能させることができるサービスですね。

Azure Virtual WAN の概要 | Microsoft Docs

f:id:minorun40:20200510183452p:plain

Azure Virtual WAN のイメージ

今回実現する構成

これらを踏まえて、今回実現する最終構成はこのようになります。今回、オンプレミスネットワークの代わりに Azure で別リソースグループの拠点ネットワークを作って S2S VPN で接続させました。

f:id:minorun40:20200512194922p:plain

今回実現したい構成

それぞれ一つずつ始めてみましょう。

Azure Firewall Manager のデプロイ

  • Azure ポータルの検索ボックスで「 Firewall Manager 」と入力し、Firewall Manager を選択

f:id:minorun40:20200510184241p:plain

  • 「 Create new secured Virtual hub 」を選び、セキ ュリティで保護された仮想ハブ を作成

f:id:minorun40:20200510184955p:plain

  • リソースグループ、設置リージョン、仮想ハブ名、ハブのアドレス空間を設定し、「新しいVWAN」を選んで仮想WAN名と SKU を選択します。ここで Virtual WAN と Virtual WAN ハブを作ってしまいます。

f:id:minorun40:20200510185211p:plain

  • 次へ進み、Azure Firewall も一緒に作ります。Azure ファイアウォールが「 Enabeld 」であることを確認します。既存のファイアウォールポリシーがある場合は、ここでアタッチすることもできますが、今回は新規作成なので、Deafult Deny Policy を選んでおきます(後で変えます)

f:id:minorun40:20200510185341p:plain

  • Trusted Security Partner は 「 Disabled 」で先へ進みます。

f:id:minorun40:20200510185551p:plain

  • 確認及び作成で問題なければ作成を開始します。出来上がるまで 30 分ほどお時間頂くので、しばしゆっくりお待ちください。

・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・

f:id:minorun40:20200510185948p:plain

  • 概要の箇所で「このファイアウォールを構成及び管理するには、Azure Firewall Manager プレビューにアクセスしてください」をクリックします。

f:id:minorun40:20200510190148p:plain

  • Azure Firewall Manager メニューから、Azure Firewall ポリシーを選び、「 Azure Firewall ポリシーの作成」を選択します。

f:id:minorun40:20200510190302p:plain

  • Azure Firewall のポリシーを作成します。リソースグループ名、ポリシー名、リージョンを指定し先に進みます。

f:id:minorun40:20200510190400p:plain

  • ポリシーの内容を定義します。名前を入力し、規制コレクションの種類を「アプリケーション」に、優先度を「100」、規制コレクションアクションを「許可」にし、Rules のところを入力します。Name は任意、ソースアドレスは「*」、プロトコルは「http,https」、Destination Type は「FQDN」として、許可したい URL を定義します。今回は、Bing だけを許可するので、「 *.bing.com 」 とし、作成します。

f:id:minorun40:20200510190800p:plain

  • ポリシー作成が完了したら、Firewall Manager のメニューに戻って、「Security」→「Azure Firewall Policy」開いて、作成したポリシーが表示されていることを確認します。ここでチェックボックスにチェックをして、ハブの関連付けを選び、「Azure ファイアウォールポリシーを使用してハブをセキュリティで保護する」を選択し、追加します。これで vWAN ハブにポリシーが紐づけられました。

f:id:minorun40:20200510191250p:plain

f:id:minorun40:20200510191320p:plain

ここでひとまず Firewall Manager の設定を終わりにしておきます。

オンプレミス環境のデプロイ

オンプレミスに見立てた Azure ネットワークを構築します。気分を出すために別リージョンで別リソースグループで作ってみます。

  • 仮想ネットワークゲートウェイを作成します。これと一緒に仮想ネットワークも作成してしまいます。Azure ポータルの検索ボックスから「 仮想ネットワークゲートウェイ 」と入力し、仮想ネットワークゲートウェイを作成します。基本的には以下画面の通りで作成しますが、仮想ネットワークのところだけ新しく仮想ネットワークを作成とすると別ビューで作成画面ができるので入力しておきます。※事前に仮想ネットワークを作っても良いのですが、この方法だと GatwaySubnet なども一緒に作ってくれるので便利です。

f:id:minorun40:20200510192119p:plain

f:id:minorun40:20200510192136p:plain

こちらも、作成を始めると 30 分ほど待ちますのでしばしごゆっくり。。

・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・

  • 仮想ネットワークができたら、仮想マシンも作っておきましょう。せっかくインターネットアクセスを制御するので、インターネットからアクセスできないように、「パブリック受信ポート」は「なし」に、 「パブリックIP」も「なし」にしておきます。

 

f:id:minorun40:20200510192520p:plain

 

f:id:minorun40:20200510192533p:plain

  • インターネットアクセスなしでどうやって仮想マシンにアクセスするか?というところで、ぜひ Bastion サービスを使いましょう。こちらは、こういったサーバのメンテナンスでよくつかわれていた踏み台サーバをマネージドサービスで提供するものです。手順はこちらをご参考に。。。

Azure Bastion ホストを作成する: ポータル | Microsoft Docs

  • 作成が終わったら、仮想マシンのルーティング情報を確認しましょう。♪オンプレミス想定のリソースグループ内に、仮想マシンを作ったらできているネットワークインターフェイスのリソースがあると思いますのでそれを選択し、「サポート+トラブルシューティング」→「有効なルート」を選びます。すると、現在この仮想マシンに伝播しているルーティング情報を見ることができます。自分のネットワークと、既定のルート( 0.0.0.0/0 )しか見えていませんね。

f:id:minorun40:20200510192827p:plain

S2S VPN 接続を構成する

2つの環境を S2S VPN で接続しましょう。

  • DMZ 想定で作成した 仮想 WAN を選択します。すると、作成済みの VWAN ハブが見えると思いますので、それを選択します。

f:id:minorun40:20200510193724p:plain

  • VPN を選択するとまだゲートウェイが作成されていないので、新しくゲートウェイを作成します。この時、後で BGP で使用する ASN ( AS 番号)が払い出されるのですが、こちらは 65515 が指定となりますのでご注意を。ゲートウェイスケールユニットを選択して、作成を開始します。こちらもまた 30 分ほど時間がかかるため、しばし一休みです。

f:id:minorun40:20200510193934p:plain

 

・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・~・

  • ここで、次の設定のためにオンプレ想定のNW側のネットワーク構成情報を更新します。仮想ネットワークゲートウェイを選択し、「設定」→「構成」で BGP ASN にチェックを入れ、自律システム番号(ASN)を設定します。Azure Firewall 側の ASN が65515 であるため、それと被らない番号とします。 また、それ以外に Azure にて予約済みの番号、IANA によって予約済みの番号がありますので、それを除いた番号を設定しましょう。この ASN と、払い出された BGP ピアの IP アドレスをメモしておきます。

BGP と Azure VPN Gateway: 概要 | Microsoft Docs

 

f:id:minorun40:20200510221425p:plain

  • また、仮想ネットワークゲートウェイのパブリック IP アドレスもメモしておきます。

f:id:minorun40:20200510221558p:plain

  • Azure Firewall のある側の 仮想 WAN から 作成されている仮想ハブ を選択し、S2S VPN の設定を開きます。ASN 、ゲートウェイスケールユニットが作成されていることを確認します。ここで、「+VPN サイトの新規作成」を選びます。 

f:id:minorun40:20200510222048p:plain

  • VPN サイト を作成します。名前、デバイスベンダーは識別用なので任意の値で結構です。ボーダーゲートウェイプロトコル(BGP)を有効化し、接続する仮想ハブを選択します。

f:id:minorun40:20200510222355p:plain

  • 次にリンクの設定をします。リンク名、プロバイダ名は任意で、速度は必要な帯域割り当てを設定します。IP アドレスは、前項でメモしたオンプレミス側のパブリック IP アドレス、BGP アドレス、ASN は BGP 構成時のアドレスと ASN をそれぞれ記載して作成します。

f:id:minorun40:20200510222543p:plain

  • サイト設定が完了すると、以下のように表示されますので、そこで VPN 情報のダウンロードを行い、オンプレ側 VPN 構成に必要な情報をダウンロードします。

f:id:minorun40:20200510222900p:plain

 f:id:minorun40:20200510223001p:plain

ちなみに、これは新しいリソースグループが作成され、Blob に保存されるようなので、もしダウンロードし損ねた方はリソースグループから探してみましょう。
f:id:minorun40:20200510223058p:plain

  • ダウロードした Config ファイルを開くと設定データが出てくるのですが、大事な箇所は以下の gatewayConfigration のパブリック IP アドレスと プライベート IP アドレス、PSK の値です。メモしておきます。(冗長化しない場合は、Instance0のみで結構です。)

"gatewayConfiguration":{"IpAddresses":{"Instance0":"20.44.173.92","Instance1":"20.44.173.21"},

"BgpSetting":{"Asn":65515,"BgpPeeringAddresses":{"Instance0":"10.0.0.13","Instance1":"10.0.0.12"},

"connectionConfiguration":{"IsBgpEnabled":true,"PSK":"<PSKの値>",

  • オンプレ NW 側のネットワークゲートウェイで接続構成を行います。「設定」→「接続」で設定します。接続の追加のタブでサイト対サイトを選び、仮想ネットワークゲートウェイは作成したものを選びます。ここでローカルネットワークゲートウェイを一緒に作成してしまいましょう。IP アドレスは先ほどメモしたパブリック IP アドレスを使います。あとは、共有キー( PSK )は先ほどの PSK を貼り付けます。IKE は v2 を選択します。

f:id:minorun40:20200510224610p:plain

  • 作成されたローカルネットワークゲートウェイにひと手間加えます。「設定」→「構成」から BGP 設定の構成にチェックを入れ、先ほどメモした ASN 番号とプライベート IP アドレスを入力します。

f:id:minorun40:20200510224934p:plain

  • 新しくできた 接続 ( Connection )にもひと手間加えます。「設定」→「構成」で BGP を有効にします。

f:id:minorun40:20200510224958p:plain

  • これで、オンプレ NW 側にルート情報が BGP で広報されてきているはずです。ために、オンプレ NW 側の VM でルート情報を見てみます。以前無かった10.0.0.0/16 といったルート情報が流れてきているはずです。しかし、0.0.0.0/0 は既定のインターネットを向いていますので、まだ Azure Firewall を経由していません。

f:id:minorun40:20200510225326p:plain

Azure Firewall でインターネットトラフィックを保護

  • 最後に Firewall Manager に入って、セキュリティで保護された仮想ハブをもう一度開きます。この 「 Settings 」→ 「接続」でこれまでに作成した VPN 接続を選択し、「インターネットトラフィックをセキュリティで保護」を押します。するとインターネットトラフィックの箇所が「セキュリティ保護」になります。

f:id:minorun40:20200510225709p:plain

  • その上で「ルートの設定」に移動します。(※ 2020/5/10 現在 この設定が、Azure ポータルの言語設定が日本語だとうまく設定できません。こちらの設定をする際には、ポータルの言語設定を English に変更してから設定ください)
    ここでは、どのネットワークのトラフィックを Azure Firewall 経由にするか設定できます。 Traffic from Branch を「 Send via Azure Firewall 」に変更し Save します。

f:id:minorun40:20200510231715p:plain

  • ここまで設定すれば、オンプレ NW 側へルート情報が伝播され始めるはずです。先ほどと同じように仮想マシンの ネットワークインターフェイスからルート情報を見てみましょう。0.0.0.0/0 が既定のインターネット接続ではなくなっていますね!

f:id:minorun40:20200510232013p:plain

接続チェック!

オンプレ NW にある仮想マシンにログインして、インターネット接続してみましょう。正しくルート設定及びポリシーが割り当てられていれば、以下のようになるはずです。

f:id:minorun40:20200510232212p:plain

Google は接続できない

f:id:minorun40:20200510232233p:plain

Bing にはアクセスできる

 

いかがでしたでしょうか。オンプレミスネットワークからの通信を Azure から抜けさせたいという要件は地味にあるので構成してみました。また、 Azure Firewall Manager は Firewall Policy を一元管理して各所にある vWAN や Vnet にアタッチできたりもするので、今後 GA までに要チェックですね!

---------------
続編も書いてみました!

minorun40.hatenablog.com