Azure VMのアウトバウンド通信をWindows Updateに制限

2021-09-26Azure,Network Security Group,Virtual Machine

AzureのNSG(Network Security Group(ネットワークセキュリティグループ))を作成した場合、デフォルトではすべてのアウトバウンド通信が許可されています。
仮想マシンをデプロイした場合、インターネットへのアクセスが許可された状態になります。

セキュリティの観点から、アウトバウンド通信を制限したい場合もあるかと思います。
しかし、Windows の仮想マシンの場合、インターネットへのアクセスをすべて閉じてしまうと、Windows Updateができなくなってしまいます。

NSGには、Windows Update用のサービスタグが用意されています。
このサービスタグを使用することで、Windows Updateのみを許可することができます。

この記事では、Windows Update用のサービスタグを利用して仮想マシンからWindows Updateを許可する設定手順を紹介しています。
PowerShellを使用したNSGの設定方法も紹介しています。

※本記事内では、Azure Virtual Machines(Azure VM)を"仮想マシン"として表記しています。
※本記事内では、Network Security Group(ネットワークセキュリティグループ)を"NSG"として表記しています。
※本記事内では、Service Tagをサービスタグとして表記しています。

スポンサーリンク

NSGのセキュリティ規則設定にはWindows Update用のサービスタグがある

サービスタグとは

サービスタグとは、マイクロソフトが提供するサービスのIPアドレスプレフィックスのグループです。
NSGだけではなく、Azure Firewallでも利用できます。

仮想ネットワーク サービス タグ

Azure SQLなどのサービスが、リージョンごとに利用しているIPアドレスをまとめてサービスタグとして規定されています。
たとえば"sql.japaneast"といった形でサービスタグがあります。

サービスタグで、よく見るのがAzure Load BalancerやVirtual Networkのサービスタグになります。
サービスタグには、Azureのサービスだけではなく、Power AutomateやDynamics 365と言ったものもあります。

マイクロソフトが提供するサービスのIPアドレスは変わる事があります。それに合わせて設定変更するのはとても大変です。
サービスタグに含まれるIPアドレスの管理はAzure側で自動で行われます。
AzureサービスのIPアドレスについてユーザー側で意識する必要なくなります。

※リージョン指定できずサービスだけを指定するタグもあります。

Windows Update用のサービスタグはAzureUpdateDelivery

Windows Updateを許可するために利用するサービスタグは、AzureUpdateDeliveryです。
また、AzureFrontDoor.FirstPartyも必要になります。

利用可能なサービス タグ(仮想ネットワーク サービス タグ)

送信セキュリティ規則でAzureUpdateDeliveryとAzureFrontDoor.FirstPartyの2つの許可設定が必要です。

    • AzureUpdateDelivery: TCP、ポート 443
    • AzureFrontDoor.FirstParty: TCP、ポート 80

※Windows UpdateのIPアドレス以外もAzureUpdateDeliveryには含まれます。

アウトバウンド通信の許可状態

NSG(ネットワークセキュリティグループ)に送信セキュリティ規則を追加した場合のアウトバウンド通信の許可状態です。

NSGの設定状態 仮想マシンから
インターネットへアクセス
仮想マシンで
Windows Update
デフォルト設定
インターネットへの
アウトバウンド通信を拒否
× ×
インターネットへの
アウトバウンド通信を拒否
AzureUpdateDeliveryの
アウトバウンド通信を許可
×

※AzureUpdateDeliveryはAzureFrontDoor.FirstPartyと組み合わせて利用した場合です。
※AzureUpdateDeliveryにはWindows Update以外の通信も含まれます。YahooやGoogle等のWebサイトへの通信を許可しない状態と考える方が適切かと思います。

プライベートサブネット(Azure Private Subnet)について

プライベートサブネット(Azure Private Subnet)を利用する事で、仮想マシンからのインターネットへのアクセスを制限できます。
この場合はNATゲートウェイ(Azure NAT Gateway)等と組み合わせて利用します。

Windows Updateを許可する送信セキュリティ規則を設定

