Azure VMをデフォルトのまま作ると危険なのでNSGを設定しましょう
Azure Portalを利用して仮想マシン(Azure VM)を作成する際の、NSG(ネットワークセキュリティグループ)のアクセス許可設定に関する注意点です。
仮想マシンに適用されるNSGの初期設定、仮想マシン作成時のNSG設定変更方法について紹介しています。
仮想マシンを新規作成する際にNSGを同時に作成する場合には注意点があります。
Azure Portalを使ってデフォルトの設定のまま仮想マシンの作成を進めた場合、インターネットから直接アクセス可能なパブリックIPのリソースが自動的に作成されます。
このパブリックIPのリソースは仮想マシンのネットワークインターフェースに割り当てられます。
この際に、NSGも同時に作成され、NSGの受信セキュリティ規則によってインターネットからのアクセスが許可される場合があります。
具体的には、仮想マシンへのRDP(リモートデスクトップ)やSSHのアクセスを許可する受信セキュリティ規則が作成されます。
作成された受信のセキュリティ規則のアクセス元が"Any"で許可されている事があります。
この設定の場合、インターネット上の任意の場所からアクセス可能な状態となり、不正アクセスや悪意のある攻撃を受ける可能性が高まります。
仮想マシン作成直後のNSGの設定状態を確認する方法と、NSGの設定を変更する手順について詳しく説明します。
※Windows Serverの仮想マシンへのRDP(リモートデスクトップ)接続を例に記載しています。
※記事内ではNetwork Security Group(ネットワークセキュリティグループ)をNSGとして記載しています。
※主にNSGの受信セキュリティ規則に関する内容を記載しています。
※主に仮想マシンのネットワークインターフェースにNSGを適用する場合を対象としています。
仮想マシンに適用されるNSG(ネットワークセキュリティグループ)について
NSGって何?
Azureで接続許可や拒否設定を行うファイアウォールのようなサービスです。
仮想マシンのインバウンド通信やアウトバウンド通信のアクセス制御などに利用できます。
NSGの機能紹介については、こちらの記事で紹介しています。
仮想マシンに適用されるNSGは2つ
仮想マシンに適用されるNSGは2種類あります。
-
- 仮想マシンのサブネットに適用されるNSG
- ネットワークインターフェース自体に適用されるNSG
どちらか1つのみを利用することも、両方を利用することもできます。
2つとも適用した場合には、両方のNSGにおいて受信セキュリティ規則や送信セキュリティ規則で通信許可されている必要があります。
サブネット (受信セキュリティ規則) |
ネットワークインターフェース (受信セキュリティ規則) |
仮想マシンへのアクセス |
アクセス許可 | アクセス許可 | アクセス可能 |
アクセス不可 | アクセス不可 | |
アクセス不可 | アクセス許可 | アクセス不可 |
アクセス不可 | アクセス不可 |
仮想マシン作成時のNICネットワークセキュリティグループの設定で"なし"を選択した場合は、ネットワークインターフェースにNSGが適用されない状態となります。
仮想マシンが属するサブネットのNSGのみが適用されます。
サブネット (受信セキュリティ規則) |
ネットワークインターフェース (受信セキュリティ規則) |
仮想マシンへのアクセス |
アクセス許可する | NSGの適用無し | アクセス可能 |
アクセス許可しない | アクセス不可 |
※サブネットにもネットワークインターフェースにもNSGを設定していない場合は仮想マシンに対するNSGが存在しない状態となります。
アウトバウンド通信の場合はプライベートサブネット(Azure Private Subnet)もある
プライベートサブネット(Azure Private Subnet)はインターネットへのアウトバウンド通信を拒否します。
NSGの設定関係なく仮想マシンからインターネットへのアウトバウンド通信を制限する事ができます。
プライベートサブネット(Azure Private Subnet)についてはこちらの記事で紹介しています。
※2023年11月時点ではプレビュー機能となっています。
デフォルト設定のまま仮想マシンを作成してNSGの設定内容を確認
Azure Portalで仮想マシンをデフォルト設定のまま作成して、同時に作成されたNSGの設定内容を確認します。
仮想マシン作成時に設定するネットワーク関連のリソース
仮想マシン作成時に指定するネットワーク関連リソースはいくつかあります。
主にネットワークのタブで指定します。
-
- 仮想ネットワーク
- サブネット
- パブリックIP
- NSG
※新規作成だけではなく既存のリソースも選択できます。
※仮想マシンと同時に作成されるリソースには、ディスク(Managed Disks)などもあります。
同時にパブリックIPのリソースが新規作成される
新規のパブリックIP(仮想マシン名-ip)が選択された状態となっています。
既存のパブリックIPのリソースが存在しているかどうかに関わらず、新規作成がデフォルト値として選択されています。
作成されたパブリックIPアドレスのリソースはネットワークインターフェースにアタッチされます。
インターネットから仮想マシンへパブリックIPを利用してアクセス出来る状態となります。
仮想マシン作成時のNSG設定箇所
仮想マシン作成時のNSG設定箇所は2か所です。
基本とネットワークのタブに設定箇所があります。
※Windowsの場合はRDP(3389)、Linuxの場合はSSH(22)が受信ポートのデフォルト選択値となります。
※注意喚起のメッセージがAzure Portal上に表示されます。
作成されたNSGの受信セキュリティ規則を確認
デフォルト選択値のまま仮想マシンを作成した場合、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のSKUによるアクセス挙動の違いについて
NSGが存在しない場合の挙動はパブリックIPのSKUによって挙動が異なります。
-
- パブリックIPのSKUがStandardの場合
- アクセスできない。
- 明示的にNSGで許可設定が必要
- パブリックIPのSKUがBasicの場合
- アクセスできる
- 明示的にNSGで拒否設定が必要
- パブリックIPのSKUがStandardの場合
詳細は公式サイトのセキュリティの項目に記載があります。
最後に
仮想マシン作成時のNICネットワークセキュリティグループ選択肢別のNSG設定内容
仮想マシン作成時のNICネットワークセキュリティグループ設定値とNSGの関係です。
NIC ネットワーク セキュリティ グループ | NSG作成状況 | |
なし | NSGは作成されない | |
Basic | パブリック受信ポート:なし |
NSGは作成される |
パブリック受信ポート:あり |
NSGは作成される |
|
詳細 | 変更しない |
NSGは作成される |
新規作成でセキュリティ規則を変更 |
NSGは作成される。 |
※NSGが無い場合のアクセス挙動はパブリックIPのSKUによって異なります。
送信のセキュリティ規則はどうなっているの?
送信のセキュリティ規則はインターネットへ"Any"で許可された状態となっています。
こちらもセキュリティ要件に応じてアクセス拒否する送信セキュリティ規則を作成します。
デフォルトで作成されている送信のセキュリティ規則は変更できません。
新規にアクセス拒否する送信セキュリティ規則を作成します。
仮想マシン作成時にデフォルトのまま進まない方が良さそうなもの
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キーを使った仮想マシンの作成手順についてはこちらに纏めています。