Azure VMをデフォルトのまま作ると危険なのでちゃんとNSGを設定しましょう

2020-06-12Azure,Network Security Groups,Virtual Machines,Virtual Network

Azure Portalを利用して仮想マシン(Azure VM)を作成する際の、NSG(Network Security Group)のアクセス許可設定に関する注意点です。

Azure Portalを使って仮想マシン作成した場合に適用されるNSGの初期設定値や、仮想マシン作成時のNSG設定変更方法について紹介しています。
仮想マシン作成時の選択内容によってNSGの設定がどのように変化するか、またインターネットなど外部からのアクセス状況についても確認しています。

※Windows Serverの仮想マシンへのRDP(リモートデスクトップ)接続を例に記載しています。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事では、Network Security Group(ネットワークセキュリティグループ)をNSGとして記載しています。

目次 

スポンサーリンク

仮想マシンに適用されるNSGについて

デフォルト設定のまま進めるとどこからでも仮想マシンにアクセスできてしまう?

今回は、Azure Portalを利用して仮想マシン作成する場合の、NSG設定に関する注意点や設定方法を紹介しています。

Azure Portalでデフォルト設定のまま仮想マシンの作成を進めると、インターネットから直接アクセス可能なパブリックIPリソースが自動で作成されます。
このパブリックIPリソースは仮想マシンのネットワークインターフェースに割り当てられます。
デフォルト設定の場合、仮想マシンと同時にNSGも自動で作成・適用されます。
仮想マシンに適用されたNSGの受信セキュリティ規則によっては、インターネットからのアクセスが許可される場合があります。

具体的には、仮想マシンへのRDP(リモートデスクトップ)やSSHのアクセスを許可する受信セキュリティ規則が自動作成されます。
デフォルト設定のまま進めると許可元のIPアドレスが"Any"となる場合があります。

受信セキュリティ規則のアクセス元が"Any"で許可されている場合、インターネット上の任意の場所からアクセス可能な状態となり、不正アクセスや悪意のある攻撃を受けるリスクが高まります。

NSGって何?

NSG(ネットワークセキュリティグループ)は、Azureで通信の許可や拒否を設定する、ファイアウォールのようなサービスです。
仮想マシンのインバウンド通信(受信)やアウトバウンド通信(送信)のアクセス制御などに利用できます。

Azure ネットワーク セキュリティ グループの概要

NSGには受信セキュリティ規則と送信セキュリティ規則があり、優先度(数値が小さいほど優先)の順に評価されます。
カスタム規則の優先度は100~4096の範囲で設定でき、条件に一致する規則が見つかった時点でそれ以降の規則は評価されません。

なお、各NSGにはあらかじめ既定の規則(デフォルトルール)が用意されています。
インターネットからの受信はDenyAllInBound(優先度65500)によって拒否されています。
逆に仮想マシンからインターネットへの送信については、AllowInternetOutBound(優先度65001)によって許可されています。

NSGの概要から設定例については、こちらの記事で紹介しています。

仮想マシンに適用されるNSGはサブネットとネットワークインターフェースの2つ

仮想マシンに適用されるNSGは2種類あります。

    • 仮想マシンが接続しているサブネットに適用されるNSG
    • 仮想マシンのネットワークインターフェースに適用されるNSG

どちらか1つのみを利用することも、両方を利用することもできます。
サブネットとネットワークインターフェースの両方にNSGを適用した場合は、両方のNSGで受信セキュリティ規則や送信セキュリティ規則によって通信が許可されている必要があります。
サブネットのNSGとネットワークインターフェースのNSGの両方を通過できて初めて仮想マシンに到達できます。

サブネット
(受信セキュリティ規則)
ネットワークインターフェース
(受信セキュリティ規則)
仮想マシンへのアクセス
アクセス許可 アクセス許可 アクセス可能
アクセス不可 アクセス不可
アクセス不可 アクセス許可 アクセス不可
アクセス不可 アクセス不可

仮想マシン作成時のネットワークインターフェースのネットワークセキュリティグループの設定で"なし"を選択した場合、ネットワークインターフェースにはNSGが適用されない状態となります。
この場合、仮想マシンが属するサブネットのNSGのみが適用されます。

サブネット
(受信セキュリティ規則)
ネットワークインターフェース
(受信セキュリティ規則)
仮想マシンへのアクセス
アクセス許可する NSGの適用無し アクセス可能
アクセス許可しない アクセス不可

※サブネットにもネットワークインターフェースにもNSGを設定していない場合、仮想マシンに対するNSGが存在しない状態となります。

