Azure Load BalancerのインバウンドNAT規則を使ったポートフォワーディング

2021-07-03Azure,Load Balancer,Virtual Machines

Azure ロードバランサー(Azure Load Balancer)のインバウンドNAT規則を利用した、ポートフォワーディング方法の紹介です。
仮想マシンへのポートフォワーディング時に、リモート接続に利用するポート番号を変更しています。

仮想マシン(Azure VM)にインターネット経由でリモートデスクトップやSSHで接続する場合、デフォルトでは3389番ポート(リモートデスクトップ)や22番ポート(SSH)を利用します。
Azureで使用しているパブリックIPアドレスは公開されており、3389番ポートや22番ポートには常に悪意を持ってアクセスを試みる方がいます。

セキュリティ対策の一つとして、ポート番号を変更する方法があります。
Azure ロードバランサーのインバウンドNAT規則使って、ポートフォワーディングさせることができます。
仮想マシン側の設定を変更することなくリモート接続時のポート番号を変更できます。

Windowsの仮想マシンのリモートデスクトップ接続を例に、接続時のポート番号を変更する手順を確認します。

    • Azure ロードバランサーをデプロイ
    • インバウンドNAT規則を設定
    • インバウンドNAT規則のフロントエンドポート番号を変更
    • バックエンドプールを使用したインバウンドNAT規則の作成

※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事では、Azure Load Balancer(Azure LB)をAzure ロードバランサーとして表記しています。
※本記事は、Standard SKUのAzure ロードバランサーを利用して確認しています。
※不正なアクセス対応には、接続元のIPを絞ることが大前提になります(こちらを参照ください)。

スポンサーリンク

Azure ロードバランサーのリソースやインバウンドNAT規則を作成

Azure ロードバランサーの設定値

今回作成した、Azure ロードバランサーの設定値です。
StandardのSKUを利用しています。

タブ 設定名 設定値
基本 名前 lbe-test-01
地域 Japan East(東日本)
SKU Standard
種類 パブリック
レベル 地域
フロントエンドIP 構成名 fip-comp-test-01
ゲートウェイロードバランサー なし
パブリックIPアドレス名 pip-lbe-test-01
パブリックIPアドレス可用性ゾーン ゾーンなし

Azure ロードバランサーのリソースを作成

Azure ロードバランサーのリソースを作成します。
パブリックIPも新規に作成します。

Azure ロードバランサーのリソース作成手順

ロードバランサーのメニューで作成を選択します。

基本タブです。
ロードバランサー名、地域、種類、SKU、レベルを設定します。

フロントエンドIP構成を追加します。
パブリックIPアドレスの新規作成を選択します。
パブリックIP名前、可用性ゾーンを設定します。
フロントエンドIP構成名などを設定し追加します。

バックエンドプール、インバウンド規則、送信規則は作成せずに次に進みます。

※今回は、リソース作成後に設定します。

確認画面です。
内容確認し問題が無ければ作成を選択します。
作成したリソースを確認できます。

リモートデスクトップ接続のインバウンドNAT規則の設定値

Azure ロードバランサーに、リモートデスクトップ接続のトラフィックを転送するインバウンドNAT規則を追加します。
リモートデスクトップ接続の標準ポート番号である3389番ポートをそのまま使用して転送します。
トラフィックの転送先が1台の仮想マシンである場合、種類に仮想マシンを指定します。

【構成イメージ】

【設定値】

設定メニュー 設定名 設定値
インバウンドNAT規則 名前 rule-test-01
種類 Azure 仮想マシン
ターゲット仮想マシン名 test-vm-01
フロントエンドIPアドレス fip-comp-test-01
フロントエンドポート 3389
バックエンドポート 3389
プロトコル TCP
フローティングIP 無効

リモートデスクトップ接続のインバウンドNAT規則を作成

Azure ロードバランサーに、インバウンドNAT規則を追加します。