仮想マシンからインターネットへのアクセスを拒否とWindows Updateを許可する送信セキュリティ規則を追加します。

送信セキュリティ規則設定

追加する送信セキュリティ規則は3つです。

    • 宛先AzureUpdateDeliveryへの443(TCP)通信を許可
    • 宛先AzureFrontDoor.FirstPartyへの80(TCP)通信を許可
    • 宛先InterNetへの通信を拒否

※InterNetへの通信を拒否設定しなかった場合はすべてのアウトバウンド通信が許可されたままの状態となります。

区分 項目 設定値
AzureUpdateDeliveryを許可 名前 AllowOutbound-AzurePdateDelivery
優先度 100
宛先 Service Tag
宛先サービスタグ AzureUpdateDelivery
サービス(宛先ポート範囲) HTTPS(443)(TCP)
アクション 許可
AzureFrontDoor.FirstPartyを許可 名前 AllowOutbound-AzureFrontDoorFirstParty
優先度 101
宛先 Service Tag
宛先サービスタグ AzureFrontDoor.FirstParty
サービス(宛先ポート範囲) HTTP(80)(TCP)
アクション 許可
インターネットへのアウトバウンド通信を拒否 名前 DenyOutbound-InterNet
優先度 110
宛先 Service Tag
宛先サービスタグ Internet
サービス(宛先ポート範囲) ※(Any)
アクション 拒否

Azure Portalを利用して送信セキュリティ規則をデプロイ

Azure Portalを使ってNSG(ネットワークセキュリティグループ)へ送信セキュリティ規則追加します。
今回は仮想マシンのメニューから実施しています。

セキュリティ規則を追加
ネットワークで送信ポート規則のタブを選択します。
送信ポートの規則を追加するを選択します。
送信セキュリティ規則の追加が表示されます。
AllowOutbound-AzurePdateDeliveryの送信セキュリティ規則を追加します。

AllowOutbound-AzureFrontDoorFirstPartyの送信セキュリティ規則を追加します。

DenyOutbound-InterNetの送信セキュリティ規則を追加します。

設定が終わると3つの送信セキュリティ規則が追加されています。
インターネットへのアクセスを拒否しながらWindows Updateが出来る状態となります。

—広告—

PowerShellを使って送信セキュリティ規則設定

Azure PowerShellをNSGを設定します。

セキュリティ規則追加時に利用するPowerShellコマンドレット

NSG(ネットワークセキュリティグループ)に送受信セキュリティ規則を追加する時には3つコマンドレットを利用します。
Get-AzNetworkSecurityGroup、Add-AzNetworkSecurityRuleConfig、Set-AzNetworkSecurityGroupを利用します。

コマンド 概要
Get-AzNetworkSecurityGroup NSG(ネットワークセキュリティグループ)の設定情報を取得
Add-AzNetworkSecurityRuleConfig 送受信セキュリティ規則の設定情報を追加
Set-AzNetworkSecurityGroup NSG(ネットワークセキュリティグループ)の設定を更新

※事前にAzure PowerShellをインストールしておく必要があります。

インターネットへアウトバウンド通信を禁止する送信セキュリティ規則を追加

Azure PowerShellを利用してインターネットへのアウトバウンド通信を禁止する送信セキュリティ規則を追加します。

送信セキュリティ規則を追加

###NSGの送信セキュリティ規則を追加###

###設定対象のNSG名###
$NSGRGName = “test-rg-01" #リソースグループ名
$NSGName ="nsg-vm-01″ #ネットワークセキュリティグループ名

###追加する送信セキュリティ規則(OSR)設定内容###
$OSRName = “DenyOutbound-InterNet" #セキュリティ規則名
$Access ="Deny" #アクション
$Protocol = “*" #プロトコル
$Priority = “110" #優先度
$DestinationAddressPrefix = “Internet" #宛先サービスタグ
$DestinationPortRange = “*"  #宛先ポート範囲

###NSGの設定を取得###
$nsg = Get-AzNetworkSecurityGroup -Name $NSGName -ResourceGroupName $NSGRGName

