次の方法で共有


Azure PowerShell を使用して Azure Firewall ポリシーをデプロイして構成する

アウトバウンド ネットワーク アクセスを制御することは、ネットワーク セキュリティ プラン全体の重要な要素です。 たとえば、Web サイトへのアクセスを制限することができます。 また、アクセスできるアウトバウンドの IP アドレスとポートを制限したい場合があるかもしれません。

Azure ファイアウォールとファイアウォール ポリシーを使用して、Azure サブネットからの送信ネットワーク アクセスを制御できます。 Azure Firewall を使用すると、次の構成を行うことができます。

  • アプリケーション ルール: サブネットからアクセスできる完全修飾ドメイン名 (FQDN) を定義します。
  • ネットワーク ルール: 送信元アドレス、プロトコル、宛先ポート、送信先アドレスを定義します。

ネットワーク トラフィックは、サブネットの既定ゲートウェイとしてのファイアウォールにルーティングしたときに、構成されているファイアウォール ルールに制約されます。

この記事では、簡単にデプロイできるように、3 つのサブネットを持つ簡略化された単一の仮想ネットワークを作成します。 運用環境のデプロイでは、ファイアウォールが独自の仮想ネットワーク内にある ハブ アンド スポーク モデルを使用します。 ワークロード サーバーは、1 つまたは複数のサブネットを含む同じリージョンのピアリングされた仮想ネットワーク内にあります。

  • AzureFirewallSubnet - このサブネットにファイアウォールが存在します。
  • Workload-SN - このサブネットにはワークロード サーバーがあります。 このサブネットのネットワーク トラフィックは、ファイアウォールを通過します。
  • AzureBastionSubnet - Azure Bastion に使用されるサブネット。これは、ワークロード サーバーへの接続に使用されます。

Azure Bastion の詳細については、「Azure Bastion とは」を参照してください。

重要

時間単位の料金は、送信データの使用量に関係なく、Bastion がデプロイされた時点から発生します。 詳しくは、「価格」および「SKU」を参照してください。 チュートリアルまたはテストの一環で Bastion をデプロイする場合は、使用終了後にこのリソースを削除することをお勧めします。

ファイアウォール ネットワーク インフラストラクチャを示す図。

この記事では、次のことについて説明します。

  • テスト ネットワーク環境を設定する
  • ファイアウォールをデプロイする
  • 既定のルートを作成する
  • ファイアウォール ポリシーを作成する
  • www.google.com へのアクセスを許可するようにアプリケーション ルールを構成する
  • 外部 DNS サーバーへのアクセスを許可するようにネットワーク ルールを構成する
  • ファイアウォールをテストする

必要に応じて、 Azure portal を使用してこの手順を完了できます。

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

前提条件

この手順では、PowerShell をローカルで実行する必要があります。 Azure PowerShell モジュールをインストールしておく必要があります。 バージョンを確認するには、Get-Module -ListAvailable Az を実行します。 アップグレードする必要がある場合は、Azure PowerShell モジュールのインストールに関するページを参照してください。 PowerShell のバージョンを確認した後、Connect-AzAccount を実行して Azure との接続を作成します。

ネットワークのセットアップ

最初に、ファイアウォールをデプロイするために必要なリソースを含めるリソース グループを作成します。 次に、仮想ネットワーク、サブネット、およびテスト サーバーを作成します。

リソース グループを作成する

New-AzResourceGroup を使用して、デプロイ用のリソース グループを作成します。

New-AzResourceGroup -Name Test-FW-RG -Location "East US"

仮想ネットワークと Azure Bastion ホストを作成する

この仮想ネットワークには 3 つのサブネットが含まれています。 New-AzVirtualNetworkSubnetConfig を使用して定義します。

注意

AzureFirewallSubnet サブネットのサイズは /26 です。 サブネットのサイズの詳細については、「Azure Firewall に関する FAQ」を参照してください。

$Bastionsub = New-AzVirtualNetworkSubnetConfig `
    -Name AzureBastionSubnet `
    -AddressPrefix 10.0.0.0/27
$FWsub = New-AzVirtualNetworkSubnetConfig `
    -Name AzureFirewallSubnet `
    -AddressPrefix 10.0.1.0/26