Azure ロードバランサーにインバウンドNAT規則を追加

左側のメニューでインバウンドNAT規則を選択します。
追加を選択します。

インバウンドNAT規則の追加画面です。
種類はAzure 仮想マシンを選択します。
ターゲット仮想マシン、ネットワークIP構成を選択します。
接続時に使用するフロントエンドのIPアドレスを選択します。
フロントエンドポートには受信するポート、バックエンドポートには仮想マシンにトラフィック転送する先のポートを指定します。

設定が終わったら追加選択します。

作成したインバウンドNAT規則を確認できます。

Azure ロードバランサー経由で仮想マシンにリモートデスクトップ接続

設定したAzure ロードバランサーのインバウンドNAT規則を使って仮想マシンにアクセスできるか確認します。
Azure ロードバランサーのフロントエンドIPアドレスに対してリモートデスクトップ接続を行います。

仮想マシンにリモートデスクトップ接続
仮想マシンに接続できることが確認できました。

仮想マシンのパブリックIPアドレスを確認

仮想マシンのパブリックIPアドレスを確認します。
Azure ロードバランサーのフロントエンドIPアドレスになっている事を確認できます。

仮想マシンのパブリックIPアドレス

ロードバランサーのパブリックIPアドレスが設定されている事を確認できます。

—広告—

インバウンドNAT規則を使ったポートフォワーディング設定

公式サイトの手順にそって設定を進めます。

単一 VM のインバウンド NAT 規則を追加する

リモートデスクトップ接続のポートフォワーディング設定(インバウンドNAT規則を作成)

インバウンドNAT規則のフロントエンドポートを変更することで、受信ポートを変更することができます。
今回は3389から13389に変更します。
バックエンドポートは3389のままです。
仮想マシンへのリモートデスクトップ接続に使用するポートは、3389番のまま変わりません。

インバウンドNAT規則のフロントエンドポートを変更
インバウンドNAT規則を選択すると設定画面が表示されます。
フロントエンドポートを13389として保存します。
インバウンドNAT規則を確認します。
フロントエンドポートが13389に変わっていることを確認できます。

変更後のフロントエンドポートで仮想マシンにリモートデスクトップ接続

ポート番号13389を指定して、仮想マシンにリモートデスクトップ接続します。

【構成イメージ】

仮想マシンにリモートデスクトップ接続

コンピューターに”フロントエンドIPアドレス:ポート番号”を指定します。
変更後のフロントエンドポート番号を利用して、リモートデスクトップ接続できることが確認できます。

※3389番ポートを使用したAzure ロードバランサー経由のリモートデスクトップ接続は失敗します。
※Azure ロードバランサーを経由せずに仮想マシンに直接リモートデスクトップ接続する場合は、3389番ポートを使用します。

NSG(ネットワークセキュリティグループ)で許可するポート番号は?

NSG(ネットワークセキュリティグループ)で許可するポート番号はバックエンドポート番号になります。
受信のセキュリティ規則で許可するポート番号は3389です。
フロントエンドポート番号を許可する必要はありません。

受信のセキュリティ規則

受信ポートの規則は3389のままで接続可能です。

—広告—

バックエンドプールをターゲットにした複数の仮想マシンへのポートフォワーディング設定

公式サイトの手順にそって設定を進めます。

複数の VM のインバウンド NAT 規則を作成する

Azure ロードバランサーでバックエンドプールを作成

バックエンドプールを利用して、複数の仮想マシンを対象としたインバウンドNAT規則を作成できます。
リモートデスクトップ接続を行う仮想マシン(test-vm-01、test-vm-02)のバックエンドプールを作成します。

バックエンド プールの管理

【バックエンドプールの設定値】

設定メニュー 設定名 設定値
バックエンドプール 名前 bpool-test-01
ターゲット仮想マシン名 test-vm-01
test-vm-02

【バックエンドプールの設定手順】