アウトバウンド通信の場合はプライベートサブネット(Azure Private Subnet)も影響する

プライベートサブネット(Azure Private Subnet)は、サブネットに対して既定の送信アクセス(default outbound access)を無効にする設定です。
NSGの設定に関係なく、仮想マシンからインターネットへのアクセスを制限することができます。
なお、受信アクセスについては影響を受けません。

プライベートサブネット(Azure Private Subnet)については、こちらの記事で紹介しています。

Azure Portalでデフォルト設定のまま仮想マシンを作成した場合のNSG設定内容

Azure Portalを使って仮想マシンをデフォルト設定のまま作成し、同時に作成されたNSGの設定内容を確認します。

仮想マシン作成時に設定するネットワーク関連のリソース

仮想マシン作成時には、仮想マシンで利用するネットワーク関連のリソースを設定します。
新規作成だけでなく、既存のリソースを選択することもできます。
主にネットワークタブで以下の項目について設定を行います。

    • ネットワークインターフェース
      • 仮想ネットワーク
      • サブネット
      • パブリックIP
      • NIC ネットワークセキュリティグループ
      • パブリック受信ポート
    • 負荷分散

NICネットワークセキュリティグループが、ネットワークインターフェースに適用するNSGを指定する設定になります。

※仮想マシンと同時に作成されるリソースには、ディスク(Managed Disks)なども含まれます。

仮想マシンと同時にパブリックIPのリソースが新規作成される

Azure Portalを使って仮想マシンを作成する場合、デフォルト設定のまま進めると新規のパブリックIP(仮想マシン名-ip)が選択された状態になっています。

既存のパブリックIPリソースが存在するかどうかに関わらず、新規作成がデフォルト値として選択されています。
作成されたパブリックIPアドレスのリソースは、ネットワークインターフェースにアタッチされます。
そのため、インターネットから仮想マシンへのアクセスがNSGで許可されている場合、パブリックIPを利用して仮想マシンにアクセスできる状態となります。

※記事記載時点では、新規作成の場合、自動的にStandard SKUのパブリックIPが作成されます。Standard SKUのパブリックIPの場合、NSGで明示的に許可した通信のみが仮想マシンに到達します。

Azure Portalを使って仮想マシンを作成する場合のNSG設定手順

Azure Portalを使って仮想マシンを作成する場合、NSGに関連する設定は2か所あります。
基本タブとネットワークタブに設定項目があります。

    • 基本タブ
      • パブリック受信ポート(受信ポート)
        • インターネットからのアクセスを許可するポートを指定
    • ネットワークタブ
      • 仮想ネットワーク、サブネット
        • 仮想マシンのネットワークインターフェースを接続するサブネットを指定
      • パブリックIP
        • ネットワークインターフェースに割り当てるパブリックIPアドレスのリソースを指定
      • NICネットワーク セキュリティグループ
        • ネットワークインターフェースに割り当てるNSGを指定
      • パブリック受信ポート
        • インターネットからのアクセスを許可するポートを指定

パブリック受信ポートは選択したポートを許可するとなっており、Windows仮想マシンの場合は受信ポートにRDP(3389)が選択された状態となっています。
また、パブリック受信ポートの設定に応じて、NICネットワークセキュリティグループで割り当てられるNSGの設定が決まります。
パブリック受信ポートで選択したポートが、NSGでも許可された状態となります。

※なお、デフォルトの選択肢のまま進めると、仮想ネットワーク、サブネット、パブリックIP、NSGリソースが新規作成されます。

仮想マシンを作成する際のNSGに関する設定箇所

基本タブにパブリック受信ポートの設定があります。
選択したポートを許可するを選択すると、インターネットからのアクセスを許可するNSGが作成されます。

デフォルト状態ではパブリック受信ポートの設定が、選択したポートを許可するになっています。
Windows仮想マシンの場合は、受信ポートにRDP(3389)が選択されています。

 

基本タブの受信ポートの規則例(仮想マシンをAzure Portal使って作成した場合のNW設定)
選択できる受信ポート(仮想マシンをAzure Portal使って作成した場合のNW設定)

ネットワークタブには、パブリックIP、NICネットワークセキュリティグループ、パブリック受信ポートの設定があります。
デフォルトでは、パブリックIPを新規作成する設定となっています。
NICネットワークセキュリティグループは、Basicが選択されています。
パブリック受信ポートは、基本タブと同じ設定が選択されています。

NWタブのデフォルト設定例(仮想マシンをAzure Portal使って作成した場合のNW設定)