$Worksub = New-AzVirtualNetworkSubnetConfig `
    -Name Workload-SN `
    -AddressPrefix 10.0.2.0/24

New-AzVirtualNetwork を使用して仮想ネットワークを作成します。

$testVnet = New-AzVirtualNetwork `
    -Name Test-FW-VN `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -AddressPrefix 10.0.0.0/16 `
    -Subnet $Bastionsub, $FWsub, $Worksub

Azure Bastion ホストのパブリック IP アドレスを作成します。

New-AzPublicIpAddress を使用して、Bastion ホストの静的パブリック IP アドレスを作成します。

$publicip = New-AzPublicIpAddress `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -Name Bastion-pip `
    -AllocationMethod Static `
    -Sku Standard

Azure Bastion ホストを作成する

New-AzBastion を使用して Bastion ホストを作成します。

New-AzBastion `
    -ResourceGroupName Test-FW-RG `
    -Name Bastion-01 `
    -PublicIpAddress $publicip `
    -VirtualNetwork $testVnet

仮想マシンの作成

New-AzVM を使用してワークロード仮想マシンを作成します。 メッセージが表示されたら、ユーザー名とパスワードを入力します。

# Create the NIC
$wsn = Get-AzVirtualNetworkSubnetConfig `
    -Name Workload-SN `
    -VirtualNetwork $testVnet
$NIC01 = New-AzNetworkInterface `
    -Name Srv-Work `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -Subnet $wsn

# Define the virtual machine
$VirtualMachine = New-AzVMConfig `
    -VMName Srv-Work `
    -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem `
    -VM $VirtualMachine `
    -Windows `
    -ComputerName Srv-Work `
    -ProvisionVMAgent `
    -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface `
    -VM $VirtualMachine `
    -Id $NIC01.Id
$VirtualMachine = Set-AzVMSourceImage `
    -VM $VirtualMachine `
    -PublisherName 'MicrosoftWindowsServer' `
    -Offer 'WindowsServer' `
    -Skus '2019-Datacenter' `
    -Version latest

# Create the virtual machine
New-AzVM `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -VM $VirtualMachine `
    -Verbose

ファイアウォール ポリシーを作成する

New-AzFirewallPolicy を使用してファイアウォール ポリシーを作成します。

$fwpol = New-AzFirewallPolicy `
    -Name fw-pol `
    -ResourceGroupName Test-FW-RG `
    -Location "East US"

ファイアウォール ポリシーのアプリケーション ルールを構成する

New-AzFirewallPolicyApplicationRuleNew-AzFirewallPolicyFilterRuleCollection を使用して、www.google.comへの送信アクセスを許可するアプリケーション ルールを作成します。

$RCGroup = New-AzFirewallPolicyRuleCollectionGroup `
    -Name AppRCGroup `
    -Priority 100 `
    -FirewallPolicyObject $fwpol
$apprule1 = New-AzFirewallPolicyApplicationRule `
    -Name Allow-google `
    -SourceAddress "10.0.2.0/24" `
    -Protocol "http:80","https:443" `
    -TargetFqdn www.google.com
$appcoll1 = New-AzFirewallPolicyFilterRuleCollection `
    -Name App-coll01 `
    -Priority 100 `
    -Rule $apprule1 `
    -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup `
    -Name $RCGroup.Name `
    -Priority 100 `
    -RuleCollection $appcoll1 `
    -FirewallPolicyObject $fwpol

Azure Firewall には、既定で許可されるインフラストラクチャ FQDN 用の組み込みのルール コレクションが含まれています。 これらの FQDN はプラットフォームに固有であり、他の目的には使用できません。 詳細については、インフラストラクチャ FQDN に関する記事を参照してください。

ファイアウォール ポリシーのネットワーク ルールを構成する

New-AzFirewallPolicyNetworkRuleNew-AzFirewallPolicyFilterRuleCollection を使用して、ポート 53 (DNS) で 2 つの IP アドレスへの送信アクセスを許可するネットワーク 規則を作成します。

