Azure VMをデフォルトのまま作ると危険なのでNSGを設定しましょう
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)が受信ポートのデフォルト選択値になります。
※注意喚起のメッセージがAzure Portal上に表示されます。
受信セキュリティ規則を確認
デフォルト選択値のまま仮想マシンを作成した場合、NSGが新規作成されます。
新規作成されたNSGのセキュリティ規則を確認します。
受信セキュリティ規則、送信セキュリティ規則 | |
受信セキュリティ規則にRDPという名前でルールが作成されています。RDP(3389)で任意の箇所からアクセスを許可する規則が作成されています。 |
デフォルト値のまま仮想マシンを作成すると、どこからでもアクセスできる状態になる事が分かりました。
セキュリティ的にとても危険な状態になる事が分かります。
Rocky Linux 8を例に仮想マシンの初期設定手順をこちらに纏めています。
併せて見て頂けると有難いです。
—広告—
仮想マシン作成時のNSG設定変更方法
仮想マシン作成時のNSGの設定変更方法について確認します。
ネットワークタブの受信ポートの規則で設定変更
仮想マシン作成時の基本タブに受信ポートの規則という項目があります。
この項目はインターネット等の外部からアクセスするポートの設定になります。
ネットワークタブのパブリック受信ポートのデフォルト設定を決めるもので、最終的にはネットワークタブの設定が反映されます。
※パブリック受信ポートを"なし"にした場合でもNSGは作成されます。
受信ポートの規則設定 | |
基本タブの受信ポートの規則でなしを選択します。 このまま仮想マシンの作成を進めた場合、新規にNSGが作成されます。 |
|
NICネットワークセキュリティグループで設定変更
NICネットワークセキュリティグループで詳細を選択するとNSGを新規作成、受信セキュリティ規則を作成できます。
デフォルトルールが作成されているので削除後に受信規則を追加もしくは変更して設定します。
※ネットワークセキュリティグループの構成で既存のNSGを選択も出来ます。
NICネットワークセキュリティグループでなしを選択した場合
NICネットワークセキュリティグループでなしを選択するとNSGが作成されません。
仮想マシンは、NSGがネットワークインターフェースに関連付けされてない状態で作成されます。
この場合サブネットに関連付けされたNSGのみが適用されます。
※サブネットにもNSGを適用していない場合は無い状態になります。
NICネットワークセキュリティグループでなしを選択 | |
なしを選択した場合はNSGは作成されません。 |
パブリックIPの挙動の違いについて
NSGが存在しない場合の挙動はパブリックIPのSKUによって挙動が異なります。
-
- パブリックIPのSKUがStandardの場合
- アクセスできない。
- 明示的にNSGで許可設定が必要
- パブリックIPのSKUがBasicの場合
- アクセスできる
- 明示的にNSGで拒否設定が必要
- パブリックIPのSKUがStandardの場合
詳細は公式サイトのセキュリティの項目に記載があります。
まとめ
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で作成される
-
検証等で利用する場合では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キーを使った仮想マシンの作成手順についてはこちらに纏めています。