目次
Network Security Groupとは?
Network Security Group(ネットワークセキュリティグループ)とはインバウンドとアウトバウンドの通信を制御するためのリソースです。
サブネットと仮想マシン(厳密にはネットワークインターフェース)に紐づける事が可能です。
紐づける事で、該当する仮想マシンやサブネット内のオブジェクトに対する通信について規制する事が可能となります。
Network Security Group(以下NSG)では以下に基づいて通信の許可/拒否を設定する事となります。
- プロトコル(HTTP, TCPなど)
- 通信元IPアドレス
- 通信元ポート
- 通信先IPアドレス
- 通信先ポート
メリット/デメリット
メリット
- サブネットや仮想マシン毎に通信の規制を設定し外部からの攻撃を防ぐ事ができる
デメリット
- サブネットや仮想マシンが多数存在する場合、NSGでは管理が複雑化する(Azure Firewallの利用などを検討する必要あり)
NSGのデフォルト設定
NSGでは作成時にデフォルトで定められているルールも存在します。
受信セキュリティ規則では以下がデフォルトの設定です。
- 仮想ネットワーク上の別のマシンからのトラフィックを許可
- 仮想ネットワーク上のあらゆるポート、プロトコルからの通信を許可
- LoadBalancerが動作している通信を許可
- 仮想マシンに侵入しようとする通信を拒否
つまり、仮想ネットワーク上の他のコンピューターとLoadBalancerの通信は許可されるが他の通信は全て拒否するという設定が施されています。
送信セキュリティルールでは以下がデフォルトの設定となります。
- 仮想ネットワーク上の他の仮想マシンへの送信を許可
- インターネットへの通信を許可
- 他の全ての通信は拒否
つまり、仮想ネットワーク上の他のコンピュータとインターネットへの通信は許可されるが他の通信は全て拒否するという設定が施されています。
上記を考慮してNSGの設定を実施する必要があります。
ハンズオン概要
サブネットの中に仮想マシンを作成しNSGを設定していきます。
まずは、仮想マシンをポート公開無しで作成し、アクセスできない事を確認します。
続いて、仮想マシンのネットワークインターフェースにNSGを紐づけ、仮想マシンへのRDP接続ができるようにします。
最後にRDP接続を拒否するNSGをサブネットに付与し、RDP接続が出来ない様にします。
この手順を追う事で、ネットワークインターフェースへのNSG接続、サブネットへのNSG接続を理解する事が出来ます。また、サブネットへ付与するルールの方がネットワークインターフェースへ付与するルールよりも優先される事が確認できます。
手順
※当ページでは2023年1月現在の仮想ネットワークについて解説しています。クラウドサービスは頻繁にアップデートが施されるため、仕様が若干異なる可能性があります。
ログイン
まずは、Azure公式ページからAzureにログインしましょう。
Azureアカウントを保持している方はSign inを、保持していない方はFree accountよりアカウントを作成しましょう。
仮想ネットワークの作成
検索バーに”仮想ネットワーク”と入力し、”仮想ネットワーク”を選択します。
作成ボタンを押下し、以下の条件で”test-nsg”という仮想ネットワークを作成します。
基本タブは以下のように設定します。
IPアドレスタブは以下のように設定します。
基本タブとIPアドレスタブの設定が完了したら、セキュリティタブ、タグタブの設定はスキップして仮想ネットワークを作成します。
仮想ネットワークの作成方法詳細については、【Azure】仮想ネットワークとは?使い方徹底解説!を参照してください。
仮想マシンの作成
続いてtest-vmという仮想マシンを作成します。※仮想マシン作成の詳細については、【Azure】Virtual Machines(VM)とは?使い方徹底解説!を参照下さい。
検索バーに”Virutal Machine”と入力して”Virtual Machine”を選択します。
仮想マシンの管理画面に遷移したら、”作成”→”Azure 仮想マシン”を押下し、仮想マシンを作成します。
基本タブは以下の様に設定します。
ネットワークタブは以下の様に設定します。
その他のタブは変更が必要ないので、上記の設定で仮想マシンを作成します。
作成が完了したら、仮想マシンの接続タブからRDPファイルをダウンロードし、RDP接続を行います。
現段階では、仮想マシンの作成時に外部へのポート公開を設定していないのでアクセスが出来ません。
仮想マシンに付与するNSGの作成
続いて仮想マシンのネットワークインターフェースに付与するNSGを作成します。
検索バーに”ネットワークセキュリティグループ”と入力し、”ネットワークセキュリティグループ”を選択します。
NSGの管理画面に遷移したら、左上の”作成”を押下します。
基本タブ
基本タブでは、NSGの名前や配置場所などを設定します。
以下の様に設定します。
- サブスクリプション:利用するサブスクリプションを選択します。
- リソースグループ:利用するリソースグループを選択します。今回は”test-nsg”を利用します。
- 名前:任意の名前を付与します。今回は”test-nsg-for-vm”と命名します。
- 地域:“Japan East”を選択します。
タグ
タグタブでは、リソースを識別する為のキー/バリューのペア(タグ)を設定する事が可能です。今回は設定しません。
上記の設定で作成します。作成が完了したら、”リソースに移動”を押下します。
移動したら、受信セキュリティタブを開きます。デフォルトの設定が施されている事が確認できます。
追加を押下してルールを追加します。
以下の様に受信規則を設定します。
- ソースポート範囲:どのポートからの通信を対象とするかを設定します。今回は”any”とし、全てのインバウンド通信を対象とします。
- 宛先:どの宛先への通信を対象とするかを設定します。今回は”any”とし、サブネット内の全ての宛先への通信を対象とします。
- サービス:通信プロトコルを指定します。”RDP”を指定します。
- 宛先ポート範囲:通信プロトコルを決定すると決定されます。
- プロトコル:通信プロトコルを決定すると決定されます。
- アクション:該当の通信を許可するか拒否かを決定します。”許可”を選択します。
- 優先度:ルールの優先度を決定します。100~4096までの数字を設定する事ができ、若い数字ほど優先されます。今回は最優先される”100″を設定します。※例えばRDPを許可するルールを100に、RDPを拒否するルールを200に設定すると、許可ルールが適用されます。
- 名前:ルールに名前を付与します。今回は”AllowAnyRDPInbound”とします。
- 説明:ルールの説明を付与します。必要に応じて記載します。
設定したら、”追加”を押下します。
ネットワークインターフェースタブに移動し、”関連付け”を押下します。先程作成した仮想マシンに紐づくネットワークインターフェースを選択します。
関連付けが完了したら、test-vmにRDP接続を行ってみます。
ポップアップに資格情報を入力してRDP接続します。(ポップアップが表示される時点で接続が可能となっている状態です。)
サブネットに付与するNSGの作成
続いてサブネットに付与するNSGを作成します。
先程と同様の手順でNSGを作成します。名前は”test-nsg-for-subnet”とします。
作成が完了したら、受信セキュリティタブに移動し、以下の様な設定のルールを作成します。
ルールの作成が完了したらサブネットタブに移動し、”関連付け”を押下します。”test-nsg”の”test-nsg-for-subnet”というサブネットを指定し、”OK”を押下します。
RDP接続を再度実施します。すると、以下の様に接続できない旨のエラーが発生します。
サブネットに付与したルールがネットワークインターフェースへ付与したルールよりも優先されている事が分かります。
関連記事