バックエンドプールを作成
左側のメニューでバックエンドプールを選択します。
追加を選択します。
バックエンドプールの追加でIP構成にある追加を選択します。
バックエンドプールの対象となる仮想マシンを選択追加します。
バックエンドプール名を入力して保存します。

作成したバックエンドプールを確認できます。

バックエンドプールをターゲットにしたインバウンドNAT規則を作成

ターゲットにバックエンドプールを指定したインバウンドNAT規則を作成します。
フロントエンドポートは範囲で指定します。
バックエンドプール内のマシンの最大数が、インバウンドNAT規則でサポートできる最大の仮想マシン数となります。

【構成イメージ】

【インバウンドNAT規則の設定値】

設定メニュー 設定名 設定値
インバウンドNAT規則 名前 rule-test-02
種類 バックエンドプール
ターゲットバックエンドプール bpool-test-01
フロントエンドIPアドレス fip-comp-test-01
フロントエンドポート範囲の始点 13389
バックエンドプール内のマシン最大数 16
バックエンドポート 3389
プロトコル TCP
フローティングIP 無効

【インバウンドNAT規則設定手順】

フロントエンドポートを変更
左側のメニューでインバウンドNAT規則を選択します。
追加を選択します。
インバウンドNAT規則を追加します。
種類にはバックエンドプールを指定します。
ターゲットバックエンドプールには先ほど作成したバックエンドプールを指定します。
フロントエンドポート範囲の始点、バックエンドプール内のマシン最大数などを設定します。
追加を選択します。
作成したインバウンドNAT規則を確認できます。
フロントエンドポート範囲は13389から13404となっています。
バックエンドプール内の仮想マシン最大数分確保されています。

※仮想マシンを対象としたインバウンドNAT規則(rule-test-01)は事前に削除して手順を確認しています。

仮想マシンへのリモートアクセスに利用するポート番号を確認

仮想マシンへのリモートアクセスに利用するポート番号は、インバウンドNAT規則内のポートマッピングで確認できます。

ポートマッピングを確認
インバウンドNAT規則を選択します。
画面の一番下にポートマッピングが表示されており、割り当てられているフロントエンドポートを確認できます。

ポートマッピングされたポート番号で仮想マシンにリモートデスクトップ接続

仮想マシンに割り当てられたフロントエンドポートを利用して、リモートデスクトップ接続します。

リモートデスクトップ接続

コンピューターに”フロントエンドIPアドレス:ポート番号”を指定します。
それぞれの仮想マシンに払い出しされたフロントエンドポート番号を利用して、リモートデスクトップ接続できることが確認できます。

負荷分散規則とインバウンドNAT規則の違い

バックエンドプールを利用したトラフィック転送には、負荷分散規則とインバウンドNAT規則があります。
バックエンドプール内の特定の仮想マシンにトラフィックを転送する場合には、インバウンドNAT規則を利用します。
負荷分散規則は、トラフィックを均等にバックエンドプールの仮想マシンに転送します。
インバウンドNAT規則は特定のポートへのアクセスをバックエンドプールの仮想マシンに転送します。

—広告—

最後に

Azure ロードバランサーのインバウンドNAT規則を使うと、仮想マシン接続時のポート番号を簡単に変更できることが分かりました。
仮想マシン側での設定変更は必要なく、簡単に設定できて便利だと思いました。
今回は、リモートデスクトップ接続の手順を確認していますが、SSHなどでも同様の設定が可能です。
セキュリティ面では、NSG(ネットワークセキュリティグループ)でアクセス元IPを制限することが基本ですが、併せて使っても良いかもしれません。

引き続き、いろいろ試してみたいと思います。

仮想マシンのネットワークセキュリティグループ設定手順については、こちらで紹介しています。

仮想マシンへのセキュアなアクセス手段としてAzure Bastionがあります。
設定手順から仮想マシンにアクセスするまでの手順を紹介しています。

スポンサーリンク