$RCGroup = New-AzFirewallPolicyRuleCollectionGroup `
    -Name NetRCGroup `
    -Priority 200 `
    -FirewallPolicyObject $fwpol
$netrule1 = New-AzFirewallPolicyNetworkRule `
    -Name Allow-DNS `
    -Protocol UDP `
    -SourceAddress 10.0.2.0/24 `
    -DestinationAddress 209.244.0.3,209.244.0.4 `
    -DestinationPort 53
$netcoll1 = New-AzFirewallPolicyFilterRuleCollection `
    -Name Net-coll01 `
    -Priority 200 `
    -Rule $netrule1 `
    -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup `
    -Name $RCGroup.Name `
    -Priority 200 `
    -RuleCollection $netcoll1 `
    -FirewallPolicyObject $fwpol

ファイアウォールをデプロイする

New-AzPublicIpAddressNew-AzFirewall を使用して、仮想ネットワークにファイアウォールをデプロイします。

# Get a Public IP for the firewall
$FWpip = New-AzPublicIpAddress `
    -Name "fw-pip" `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -AllocationMethod Static `
    -Sku Standard
# Create the firewall
$Azfw = New-AzFirewall `
    -Name Test-FW01 `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -VirtualNetwork $testVnet `
    -PublicIpAddress $FWpip `
    -FirewallPolicyId $fwpol.Id

# Save the firewall private IP address for future use

$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP

プライベート IP アドレスをメモします。 後で既定のルートを作成する際に、これを使用します。

既定のルートを作成する

New-AzRouteTableAdd-AzRouteConfig を使用して、ファイアウォールを指す既定のルートを含むルート テーブルを作成し、それをワークロード サブネットに関連付けます。

$routeTableDG = New-AzRouteTable `
    -Name Firewall-rt-table `
    -ResourceGroupName Test-FW-RG `
    -Location "East US" `
    -DisableBgpRoutePropagation

# Create a route
Add-AzRouteConfig `
    -Name "DG-Route" `
    -RouteTable $routeTableDG `
    -AddressPrefix 0.0.0.0/0 `
    -NextHopType "VirtualAppliance" `
    -NextHopIpAddress $AzfwPrivateIP `
    | Set-AzRouteTable

# Associate the route table to the subnet
Set-AzVirtualNetworkSubnetConfig `
    -VirtualNetwork $testVnet `
    -Name Workload-SN `
    -AddressPrefix 10.0.2.0/24 `
    -RouteTable $routeTableDG | Set-AzVirtualNetwork

Srv-Work ネットワーク インターフェイスのプライマリおよびセカンダリ DNS アドレスを変更する

この手順のテスト目的で、サーバーのプライマリおよびセカンダリ DNS アドレスを構成します。 この構成は、一般的な Azure Firewall 要件ではありません。

$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface

ファイアウォールをテストする

今度は、ファイアウォールをテストして、想定したように機能することを確認します。

  1. Bastion を使用して Srv-Work 仮想マシンに接続し、サインインします。

    Azure Bastion を使用 Srv-Work 仮想マシンへの接続を示すスクリーンショット。

  2. SRV-Work で PowerShell ウィンドウを開き、次のコマンドを実行します。

    nslookup www.google.com
    nslookup www.microsoft.com
    

    どちらのコマンドも回答を返し、DNS クエリがファイアウォールを通過することを示します。

  3. 次のコマンドを実行します。

    Invoke-WebRequest -Uri https://www.google.com
    
    Invoke-WebRequest -Uri https://www.microsoft.com
    

    www.google.com要求は成功し、www.microsoft.com要求は失敗します。 この結果は、ファイアウォール規則が想定どおりに動作していることを示しています。

これで、ファイアウォール ポリシー規則が機能していることを確認しました。

  • 構成された外部 DNS サーバーを使用して、DNS 名を解決できます。
  • 1 つの許可された FQDN は参照できますが、それ以外は参照できません。

リソースをクリーンアップする

さらにテストするためにファイアウォール リソースを保持できます。 不要になった場合は、 Test-FW-RG リソース グループを削除して、ファイアウォール関連のすべてのリソースを削除します。

Remove-AzResourceGroup -Name Test-FW-RG

次のステップ