※Azure Portal上にセキュリティに関する注意喚起のメッセージが表示されます。

デフォルト設定のまま仮想マシン作成した場合のNSGの受信セキュリティ規則

デフォルトの選択肢のままで仮想マシンを作成した場合、NSGとパブリックIPアドレスのリソースが新規に作成されます。
仮想マシンのネットワークインターフェースにパブリックIPアドレスが割り当てられ、NSGではインターネットからのアクセスが許可されています。
その結果、インターネットから仮想マシンにアクセス可能な状態となっていることが確認できます。
いつ不正アクセスを受けてもおかしくない、セキュリティ上非常に危険な状態であることが分かります。

新規作成されたNSGの設定
受信セキュリティ規則にRDPという名前でルールが作成されています。
RDP(3389)に対して、任意の場所からアクセスを許可する規則が作成されています。
デフォルト設定のまま進めた場合のNSG設定例(仮想マシンをAzure Portal使って作成した場合のNW設定)
また、ネットワークインターフェースにパブリックIPアドレスのリソースが割り当てられていることを確認できます。

Rocky Linuxを例にした仮想マシンの初期設定手順については、こちらで紹介しています。

—広告—

Azure Portalで仮想マシン作成する場合にNSG設定を変更する方法

仮想マシン作成時にNSGの設定を変更する方法について確認します。

パブリック受信ポートの設定でなしを選択した場合

仮想マシン作成時の基本タブには、パブリック受信ポートという項目があります。
この項目は、インターネットなど外部からアクセス許可するポートの設定を行うものです。
ネットワークタブにあるパブリック受信ポートのデフォルト値を決定し、最終的にはネットワークタブでの設定が反映されます。
パブリック受信ポートで選択したポートが、NSGでも許可された状態となります。

パブリック受信ポートで選択したポートが、NSGの受信ポートの規則として許可される状態になります。
そのため、パブリック受信ポートで"なし"を選択した場合、NSGで該当する受信ポートの規則は新規作成されません。
したがって、ネットワークインターフェースにパブリックIPアドレスのリソースを割り当てた場合でも、仮想マシンにインターネットからアクセスできない状態となります。

なお、パブリック受信ポートを"なし"にした場合でも、NSG自体は新規作成されます。

パブリック受信ポートでなしを選択した場合

基本タブの受信ポートの規則で"なし"を選択します。
ネットワークタブのパブリック受信ポートも"なし"が選択されています。

このまま仮想マシンの作成を進めると、新規にNSGが作成されます。
受信セキュリティ規則はデフォルト規則のみとなります。

受信のポート規則に許可設定がないためインターネットから仮想マシンへのアクセスはできない状態となります。
なお、既定の規則(デフォルトルール)により、も仮想ネットワーク内でのアクセスは可能です。

パブリック受信ポートでなしを選択(仮想マシンをAzure Portal使って作成した場合のNW設定)
NICネットワークセキュリティグループでBasicを選択(仮想マシンをAzure Portal使って作成した場合のNW設定)
仮想マシンのNICに割り当てられたNSGの受信ポートの規則(仮想マシンをAzure Portal使って作成した場合のNW設定)

NICネットワークセキュリティグループの選択肢で詳細を選択して受信規則を変更

NICネットワークセキュリティグループで詳細を選択すると、ネットワークセキュリティグループの構成項目が表示されます。
ネットワークセキュリティグループの構成の設定から、ネットワークインターフェースに割り当てるNSGの設定を変更することができます。
NSGの受信セキュリティ規則を削除したり、新規に作成したりすることができます。

今回はパブリックIPアドレスを仮想マシンに割り当てる想定としていますが、この設定は推奨されません。
セキュリティの観点から、仮想マシンにパブリックIPアドレスを割り当てず接続する方法(Azure Bastionを利用する方法)が推奨されています。

NICネットワークセキュリティグループで詳細を選択した場合

NICのネットワークセキュリティグループで詳細を選択します。
ネットワークセキュリティグループの構成という設定項目が表示されます。
新規作成を選択します。

NICネットワークセキュリティグループで詳細を選択しNSGを新規作成(仮想マシンをAzure Portal使って作成した場合のNW設定)

ネットワークセキュリティグループの作成画面が表示されます。
default-allow-rdpという受信規則が、優先度1000で作成されています。
受信規則の設定内容を確認すると、ソースがAnyの状態でRDP(3389)へのアクセスが許可されています。

※パブリック受信ポートの設定で"なし"を選択した場合でも、受信規則は作成されています。

 

 

