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

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

Azure Portalを利用して仮想マシン(Azure VM)を作成する際の、NSG(Network Security Group)のアクセス許可設定に関する注意点です。
仮想マシンに適用されるNSGの初期設定や、仮想マシン作成時のNSG設定変更方法について紹介しています。

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

具体的には、仮想マシンへのRDP(リモートデスクトップ)やSSHのアクセスを許可する受信セキュリティ規則が作成されます。
作成された受信セキュリティ規則のアクセス元が"Any"で許可されている場合、インターネット上の任意の場所からアクセス可能な状態となり、不正アクセスや悪意のある攻撃を受けるリスクが高まります。

仮想マシン作成直後のNSGの設定状態を確認する方法や、NSGの設定を変更する手順について紹介しています。

※Windows Serverの仮想マシンへのRDP(リモートデスクトップ)接続を例に記載しています。
※本記事では、Azure Virtual Machines(Azure VM)を仮想マシンとして表記しています。
※本記事では、Network Security Group(ネットワークセキュリティグループ)をNSGとして記載しています。
※主にNSGの受信セキュリティ規則に関する内容を紹介しています。
※主に仮想マシンのネットワークインターフェースにNSGを適用する場合を対象に紹介しています。

目次 

スポンサーリンク

仮想マシンに適用されるNSG(ネットワークセキュリティグループ)について

NSGって何?

NSGは、Azureで接続許可や拒否の設定を行うファイアウォールのようなサービスです。
仮想マシンのインバウンド通信やアウトバウンド通信のアクセス制御などに利用できます。
NSGの概要から設定例については、こちらの記事で紹介しています。

仮想マシンに適用されるNSGは2つ

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

    • 仮想マシンのサブネットに適用されるNSG
    • ネットワークインターフェース自体に適用されるNSG

どちらか1つのみを利用することも、両方を利用することもできます。
2つとも適用した場合は、両方のNSGで受信セキュリティ規則や送信セキュリティ規則によって通信が許可されている必要があります。

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

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

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

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

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

プライベートサブネット(Azure Private Subnet)は、インターネットへのアウトバウンド通信を拒否します。
NSGの設定に関係なく、仮想マシンからインターネットへのアウトバウンド通信を制限することができます。

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

※2023年11月時点では、プライベートサブネット(Azure Private Subnet)はプレビュー機能です。

デフォルト設定のまま仮想マシンを作成してNSGの設定内容を確認

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

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

仮想マシン作成時には、いくつかのネットワーク関連リソースを指定します。
主にネットワークのタブで、設定します。

    • 仮想ネットワーク
    • サブネット
    • パブリックIP
    • NSG
    • 負荷分散

※新規作成だけでなく、既存のリソースも選択できます。
※仮想マシンと同時に作成されるリソースには、ディスク(Managed Disks)なども含まれます。

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

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

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

仮想マシン作成時にNSGを設定する箇所は2か所あります。
基本タブとネットワークタブに設定箇所があります。
Windowsの場合はRDP(3389)、Linuxの場合はSSH(22)が受信ポートのデフォルト選択値となります。

仮想マシン作成時のNSG設定箇所

基本タブで受信ポートを選択できます。
インターネットからのアクセスを許可するポートを指定します。Windowsの場合は、デフォルトでRDP(3389)が選択されています。

仮想マシン作成時のNSG設定箇所(基本タブ)

ネットワークタブにも設定箇所があります。
NICネットワークセキュリティグループは、NSGの設定有無や選択に関する項目です。
デフォルトではBasicが選択されています。
パブリック受信ポートは、基本タブと同様にアクセスを許可するポートの選択項目となります。
デフォルトではRDP(3389)(基本タブでの選択値)が選択されています。

仮想マシン作成時のNSG設定箇所(ネットワークタブ)

※Azure Portal上に注意喚起のメッセージが表示されます。

作成されたNSGの受信セキュリティ規則を確認

デフォルトの選択値のままで仮想マシンを作成した場合、NSGが新規作成されます。
新規作成されたNSGのセキュリティ規則を確認します。

受信セキュリティ規則、送信セキュリティ規則
受信セキュリティ規則にRDPという名前でルールが作成されています。
RDP(3389)に対して、任意の場所からアクセスを許可する規則が作成されています。
仮想マシン(Azure VM)のNSG初期設定状態(デフォルト作成時)

デフォルト値のままで仮想マシンを作成すると、どこからでもアクセスできる状態になることが分かります。
セキュリティ上非常に危険な状態であることが分かりました。

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

—広告—

仮想マシン作成時にNSGの設定を変更する方法

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

ネットワークタブの受信ポートの規則で設定を変更

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

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

受信ポートの規則で設定を変更

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

このまま仮想マシンの作成を進めると、新規にNSGが作成されます。
受信セキュリティ規則はデフォルト規則のみとなります。
許可設定がないためインターネットから仮想マシンへのアクセスはできない状態となります。

Azure VM作成時の受信のポート制限画面(基本タブ)
Azure VM作成時の受信のポート制限画面(ネットワークタブ)
パブリック受信ポートをなしにした場合のNSG設定

NICネットワークセキュリティグループの設定で受信規則を変更

NICのネットワークセキュリティグループで詳細を選択すると、NSGを新規作成したり、受信セキュリティ規則を作成することができます。
デフォルトルールが作成されているため、これを削除した後に受信規則を追加または変更して設定します。

※ネットワークセキュリティグループの構成では、既存のNSGを選択することもできます。

