4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Azure Firewall を使ってみる

Posted at

前回までで、リバースプロキシを構成しました。
Azure 上ではNSG に守られていますが、オンプレ流にファイアウォールを立ててみます。
※便宜上リバースプロキシと言ってますが、Azure Firewall の機能にフォーカスして書きます。

構成

新しくVNet を追加してAzure Firewall を設置して、リバプロのVNet とは別のVNet に設置します。
Slide4.jpg

Azure Firewall のデプロイ

Firewall に付随して必要なリソースはパブリックIP (と仮想ネットワーク、サブネット)です。
Basic SKU を使う場合は、追加で管理用のパブリックIP アドレスが必要となります。適当に作りました。今回は使ってません。
image.png

デプロイには5分程度かかりました。

Firewall のDNAT ルール追加

Firewall を介してワークロード(今回ならリバプロ)に接続するにはDNAT(宛先NAT)が必要です。
Firewall と同時にデプロイされているFirewall Policy で設定できます。
設定前に、Firewall に紐づいたパブリックIP アドレスをメモっておきます。Firewall の「設定」>「パブリックIP構成」で見れます。
image.png
image.png

こちらはDNAT の設定。Firewall Policy から、「DNAT規則」>「規則コレクションの追加」です。
image.png

リバースプロキシに自分の家PC からつなぐ想定で、設定した項目はこんな感じです。"Port" については22 でいいのかしら。Teraterm を使います。
ルールのデプロイにも数分かかりました。

項目 内容
Rule name revpro
Source 自分の家PC のパブリックIP
Port 22
Destination Firewall のパブリックIP(メモしたもの)
Translated Address 10.1.0.4 (リバプロのプライベートIP)
Translated Port 22

Firewall を介してリバプロに接続

Teraterm で、Firewall のパブリックIP に向けてSSH をすると接続できました。
※Firewall とリバプロが別の仮想ネットワークにいるので、仮想ネットワークピアリングをしてください。

tshark でパケットキャプチャしてみます。

Capturing on 'eth0'
    1 0.000000000     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=1 Win=251 Len=0
    2 0.465985279     10.1.0.4 → 10.0.1.8     SSH 202 Server: Encrypted packet (len=148)
    3 0.526023202     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=149 Win=255 Len=0
    4 0.977897770     10.1.0.4 → 10.0.1.8     SSH 186 Server: Encrypted packet (len=132)
    5 0.977939769     10.1.0.4 → 10.0.1.8     SSH 202 Server: Encrypted packet (len=148)
    6 0.987029073     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=429 Win=254 Len=0
    7 1.489965502     10.1.0.4 → 10.0.1.8     SSH 186 Server: Encrypted packet (len=132)
    8 1.490025575     10.1.0.4 → 10.0.1.8     SSH 298 Server: Encrypted packet (len=244)
    9 1.498536804     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=805 Win=253 Len=0
   10 2.001904621     10.1.0.4 → 10.0.1.8     SSH 186 Server: Encrypted packet (len=132)
   11 2.001940881     10.1.0.4 → 10.0.1.8     SSH 298 Server: Encrypted packet (len=244)
   12 2.011285053     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=1181 Win=251 Len=0
   13 2.513773676     10.1.0.4 → 10.0.1.8     SSH 186 Server: Encrypted packet (len=132)
   14 2.513799554     10.1.0.4 → 10.0.1.8     SSH 298 Server: Encrypted packet (len=244)
   15 2.522775011     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=1557 Win=255 Len=0
   16 3.025756842     10.1.0.4 → 10.0.1.8     SSH 186 Server: Encrypted packet (len=132)
   17 3.025786326     10.1.0.4 → 10.0.1.8     SSH 298 Server: Encrypted packet (len=244)
   18 3.034777495     10.0.1.8 → 10.1.0.4     TCP 60 51942 → 22 [ACK] Seq=1 Ack=1933 Win=254 Len=0
   19 3.537904495     10.1.0.4 → 10.0.1.8     SSH 186 Server: Encrypted packet (len=132)

どうやら、リバプロは10.0.1.8 とやり取りしているように見えています。
DNAT で宛先を自動的に変換するルールは明示的に書きましたが、送信元は勝手にAzureFirewallSubnet のアドレスに変換されるように見えます。

ネットワークルール・アプリケーションルールについて

インバウンド通信については、アプリケーションルールが適用されません。必要ならWAF を使うことになります。
今回のように仮想マシンにパブリックIP を付与していない場合、DNAT のルールが必須になるため、(DNATルールにより宛先アドレスなど全部設定できるため)ネットワークルールも明示的に設定する必要はないようです。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?