NSGにデフォルトで作成されている受信規則(仮想マシンをAzure Portal使って作成した場合のNW設定)
NSGにデフォルトで作成されている受信規則の設定内容(仮想マシンをAzure Portal使って作成した場合のNW設定)

default-allow-rdpを削除します。
なお、default-allow-rdpの受信規則自体を編集することも可能です。
この場合は受信規則のルール名を変更することはできません。

受信規則の追加を選択します。
ソースにIPアドレスを選択し、受信を許可するIPアドレスを設定します。
サービスにRDPを選択します。
優先度と名前を設定し、追加します。
受信規則の設定を確認し保存します。

※ソースでMy IP addressを選択すると、現在Azure PortalにアクセスしているIPアドレスを指定できます。
※優先度は1000以外の値に設定します。1000を指定した場合、既存のルールと同じためエラーメッセージが表示されます。

 

NSGにデフォルトで作成されている受信規則を削除(仮想マシンをAzure Portal使って作成した場合のNW設定)
受信規則を追加(仮想マシンをAzure Portal使って作成した場合のNW設定)
RDPを許可する受信規則を新規作成(仮想マシンをAzure Portal使って作成した場合のNW設定)
新規作成したRDPの受信規則(仮想マシンをAzure Portal使って作成した場合のNW設定)
ネットワークセキュリティグループの構成設定例(仮想マシンをAzure Portal使って作成した場合のNW設定)
作成したNSGの設定を確認します。
受信ポート規則に、設定した内容でルールが追加されていることを確認できます。
仮想マシンに割り当てられたNSGの設定画面例(仮想マシンをAzure Portal使って作成した場合のNW設定)

NICネットワークセキュリティグループの設定でなしを選択した場合

NICのネットワークセキュリティグループで"なし"を選択した場合、NSGは新規作成されません。
仮想マシンは、NSGがネットワークインターフェースに関連付けられていない状態で作成されます。
この場合、サブネットに関連付けられているNSGのみが適用されます。

※サブネットにもNSGが適用されていない場合は、仮想マシンにはNSGがまったく適用されていない状態となります。

NICネットワークセキュリティグループの設定でなしを選択した場合

NICネットワークセキュリティグループの設定で"なし"を選択した場合、ネットワークインターフェースにNSGは割り当てられません。

パブリックIPアドレスの有無に関わらず、NSGが自動的に作成されたり、ネットワークインターフェースに割り当てされることはありません。

 

NICネットワークセキュリティグループでなしを選択した場合の画面例(仮想マシンをAzure Portal使って作成した場合のNW設定)
NICネットワークセキュリティグループでなしを選択した場合の画面例(仮想マシンをAzure Portal使って作成した場合のNW設定)
NICネットワークセキュリティグループでなしを選択した場合の仮想マシンのネットワーク設定例(仮想マシンをAzure Portal使って作成した場合のNW設定)

ネットワークインターフェースに既存のNSGを割り当てる場合

既存のNSGを割り当てる場合は、NICネットワークセキュリティグループの設定で詳細を選択します。
ネットワークセキュリティグループの構成画面で既存のNSGリソースを選択します。
なお、割り当てるNSGは、仮想ネットワークと同じリージョンである必要があります。

既存のNSGを割り当てる場合
NICネットワークセキュリティグループの設定で詳細を選択し、ネットワークセキュリティグループの構成画面で、ネットワークインターフェースに割り当てたいNSGリソースを選択します。 仮想マシンのネットワークインターフェースに既存のNSGを割り当てる場合(仮想マシンをAzure Portal使って作成した場合のNW設定)

仮想マシン作成時のNICネットワークセキュリティグループ選択肢ごとのNSG設定内容

仮想マシン作成時のNICネットワークセキュリティグループの設定値と、ネットワークインターフェースに割り当てられるNSGの関係です。
なしを選択しない場合は、仮想マシンのネットワークインターフェースにNSGが割り当てられます。

選択肢 NSGの設定状態
なし NSGのリソース : 作成されない
受信のセキュリティ規則 : NSGのリソースが作成されない
ネットワークインターフェースへのNSG割り当て : されない
Basic パブリック受信ポート:なし

NSGのリソース : 新規作成される
受信のセキュリティ規則 : 作成されない
ネットワークインターフェースへのNSG割り当て : 割り当てされる

パブリック受信ポート:あり

NSGのリソース : 新規作成される
受信のセキュリティ規則 : 作成される
ネットワークインターフェースへのNSG割り当て : 割り当てされる

