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

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

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

セキュリティ的にアウトバウンド通信を制限したいという事もあるかと思います。
ただインターネットへのアクセスをすべて閉じてしまうと仮想マシン(Azure VM)のWindows Updateも出来なくなってしまいます。

NSG(ネットワークセキュリティグループ)にはWindows Update用のサービスタグが用意されています。
これを使うとWindows Updateの許可をする事が出来ます。

Windows Update用のサービスタグを利用した仮想マシン(Azure VM)からWindows Updateを許可する設定手順を纏めました。
PowerShellを使ったNSG(ネットワークセキュリティグループ)の設定方法も併せて纏めています。

スポンサーリンク

NSG(ネットワークセキュリティグループ)にはWindows Update用のサービスタグがある

サービスタグとは

サービスタグとは指定されたAzure サービスのIP アドレス プレフィックスのグループです。
Azure SQLなどのサービスやサービスがリージョンなどで利用しているIPを纏めたグループです。
sql.japaneastというような指定が出来ます。

仮想ネットワーク サービス タグ(マイクロソフト社公式)

サービスタグを使うと特定のサービスへのアクセスを許可や拒否する事が出来ます。
NSG(ネットワーク セキュリティ グループ)やAzure Firewallで利用出来ます。

サービスタグに含まれるIPアドレスの管理はAzure側で自動で行われます。
AzureサービスのIPアドレスについてユーザー側で意識する必要なくなります。

Windows UpdateのサービスタグはAzureUpdateDelivery

Windows Update用のサービスタグはAzureUpdateDeliveryになります。

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

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

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

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

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

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

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

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

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

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

仮想マシン(Azure VM)からインターネットへのアクセスを拒否と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(ネットワークセキュリティグループ)へ送信セキュリティ規則追加します。
今回は仮想マシン(Azure VM)のメニューから実施しています。

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

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

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

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

—広告—

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

同じ設定をAzure PowerShellを使って実施します。

セキュリティ規則追加時に利用する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を許可する送信セキュリティ規則を追加

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

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

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サイトへのアクセスが制限出来る事は便利かと思いました。

スポンサーリンク