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

2020-06-12Azure,Network Security Group,Virtual Machine

Azure Portalを利用して仮想マシン(Azure VM)を作成した場合に、注意すべきNSG(ネットワークセキュリティグループ(Network Security Group))のアクセス許可設定についてのまとめです。
仮想マシンに適用されるNSG、初期選択肢のまま作成した場合のNSGの状態、仮想マシン作成時のNSG設定変更方法について記載しています。

仮想マシンを新規作成と同時にNSGを作成する場合は注意が必要です。
デフォルトの選択肢のまま作成を進めるとインターネットから直接アクセス可能なパブリックIPアドレスが作成され仮想マシンに割り当てられます。
NSGも同時に作成した場合に、NSGの受信セキュリティ規則でインターネットからアクセス許可される場合があります。

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

仮想マシン作成直後のNSGの設定状態を確認するところから、NSGの設定を変更する手順についてまとめていきます。

※2022年7月に記事を修正、再編集しています。
※Windows ServerのRDP(リモートデスクトップ)を例に記載しています。
※記事内ではネットワークセキュリティグループ(Network Security Group)をNSGとして記載しています。
※本記事は仮想マシンにNSGを適用する場合を対象にしています。

スポンサーリンク

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

NSGって何?

Azureで接続許可や拒否設定を行うファイアウォール的なサービスです。
仮想マシンのインバウンド通信やアウトバウンド通信のアクセス制御等に利用できます。
NSGの説明についてはこちらに纏めていますので併せて見て頂けると有難いです。

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

仮想マシンに適用されるNSGは2つです。
どちらか1つでも利用できます。

      • 所属するサブネットに適用されたNSG
      • ネットワークインターフェースに適用されたNSG

2つとも適用した場合には両方のNSGで受信セキュリティ規則や送信セキュリティ規則で通信許可が必要になります。

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

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

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

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

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

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

プライベートサブネット(Azure Private Subnet)についてはこちらに纏めています。

※2023年11月時点ではプレビュー機能となっています。

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

Azure Portalで仮想マシンをデフォルト設定のまま作成して確認します。

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

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

    • 仮想ネットワーク
    • サブネット
    • パブリックIP
    • NSG

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

パブリックIPが新規作成される

新規のパブリックIP(仮想マシン名-ip)が選択された状態となっています。
既存のパブリックIP存在有無関わらず新規作成がデフォルト選択になります。
パブリックIPを利用してインターネットから仮想マシンへアクセス出来る状態となります。

※セキュリティ的にはNSGの設定よりもパブリック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のセキュリティ規則を確認します。

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

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

Rocky Linux 8を例に仮想マシンの初期設定手順をこちらに纏めています。
併せて見て頂けると有難いです。

—広告—

仮想マシン作成時の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を適用していない場合は無い状態になります。

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

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

パブリックIPの挙動の違いについて

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

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

詳細は公式サイトのセキュリティの項目に記載があります。

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

まとめ

NICネットワークセキュリティグループ設定による違い

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

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

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

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

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

詳細 変更しない

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

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

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

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

仮想マシン作成時にデフォルトのまま進まない方が良さそうなもの

Azure Portalで仮想マシン作成時に気を付けるべきデフォルト値はNSG以外にもあります。

      • ディスクがPremium SSDで作成される
        • 高いディスクが選択される
      • パブリックIPが作成される
        • インターネットから直接アクセスする必要がない場合でも作成される
      • 自動シャットダウンが有効になっている
        • 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 8を例にsudo権限はく奪などの初期設定した方が良さそうなものの項目や手順を纏めています。

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

スポンサーリンク