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

2020-06-12

Azure Portalを使って仮想マシン(VM)をそのまま作成すると、外部(インターネット)からのRDPやSSHアクセスが許可された状態になります。

仮想マシンに対するアクセス制御はNSG(ネットワークセキュリティグループ)で行われます。NSGはAzureで接続許可や拒否設定を行うものになります。

ネットワークセキュリティグループ(公式サイト)

Azure VM作成をPortalのデフォルト値通り何も変更せずに進めるとNSGやパブリックIPが自動生成されます。

      • パブリックIPが自動生成される
      • ネットワークインターフェースにNSGが作成される
      • 作成されるNSGはインターネットにAnyでRDPやSSHが許可(受信)された状態

結果、インターネットから”誰でも”仮想マシンにアクセスできる状態になります。

AzureのパブリッククラウドのグローバルIPに対しては、作成した瞬間から不正なアクセスが来ます。インターネットからのアクセスをすべて許可した状態で放置する事は非常に危険な状態になります。

今回は、実際にやってみて、メッセージが表示される意味や、VM作成作業中に接続許可IPを指定する方法を確認してみました。

※2021年8月に少し更新しています。

スポンサーリンク

デフォルト値のまま仮想マシン(VM)を作成した場合のNSG(ネットワークセキュリティグループ)設定

Azure Portalでデフォルト値のままWindowsの仮想マシン(VM)作成を作成してみて、ネットワークセキュリティグループに関する設定箇所や作成される内容を確認します。

まず基本画面で受信ポートの規則という以下の項目が表示されます。デフォルトは選択したポートを許可するにチェックが入ってます。デフォルトでは3389を受信ポートとして許可する設定になっています。

次にネットワーク画面でも同様の画面が表示されます。こちらの画面ではNICネットワークセキュリティグループという項目が表示されています。

デフォルトはBasicを選択されてます。またパブリック受信ポートは選択したポートを許可するが選択されています。

この設定のまま仮想マシン(VM)を作成します。仮想マシンのネットワークで受信ポートの規則を確認してみました。

一番優先度が高い受信規則として任意のソースからRDP許可する設定が作成されていました。

このようにデフォルト値のまま仮想マシンを作成すると、RDPでどこからでもアクセスできる状態になり非常に危険な状態になる事がわかりました。

仮想マシン(VM)作成時にNSG(ネットワークセキュリティグループ)設定を変更

仮想マシン(VM)作成時のNSG設定変更方法確認してみました。

Azure Portalで仮想マシンを作成する場合の基本画面で受信ポートの規則という項目があります。

こちらの設定では、パブリック受信ポートを作成するかしないか。受信ポートを選択する設定が出来ます。受信接続元のIPを指定する設定はありません。以下の設定で進めます。

      • インターネットからのアクセスを許可する場合
        • パブリック受信ポート:選択したポートを許可する
        • 受信ポートを選択:RDP(3389)(Windowsの場合)

仮想マシン作成の項目にネットワークという項目があり、仮想マシンのネットワークインターフェース設定が出来ます

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

ネットワークセキュリティグループの設定画面が表示されます。受信規則に1000:default-allow-rdpという項目がありますのでクリックします。

default-allow-rdpという受信規則の設定画面が表示されます。

ソースがAnyになっていますのでIP Addressesに変更します。ソースIPアドレスが表示されます。自身が仮想マシンへアクセスするIPアドレスを入力します。自身のIPアドレスは、CMAN(IPアドレス確認)等のサイトで確認します。

IPアドレスを入力したら保管します。特定のIPからのみアクセス可能なネットワークセキュリティグループ(NSG)が作成されます。仮想マシン作成後にメニューでネットワークを選択し受信規則を確認してみます。

設定したIPアドレスのみからアクセス可能なNSGになっている事が確認出来ました。

NICネットワークセキュリティグループでBasicを指定するとパブリック受信ポートの有無を選択する事が出来ます。なしを選択する事も可能です。

なしを選択するとこのように受信規則は作成されません。そのためインターネットからのアクセスは出来ない状態になります。(パブリックIP作成有無に関わりません。)

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

仮想マシン作成時のNSG(ネットワークセキュリティグループ)設定を整理してみます。

デフォルト値のまま進めるとNICネットワークセキュリティグループ:Basic、パブリック受信ポート:あり(Windowsの場合はRDP3389)になります。

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

NSGは作成される。

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

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

NSGは作成される。

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

詳細 そのまま

NSGは作成される。

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

新規作成を指定

NSGは作成される。

受信のセキュリティ規則で許可するIPが指定出来る

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

仮想マシンに適用されるNSG(ネットワークセキュリティグループ)は2つになります。

      • 仮想マシンが所属するサブネットに適用されたNSG(ネットワークセキュリティグループ)
      • 仮想マシンのネットワークインターフェースに適用されたNSG(ネットワークセキュリティグループ)

それぞれが適用されます。仮想マシンへのアクセスを許可する為には両方のNSGで設定を許可する必要があります。

サブネットに適用されたNSG ネットワークインターフェースに適用されたNGS 仮想マシンへのアクセス
アクセス許可 アクセス許可 アクセス可能
アクセス不可 アクセス不可
アクセス不可 アクセス許可 アクセス不可
アクセス不可 アクセス不可

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

サブネットに適用されたNSG ネットワークインターフェースに適用されたNGS 仮想マシンへのアクセス
アクセス許可する 無し アクセス可能
アクセス許可しない アクセス不可

※サブネットにもネットワークインターフェースにもNSGがない場合は、仮想マシンに対するNSGが存在しない状態となります。その為インターネットからも仮想ネットワークからもアクセスできない仮想マシンになります。(仮想マシンからインターネットへのアクセスもできません。)

ネットワークセキュリティグループの作成やサブネットへの割り当てについてはこちら。

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

NSGだけではなく、仮想マシン作成をそのまま進めるとこんな設定になります。

      • ディスクがPremium SSDで作成される
        • 一番お高いディスクが選択される
      • 仮想ネットワークやサブネットが作成される
        • 仮想マシンの数だけ、仮想ネットワークやサブネットが作成されてしまう。
      • パブリックIPが作成される
        • インターネットから直接アクセスする必要がない場合でも作成されてしまう。
      • 自動シャットダウンが有効になっている
        • UTCで19時なので日本時間4時にシャットダウン

検証でお試しする場合とかPremium SSD必要ないですし、仮想ネットワークやサブネットも都度作成する必要もないのでこの編は環境に応じて設定する必要があります。

セキュリティで重要になってくる認証についてもパスフレーズ付き鍵認証が推奨されます。実際にやってみた例についてはこちら。

NSG(ネットワークセキュリティグループ)でAnyで許可しておくと漏れなく攻撃が来ます

自身の経験ですが、実際にそのままにしておくと、仮想マシンに対して5分後位から秒で辞書攻撃的なアクセスが来ました。

検証環境やすぐ消すからとか言ってそのままにしている事をみかける事があります。ですがこのような場合でも、許可すべき要件が無い限りアクセス元のIPアドレスは制限するようにした方が良いかと思います。

使う時しか上げないとか言っている人に限って絶対に忘れたりするので。

Azure LBを使ってアクセスするRDPのポート番号変更してみたはこちらになります。