受信規則の設定を変更

NICネットワークセキュリティグループで詳細を選択します。
ネットワークセキュリティグループの構成で新規作成を選択します。

NICセキュリティグループの設定画面(詳細選択時)

ネットワークセキュリティグループの作成画面が表示されます。
default-allow-rdpという受信規則が、優先度1000で作成されています。
削除した後に受信規則を追加するか、デフォルトで作成されている受信規則を選択します。

※ルール名を変更したい場合は、一度削除した後に受信規則を新規に追加します。

NSG設定画面(仮想マシンと同時作成時)

ソースをIP Addressesに変更します。
自身が仮想マシンへアクセスするIPアドレスを入力します。
ソースでMy IP addressを選択することで、現在利用しているIPアドレスを指定できます。
利用したい特定のIPアドレスがある場合は、そのIPアドレスを設定します。

優先度は1000以外の値に変更します。
1000に設定すると、既存のルールと同じというエラーメッセージが表示されます。

受信規則が変更されていることを確認し、OKを選択します。

NSG設定画面(デフォルトルールを設定変更)
NSG設定画面(受信規則セキュリティ規則を変更)
作成されたNSGを確認します。
受信セキュリティ規則に変更内容が反映されていることを確認できます。
NSG設定画面(設定変更反映後の受信セキュリティ規則)

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

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

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

NICネットワークセキュリティグループの設定でなしを選択
なしを選択した場合、NSGは作成されません。

NICネットワークセキュリティグループでなしを選択

NSGが存在しない場合のアクセス挙動はパブリックIPのSKUにより異なる

NSGが存在しない場合の挙動は、パブリックIPのSKUによって異なります。

    • パブリックIPのSKUがStandardの場合
      • アクセスできない。
      • 明示的にNSGで許可設定が必要
    • パブリックIPのSKUがBasicの場合
      • アクセスできる
      • 明示的にNSGで拒否設定が必要

詳細については、公式サイトのセキュリティの項目に記載されています。

SKU(パブリック IP アドレス)

—広告—

まとめ

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

仮想マシン作成時のNICネットワークセキュリティグループの設定値とNSGの関係です。

NIC ネットワーク セキュリティ グループ NSG作成状況
なし NSGは作成されない
Basic パブリック受信ポート:なし

NSGは作成される
インターネットからの受信セキュリティ規則は作成されない

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

NSGは作成される
インターネットからの受信セキュリティ規則が作成される(すべてのアドレスからのアクセスが許可される)

詳細 変更しない

NSGは作成される
インターネットからの受信セキュリティ規則が作成される(すべてのアドレスからのアクセスが許可される)

新規作成でセキュリティ規則を変更

NSGは作成される。
変更したセキュリティ規則内容が反映される

※NSGがない場合のアクセス挙動は、パブリックIPのSKUによって異なります。

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

送信のセキュリティ規則は、インターネットへの"Any"が許可された状態となっています。
セキュリティ要件に応じて、アクセスを拒否する送信セキュリティ規則を新規に作成します。

デフォルトで作成されている送信のセキュリティ規則は変更できません。
必要に応じてアクセス拒否の送信セキュリティ規則を追加する必要があります。

Azure Portal使って仮想マシン作成場合にデフォルト値のまま進まない方が良さそうなもの

Azure Portal使って仮想マシンを作成する際に注意すべきデフォルト値は、NSG以外にもいくつかあります。

    • ディスクにPremium SSDが選択されている
      • 仮想マシンの重要度やSLA問わず高いディスクが選択される
    • パブリックIPのリソースが新規作成される
      • 仮想マシンごとに新規にパブリックIPアドレスのリソースが新規作成される
      • インターネットからのアクセスが必要ない場合も新規策される
    • 自動シャットダウンがUTCで有効化されている
      • デフォルトでは、UTCで19時(日本時間午前4時)に自動シャットダウンする

検証などで利用する場合、Premium SSDほどの性能が不要なケースもあります。
そのような場合は、Standard SSDやStandard HDDを選択することでコスト削減が可能です。
ただし、仮想マシンのSLAは、選択したManaged Diskの種類に依存するため注意が必要です。

仮想マシンに直接パブリックIPを付与するかどうかも慎重に検討するべきです。
インターネットから仮想マシンへのアクセス方法として、Bastionなどの利用も検討します。
仮想マシンからインターネットへのアクセスについては、NATゲートウェイやプライベートサブネットの利用も併せて検討します。

検証環境などで不要な起動状態を防ぐために、自動シャットダウンを設定しておくことは有効です。
ただ、自動シャットダウンの時刻はデフォルトでUTCになっているため、日本時間など利用環境に合わせて再設定した方がよいかと思います。

仮想マシンでインターネットからのアクセスを許可した状態にすると不正アクセスされます

自身の経験ですが、NSGでインターネットからのRDPを許可しておくと、仮想マシンに対して約5分後から辞書攻撃のようなアクセスが始まりました。
AzureのグローバルIPは公開されており、常にアクセスを試みる攻撃者が存在します。

検証環境などで、デフォルト値のままインターネットからのアクセスが許可されている仮想マシンを見かけることがありますが、攻撃を受けてから後悔しても手遅れです。
許可すべき明確な要件がない限り、アクセス元のIPアドレスは必ず制限するべきかと思います。

NATゲートウェイの概要から作成手順については、こちらで紹介しています。

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

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

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

スポンサーリンク