作成された受信セキュリティ規則は、すべてのアドレスからのアクセスが許可されていた状態となっている。

詳細 新規作成でネットワークセキュリティグループの構成を変更しない場合

NSGのリソース : 新規作成される
受信のセキュリティ規則 : 作成される
ネットワークインターフェースへのNSG割り当て : 割り当てされる

作成された受信セキュリティ規則は、すべてのアドレスからのアクセスが許可されていた状態となっている。

新規作成でネットワークセキュリティグループの構成を変更した場合(受信規則の設定を変更)

NSGのリソース : 新規作成される
受信のセキュリティ規則 : 作成される
ネットワークインターフェースへのNSG割り当て : 割り当てされる

作成された受信セキュリティ規則は、設定した内容が反映されている。

既存のNSGのリソースを選択した場合

NSGのリソース : 作成されない
受信のセキュリティ規則 : 作成されない
ネットワークインターフェースへのNSG割り当て : 割り当てされる

ネットワークインターフェースに割り当てたNSGの設定内容が反映される。

仮想マシン、サブネットに適用されているNSGが存在しない場合のネットワークアクセス挙動

仮想マシンのネットワーク インターフェイス、仮想マシンが接続されている仮想ネットワークのサブネットのいずれにもNSGが関連付けられていない場合、その仮想マシンにはNSGは適用されていない状態となります。

この状態で、仮想マシンのネットワークインターフェースにパブリック IP アドレスが関連付けられている場合、インターネットから仮想マシンへの受信アクセスはできません。
インターネットからのアクセスを許可するには、ネットワークインターフェースもしくはサブネットにNSGを関連付け、受信許可規則を追加する必要があります。

一方、仮想ネットワーク内の通信(プライベートIPアドレスによる通信)は、NSG によって制限されません。
そのため、ネットワークインターフェースにNSGが適用されていない場合でも、アクセスすることができます。

※ただし、Azure Firewall、仮想マシンのOS自体のファイアウォールなど、NSG以外の要因により通信が拒否される場合があります。
※Standard SKUのパブリックIPアドレスの場合です。Basic SKUのパブリックIPの場合は、NSGで明示的に受信拒否しない限りインターネットからのアクセスが許可された状態となります。
※Basic SKUのパブリックIPは2025年9月30日に廃止されており、新規作成できません。

送信のセキュリティ規則はどうなっているの?

既定の規則(デフォルトルール)では、仮想マシンからインターネットへの送信(アウトバウンド通信)は、Anyで許可された状態となっています。
そのため、仮想マシンからインターネットにアクセスできる状態となっています。

ただし、プライベートサブネット(Azure Private Subnet)が有効化されている場合、NSGの設定に関係なく、仮想マシンからインターネットへのアクセスは制限されます。
明示的なアクセス手段(たとえばNAT Gatewayや他のプロキシ)を割り当てない限り、インターネットにはアクセスできません。

プライベートサブネット(Azure Private Subnet)については、こちらの記事で紹介しています。

—広告—

最後に

今回は、Azure Portalを使用して仮想マシンを作成した場合のネットワーク設定について確認しました。
デフォルト設定のまま進めると、インターネットから仮想マシンへのアクセスが許可され、セキュリティリスクが高い状態となる場合があることが分かりました。

AzureのグローバルIPアドレスは公開されており、常にアクセスを試みる攻撃者が存在します。
インターネットからのアクセスを許可したままにすると、不正なアクセスを受ける可能性があります。
そのため、余程の条件がない限り、外部からのアクセスは必要最低限に制限することが必須になります。

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

また、直接パブリックIPアドレスを割り当てることもセキュリティリスクを高めることになるため、Azure Bastionの利用を検討します。
Azure Bastionについては、こちらで紹介しています。

Azure LBを利用したRDPのポート番号変更手順については、こちらで紹介しています。

プライベートサブネットを利用している場合、仮想マシンからインターネットへのアクセスには明示的にアクセス手段を割り当てる必要があります。
その方法の1つとしてNATゲートウェイがあります。
NATゲートウェイの概要や作成手順については、こちらで紹介しています。

Rocky Linuxの仮想マシンを例に、初期設定した方が良い項目や手順についてこちらで紹介しています。
初期ユーザーのsudo権限剥奪や、ログイン試行回数の制限などの手順を掲載しています。

Linuxの仮想マシンでは、パスフレーズ付きの鍵認証が推奨されています。
SSHキーを使用した仮想マシンの作成手順については、こちらで紹介しています。

スポンサーリンク