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

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

 仮想マシン(Azure VM)へのアクセスはNSG(ネットワークセキュリティグループ)で行われます。
 Azure Portalを使ってデフォルト選択のまま仮想マシンを作成するとNSGやパブリックIPも同時に作成します。

    • パブリックIPが作成される
    • 仮想マシンのネットワークインターフェースへアタッチされるNSGが作成される

 問題になりやすいのは仮想マシンへのアクセスがインターネットへ公開されてしまう点です。 

    • 作成されるNSGはインターネットにAnyでRDPやSSHが許可(受信)された状態

 仮想マシン作成直後に外部(インターネット)からのRDP(Windows系)やSSH(Linux系)アクセスがすべてのIPから許可された状態になります。
 非常に危険な仮想マシンにどこからでもアクセスされてしまう状態となってしまいます。

 今回はAzureでの仮想マシン作成時のネットワークセキュリティグループ作成状況や設定変更について纏めてみました。

 ※2022年7月に記事を修正、再編集しています。

スポンサーリンク

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

ネットワークセキュリティグループ(NSG)とは

仮想マシンに対するアクセス制御はNSGで行う事が出来ます。
NSGはAzureで接続許可や拒否設定を行うファイアウォール的なサービスになります。
NSGの説明についてはこちらを参照願います。

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

仮想マシンに適用されるNSGは2つになります。

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

仮想マシンへのアクセスを許可する為にはそれぞれのNSGで受信セキュリティ規則や送信セキュリティ規則で通信許可が必要になります。

サブネット ネットワークインターフェース 仮想マシンへのアクセス
アクセス許可 アクセス許可 アクセス可能
アクセス不可 アクセス不可
アクセス不可 アクセス許可 アクセス不可
アクセス不可 アクセス不可

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

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

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

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

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

デフォルト設定のまま仮想マシンを作成した場合に生成されるもの

デフォルト設定のまま進めるとネットワーク関連リソースが同時に新規作成されます。

    • 仮想ネットワーク(仮想マシンをデプロイするリソースグループ内に存在しない場合)
    • サブネット(仮想マシンをデプロイするリソースグループ内に存在しない場合)
    • パブリックIP
    • NSG(ネットワークセキュリティグループ)

パブリックIPがアタッチされた状態で仮想マシンがデプロイされる

デフォルト設定ではパブリックIPを新規作成するが選択されています。
パブリックIPはインターネットから仮想マシンへアクセスする為のグローバルIPアドレスになります。

Azureではインターネット等からアクセスを行える事ように仮想マシンへが作成されます。
パブリックIP、NSGが同時に作成される設定となっています。

仮想マシン作成時のネットワークセキュリティグループ(NSG)設定箇所

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

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

基本タブに受信ポートの規則があります。
外部からのアクセス許可をするポートを指定します。
Windowsの場合はデフォルトでRDP(3389)が選択されています。

ネットワークタブにも設定箇所があります。
NIC ネットワーク セキュリティ グループはNSGの設定有無や選択に関する項目になります。
デフォルトではBasicが選択されています。

パブリック受信ポートは基本タブと同様にアクセス許可するポートの選択になります。
デフォルトではRDP(3389)(基本タブでの選択値)が選択されています。

同時に作成されたNSGのセキュリティ規則を確認

デフォルト選択値のまま仮想マシンを作成した場合のNSGのセキュリティ規則について確認します。

受信セキュリティ規則、送信セキュリティ規則
受信セキュリティ規則にRDPと言うルールが作成されています。RDP(3389)で任意の箇所からアクセスを許可する規則が作成されている事が分かります。

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

Rocky Linux 8を例にAzure VMの初期設定手順を纏めています。
アカウントロック設定もやっていますので併せて見て頂けると有難いです。

—–

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

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

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

仮想マシン(VM)作成時のNSG設定変更方法確認してみました。
Azure Portalで仮想マシンを作成する場合の基本画面で受信ポートの規則という項目があります。
この項目はインターネット等の外部からアクセスするポートの設定を行います。
ネットワークタブのパブリック受信ポートのデフォルト設定を決めるものになります。
最終的に作成されるNSGの設定はネットワークタブのパブリック受信ポートの設定が反映されます。