###送信セキュリティ規則を設定###
$nsg | Add-AzNetworkSecurityRuleConfig `
-Name $OSRName `
-Access $Access `
-Protocol “*" `
-Direction Outbound `
-Priority $Priority `
-SourceAddressPrefix “*" `
-SourcePortRange “*" `
-DestinationAddressPrefix $DestinationAddressPrefix `
-DestinationPortRange $DestinationPortRange

#NSGの設定を更新

$nsg | Set-AzNetworkSecurityGroup

送信セキュリティ規則DenyOutbound-InterNetが追加されています。
InterNetへのアウトバウンド通信が拒否された状態になっています。

インターネットへのアウトバウンド通信を拒否した状態でWindows Update

インターネットへのアウトバウンド通信を拒否した状態でWindows Updateしてみます。

Windows Updateを実行

Windows Updateもブラウザを使ったインターネットアクセスもすべて拒否されている事が確認できます。

Windows Updateを許可する送信セキュリティ規則を追加

仮想マシンのWindows Updateを許可する送信セキュリティ規則を作成します。
インターネットへのアクセス拒否する送信セキュリティ規則より優先順位を高くします。

※複数の送信セキュリティ規則を追加するように、PowerShellを作成しています。

Windows Updateを許可
###NSGの送信セキュリティ規則を追加###

###設定対象のNSG名###
$NSGRGName = “test-rg-01" #リソースグループ名
$NSGName ="nsg-vm-01″ #ネットワークセキュリティグループ名

###送信セキュリティ規則(OSR)(複数のルールを設定)###
$OSRName_array = “AllowOutbound-AzurePdateDelivery","AllowOutbound-AzureFrontDoorFirstParty"
$Access_array ="Allow","Allow"
$Protocol_array = “TCP","TCP"
$Priority_array = “100","101″
$DestinationAddressPrefix_array="AzureUpdateDelivery","AzureFrontDoor.FirstParty"
$DestinationPortRange_array = “443","80″

###設定情報抽出###
for($i = 0; $i -lt $OSRName_array.Count; $i++){

    $OSRName = $OSRName_array[$i]
    $Access = $Access_array[$i]
    $Protocol = $Protocol_array[$i]
    $Priority = $Priority_array[$i]
    $DestinationAddressPrefix = $DestinationAddressPrefix_array[$i]
    $DestinationPortRange = $DestinationPortRange_array[$i]

###NSGの設定を取得###
$nsg = Get-AzNetworkSecurityGroup -Name $NSGName -ResourceGroupName $NSGRGName

###送信セキュリティ規則を設定###
$nsg | Add-AzNetworkSecurityRuleConfig `
-Name $OSRName `
-Access $Access `
-Protocol $Protocol `
-Direction Outbound `
-Priority $Priority `
-SourceAddressPrefix “*" `
-SourcePortRange “*" `
-DestinationAddressPrefix $DestinationAddressPrefix `
-DestinationPortRange $DestinationPortRange

###NSGの設定を更新###
$nsg | Set-AzNetworkSecurityGroup

}

WindowsUpdate01と02の送信セキュリティ規則が追加されている事が分かります。
宛先を見るとそれぞれAzureUpdateDeliveryとAzureFrontDoor.FirstPartyが指定されている事が分かります。

Windows Updateが許可されているか確認

Windows Updateを許可する送信セキュリティ規則を追加した状態で確認します。
インターネットアクセスを拒否したまま、Windows Updateが許可されている事が確認できます。

Windows Updateを実行

Windows Updateが出来る事が確認できます。
ブラウザでのインターネットアクセスは拒否されたままの状態となっている事が確認できます。

—広告—

最後に

NSGの送信セキュリティ規則を追加することで、インターネットアクセスを拒否しながらWindows Updateを許可することができました。
Windows Updateだけが許可されるわけではありませんが、それでもWebサイトへのアクセスを制限できるのは便利だと思いました。

NSGやセキュリティ規則についてはこちらにまとめています。

スポンサーリンク