記事内容に間違いがありましたらコメントいただければ幸いです。
#NSGとは
AzureでのNetwork Security Group。
サブネットまたはNICに付与し、Networkのブラックリスト、ホワイトリストを設定できる。
AWSでいうところの、SGとNetwork-ACLを足したようなもの。
#NSGの既定設定
NSG作成時には既定で送信・受信で以下の設定がされており、消すことができない(なんでやねん)。
ただし、オーバライドすることが出来るのでより優先度が高い(値が低い)設定を追加していくことになる。
####受信設定
既定の受信設定 | 優先度 | ソース | ソースポート | 宛先 | 宛先ポート | プロトコル | アクション |
---|---|---|---|---|---|---|---|
AllowVNetInBound | 65000 | VirtualNetwork | * | VirtualNetwork | * | Any | Allow |
AllowAzureLoadBalancerInBound | 65001 | AzureLoadBalancer | * | * | * | Any | Allow |
DenyAllInbound | 65500 | * | * | * | * | Any | Deny |
上記設定の意味としては、 | |||||||
VNet(※1)からVNetに対する受信はすべて許可するよ。 | |||||||
ロードバランサー(※2)からすべてのIPに対する受信はすべて許可するよ。 | |||||||
それ以外の受信はすべて拒否するよ。 |
(※1)ここでいうVNetは、VNet内の同一サブネット、VNet内の別サブネット、ピアリングされた別VNetなど、割と広義の意味。
(※2)ロードバランサーについては以下の記事が分かりやすい
####送信設定
既定の送信設定 | 優先度 | ソース | ソースポート | 宛先 | 宛先ポート | プロトコル | アクション |
---|---|---|---|---|---|---|---|
AllowVnetOutBound | 65000 | VirtualNetwork | * | VirtualNetwork | * | Any | Allow |
AllowInternetOutBound | 65001 | * | * | Internet | * | Any | Allow |
DenyAllOutBound | 65500 | * | * | * | * | Any | Deny |
上記設定の意味としては、 | |||||||
VnetからVnetに対する送信はすべて許可するよ。 | |||||||
すべてのIPからインターネットへの送信はすべて許可するよ。 | |||||||
それ以外の送信はすべて拒否するよ。 |
#InternetのOutBoundをすべて拒否する
社内ネットワークやサービスセキュリティの要件で外行きのアクセスをすべて拒否したい場合があります。
設定例を以下に記載します。
送信設定 | 優先度 | ソース | ソースポート | 宛先 | 宛先ポート | プロトコル | アクション |
---|---|---|---|---|---|---|---|
DenyInternetOutBound | 100 | * | * | Internet | * | Any | Deny |
しかしながら、Windowsサーバーを使用する場合は以下の疑問がありました。
・DNSは動くのか?
・NTPは正常に動くのか?
・WindowsUpdateは正常に動くのか?
###DNS動くのか?
動きます。
Azure上のVMは168.63.129.16というIPアドレスを使用して、DNSの通信を行っています。
このアドレスは特殊なアドレスで、Azure が各種サービスや機能を提供する際に使用している仮想パブリック IP アドレスで、Azure プラットフォームと利用のインスタンス間の連携に使用されます。
そして、上記のようにInternetサービスタグを使ってOutBoundを拒否した場合でも、例外として拒否されることはありません。
逆にDNSを拒否したい場合は、AzurePlatformDNSサービスタグを使用して、明示的にDenyで設定する必要があります。
###NTPは正常に動くのか?
動きます。
AzureのWindowsVMは、①ホスト時刻または②NTPサーバのtime.windows.comと通信をして、時刻を同期します。
既定では①のホスト時刻と時刻合わせを行うため、上記設定のNSGでは規制されません。
###WindousUpdateは正常に動くのか?
動きません。え?
WindowsUpdateは上記の168.63.129.16に含まれていません。
またWindowsUpdateを行うためのMicrosoft UpdateサイトはIPアドレスやドメインなどを公開しておらず、仮に分かったとしても不定期で更新されます。
さらにNSGのサービスタグにもWindowsUpdateを指定するタグは現時点(2021/04/05)では存在しません。
下記記事から分かるように、以前よりかなり渇望されていますが・・・(一応2021年の初頭に実装予定らしいです)
https://feedback.azure.com/forums/217313-networking/suggestions/32260814-add-a-network-security-group-tag-for-windows-updat#%7B%E2%80%8Btoggle_previous_statuses%7D%E2%80%8B
代替案として、Azure FirewallならばFQDNタグでWindowsUpdateというタグがあるらしく、こちらでWindowsUpdateの通信を制御できるらしいです。
#結論
InternetのOutBoundをすべて拒否したいが、NSGだとWindowsUpdateが正常動作しなくなる。
WSUSの構築又は、Azure Firewallを検討する。