受信ポートの規則

受信ポートの規則でなしを選択します。

ネットワークタブのパブリック受信ポートはなしが選択されています。
新規にNSGが作成されます。
パブリック受信ポートがなしなのでデフォルト規則のみとなります。

この場合インターネットから仮想マシンへのアクセスは許可されません。

※ネットワークタブでパブリック受信ポートをなしに選択した場合は同様にデフォルト規則のみのNSGが作成されます。

NICネットワークセキュリティグループで設定変更

ネットワークタブのNICネットワークセキュリティグループで詳細を選択するとNSGの設定が出来ます。

  • 既存のNSGの選択
  • 新規NSG作成時の設定

新規NSG作成で設定変更方法を確認してみます。

受信セキュリティ規則、送信セキュリティ規則

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

ネットワークセキュリティグループの作成画面が表示されます。default-allow-rdpと言う受信規則が優先度1000で作成されていますので選択します。

ソースをIP Addressesに変更します。
自身が仮想マシンへアクセスするIPアドレスを入力します。(サンプルは仮で192.168.1.1としてます。)
自身のIPアドレスは、CMAN(IPアドレス確認)等のサイトで確認します。

優先度を1000以外に変更します。(1000にすると既存と同じルールと言うエラーメッセージが表示されます。)

 

受信規則が変更されている事が確認出来ます。
OKを選択します。
仮想マシン作成後にNSGを確認すると、受信セキュリティ規則に変更内容が反映されている事が分かります。

特定のIPからのみアクセス許可するNSGが作成される事が確認出来ました。

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

NICネットワークセキュリティグループでなしを選択するとNSGが作成されません。
ネットワークインターフェースにNSGにアタッチされない状態で仮想マシンが作成されます。

サブネットにもNSGが無い場合は、仮想マシンにNSGが存在しない状態となります。

NICネットワークセキュリティグループでなしを選択
なしを選択します。
メッセージに表示されている通り、パブリックIPを削除しない限りどこからでもアクセス可能となります。

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

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

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

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

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

ARMテンプレートを使ったNSG作成方法はこちら。

まとめ

NICネットワークセキュリティグループ設定と作成されるNSG(ネットワークセキュリティグループ)の関係

仮想マシン作成時のNICネットワークセキュリティグループ設定値とNSG作成状況整理します。
サブネットにNSGが無い場合、パブリック受信ポート無しかNSGのルールを変更しない限りインターネット(すべて)からのアクセスが許可された状態となってしまいます。

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

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

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

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

詳細 変更しない

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

新規作成でNSG設定を変更

NSGは作成される。
受信のセキュリティ規則で許可するIPが指定出来る

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

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

NSG以外にも仮想マシン作成をそのまま進めた場合にこのような設定になります。

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

検証でお試しする場合などではPremium SSD必要ないので、Standard SSDやStandard HDDを選択するようにした方が良いかと思います。
仮想マシンのSLAはManaged Diskの種類に依存します。要件に応じて選択願います。

パブリックIPも各仮想マシンで保持する必要があるかはちゃんと検討した方が良いかと思います。

自動シャットダウン自体は良いのですが、UTCになっているので注意が必要です。
シャットダウンする時間を再設定するか無効にした方が良いかと思われます。

NSG(ネットワークセキュリティグループ)でインターネットアクセスを許可すると漏れなく攻撃が来ます

自身の経験ですが、NSGでRDPを許可しておくと仮想マシンに対して5分後位から秒で辞書攻撃的なアクセスが来ました。
AzureのグローバルIPは公開されており、常にアクセスしてくる攻撃者が居ます。

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

Rocky Linux 8を例にsudo権限はく奪などの設定手順を纏めています。

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

Linuxではパスフレーズ付き鍵認証が推奨されます。
併せて見て頂けると大変有難いです。