Distribuera och konfigurera Azure Firewall i ett hybridnätverk med hjälp av Azure PowerShell

När du ansluter ditt lokala nätverk till ett virtuellt Azure-nätverk för att skapa ett hybridnätverk är förmågan att styra åtkomst till dina Azure-nätverksresurser en viktig del av den övergripande säkerhetsplanen.

Du kan använda Azure Firewall för att styra nätverksåtkomsten i ett hybridnätverk med hjälp av regler som definierar tillåten och nekad nätverkstrafik.

I den här artikeln skapar du tre virtuella nätverk:

  • VNet-Hub: Brandväggen finns i det här virtuella nätverket.
  • VNet-Spoke: Det virtuella ekernätverket representerar arbetsbelastningen som finns i Azure.
  • VNet-Onprem: Det lokala virtuella nätverket representerar ett lokalt nätverk. I en faktisk distribution kan du ansluta till den med hjälp av antingen en vpn-anslutning (virtuellt privat nätverk) eller en Azure ExpressRoute-anslutning. För enkelhetens skull använder den här artikeln en VPN-gatewayanslutning, och ett Azure-lokaliserat virtuellt nätverk representerar ett lokalt nätverk.

Diagram som visar en brandvägg i ett hybridnätverk.

Om du i stället vill använda Azure-portalen för att slutföra procedurerna i den här artikeln kan du läsa Distribuera och konfigurera Azure Firewall i ett hybridnätverk med hjälp av Azure-portalen.

Kommentar

Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.

Förutsättningar

Den här artikeln kräver att du kör PowerShell lokalt. Du måste ha Azure PowerShell-modulen installerad. Kör Get-Module -ListAvailable Az för att hitta versionen. Om du behöver uppgradera kan du läsa Installera Azure PowerShell-modulen. När du har verifierat PowerShell-versionen kör du Login-AzAccount för att skapa en anslutning till Azure.

Det finns tre viktiga krav för att det här scenariot ska fungera korrekt:

  • En användardefinierad väg (UDR) i ekerundernätet som pekar på Ip-adressen för Azure Firewall som standardgateway. Spridning av routning för virtuell nätverksgateway måste inaktiveras i den här routningstabellen.

  • En UDR i hubbgatewayens undernät måste peka på brandväggens IP-adress som nästa hopp till ekernätverken.

    Ingen UDR krävs i Azure Firewall-undernätet eftersom det lär sig vägar från Border Gateway Protocol (BGP).

  • Se till att ange AllowGatewayTransit när du peering VNet-Hub till VNet-Spoke. Ange UseRemoteGateways när du peering VNet-Spoke till VNet-Hub.

Avsnittet Skapa vägar senare i den här artikeln visar hur du skapar dessa vägar.

Kommentar

Azure Firewall måste ha direkt Internetanslutning. Om ditt AzureFirewallSubnet-undernät lär sig en standardväg till ditt lokala nätverk via BGP måste du konfigurera Azure Firewall i läget för tvingad tunneltrafik. Om det här är en befintlig Azure Firewall-instans som inte kan konfigureras om i läget för tvingad tunneltrafik rekommenderar vi att du lägger till en 0.0.0.0/0 UDR i AzureFirewallSubnet-undernätet med värdet NextHopType inställt på Internet att upprätthålla direkt internetanslutning.

Mer information finns i Tvingad tunneltrafik i Azure Firewall.

Trafik mellan direkt peer-kopplade virtuella nätverk dirigeras direkt, även om en UDR pekar på Azure Firewall som standardgateway. Om du vill skicka trafik från undernät till undernät till brandväggen i det här scenariot måste en UDR innehålla målundernätsprefixet explicit i båda undernäten.

Mer information om hur du granskar den relaterade Azure PowerShell-referensdokumentationen finns i New-AzFirewall.

Om du inte har någon Azure-prenumeration skapar du ett kostnadsfritt konto innan du börjar.

Deklarera variablerna

I följande exempel deklareras variablerna med hjälp av värdena för den här artikeln. I vissa fall kan du behöva ersätta vissa värden med dina egna för att de ska fungera i din prenumeration. Ändra variablerna om det behövs och kopiera och klistra in dem i PowerShell-konsolen.

$RG1 = "FW-Hybrid-Test"
$Location1 = "East US"

# Variables for the firewall hub virtual network

$VNetnameHub = "VNet-Hub"
$SNnameHub = "AzureFirewallSubnet"
$VNetHubPrefix = "10.5.0.0/16"
$SNHubPrefix = "10.5.0.0/24"
$SNGWHubPrefix = "10.5.1.0/24"
$GWHubName = "GW-hub"
$GWHubpipName = "VNet-Hub-GW-pip"
$GWIPconfNameHub = "GW-ipconf-hub"
$ConnectionNameHub = "hub-to-Onprem"

# Variables for the spoke virtual network

$VnetNameSpoke = "VNet-Spoke"
$SNnameSpoke = "SN-Workload"
$VNetSpokePrefix = "10.6.0.0/16"
$SNSpokePrefix = "10.6.0.0/24"
$SNSpokeGWPrefix = "10.6.1.0/24"

# Variables for the on-premises virtual network

$VNetnameOnprem = "Vnet-Onprem"
$SNNameOnprem = "SN-Corp"
$VNetOnpremPrefix = "192.168.0.0/16"
$SNOnpremPrefix = "192.168.1.0/24"
$SNGWOnpremPrefix = "192.168.2.0/24"
$GWOnpremName = "GW-Onprem"
$GWIPconfNameOnprem = "GW-ipconf-Onprem"
$ConnectionNameOnprem = "Onprem-to-hub"
$GWOnprempipName = "VNet-Onprem-GW-pip"

$SNnameGW = "GatewaySubnet"

Skapa brandväggens virtuella hubbnätverk

Skapa först resursgruppen som ska innehålla resurserna för den här artikeln:

  New-AzResourceGroup -Name $RG1 -Location $Location1

Definiera de undernät som ska ingå i det virtuella nätverket:

$FWsub = New-AzVirtualNetworkSubnetConfig -Name $SNnameHub -AddressPrefix $SNHubPrefix
$GWsub = New-AzVirtualNetworkSubnetConfig -Name $SNnameGW -AddressPrefix $SNGWHubPrefix

Skapa det virtuella brandväggshubbens virtuella nätverk:

$VNetHub = New-AzVirtualNetwork -Name $VNetnameHub -ResourceGroupName $RG1 `
-Location $Location1 -AddressPrefix $VNetHubPrefix -Subnet $FWsub,$GWsub

Begär att en offentlig IP-adress allokeras till den VPN-gateway som du skapar för ditt virtuella nätverk. Observera att AllocationMethod värdet är Dynamic. Du kan inte ange den IP-adress som du vill använda. Den allokeras dynamiskt till VPN-gatewayen.

$gwpip1 = New-AzPublicIpAddress -Name $GWHubpipName -ResourceGroupName $RG1 `
-Location $Location1 -AllocationMethod Dynamic

Skapa det virtuella ekernätverket

Definiera de undernät som ska ingå i det virtuella ekernätverket:

$Spokesub = New-AzVirtualNetworkSubnetConfig -Name $SNnameSpoke -AddressPrefix $SNSpokePrefix
$GWsubSpoke = New-AzVirtualNetworkSubnetConfig -Name $SNnameGW -AddressPrefix $SNSpokeGWPrefix

Skapa det virtuella ekernätverket:

$VNetSpoke = New-AzVirtualNetwork -Name $VnetNameSpoke -ResourceGroupName $RG1 `
-Location $Location1 -AddressPrefix $VNetSpokePrefix -Subnet $Spokesub,$GWsubSpoke

Skapa det lokala virtuella nätverket

Definiera de undernät som ska ingå i det virtuella nätverket:

$Onpremsub = New-AzVirtualNetworkSubnetConfig -Name $SNNameOnprem -AddressPrefix $SNOnpremPrefix
$GWOnpremsub = New-AzVirtualNetworkSubnetConfig -Name $SNnameGW -AddressPrefix $SNGWOnpremPrefix

Skapa det lokala virtuella nätverket:

$VNetOnprem = New-AzVirtualNetwork -Name $VNetnameOnprem -ResourceGroupName $RG1 `
-Location $Location1 -AddressPrefix $VNetOnpremPrefix -Subnet $Onpremsub,$GWOnpremsub

Begär att en offentlig IP-adress allokeras till den gateway som du skapar för det virtuella nätverket. Observera att AllocationMethod värdet är Dynamic. Du kan inte ange den IP-adress som du vill använda. Den allokeras dynamiskt till gatewayen.

$gwOnprempip = New-AzPublicIpAddress -Name $GWOnprempipName -ResourceGroupName $RG1 `
-Location $Location1 -AllocationMethod Dynamic

Konfigurera och distribuera brandväggen

Distribuera brandväggen till det virtuella hubbnätverket:

# Get a public IP for the firewall
$FWpip = New-AzPublicIpAddress -Name "fw-pip" -ResourceGroupName $RG1 `
  -Location $Location1 -AllocationMethod Static -Sku Standard
# Create the firewall
$Azfw = New-AzFirewall -Name AzFW01 -ResourceGroupName $RG1 -Location $Location1 -VirtualNetworkName $VNetnameHub -PublicIpName fw-pip

#Save the firewall private IP address for future use

$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP

Konfigurera nätverksregler:

$Rule1 = New-AzFirewallNetworkRule -Name "AllowWeb" -Protocol TCP -SourceAddress $SNOnpremPrefix `
   -DestinationAddress $VNetSpokePrefix -DestinationPort 80

$Rule2 = New-AzFirewallNetworkRule -Name "AllowRDP" -Protocol TCP -SourceAddress $SNOnpremPrefix `
   -DestinationAddress $VNetSpokePrefix -DestinationPort 3389

$Rule3 = New-AzFirewallNetworkRule -Name "AllowPing" -Protocol ICMP -SourceAddress $SNOnpremPrefix `
   -DestinationAddress $VNetSpokePrefix -DestinationPort

$NetRuleCollection = New-AzFirewallNetworkRuleCollection -Name RCNet01 -Priority 100 `
   -Rule $Rule1,$Rule2 -ActionType "Allow"
$Azfw.NetworkRuleCollections = $NetRuleCollection
Set-AzFirewall -AzureFirewall $Azfw

Skapa och ansluta VPN-gatewayer

De virtuella hubbnätverken och de lokala virtuella nätverken ansluts via VPN-gatewayer.

Skapa en VPN-gateway för det virtuella hubbnätverket

Skapa VPN Gateway-konfigurationen för det virtuella hubbnätverket. VPN-gateway-konfigurationen definierar undernätet och den offentliga IP-adress som ska användas.

$vnet1 = Get-AzVirtualNetwork -Name $VNetnameHub -ResourceGroupName $RG1
$subnet1 = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet1
$gwipconf1 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfNameHub `
-Subnet $subnet1 -PublicIpAddress $gwpip1

Skapa nu VPN-gatewayen för det virtuella hubbnätverket. Nätverks-till-nätverk-konfigurationer kräver värdet VpnTypeRouteBased. Det kan ofta ta 45 minuter eller mer att skapa en VPN-gateway, beroende på vilken SKU du väljer.

New-AzVirtualNetworkGateway -Name $GWHubName -ResourceGroupName $RG1 `
-Location $Location1 -IpConfigurations $gwipconf1 -GatewayType Vpn `
-VpnType RouteBased -GatewaySku basic

Skapa en VPN-gateway för det lokala virtuella nätverket

Skapa VPN Gateway-konfigurationen för det lokala virtuella nätverket. VPN-gateway-konfigurationen definierar undernätet och den offentliga IP-adress som ska användas.

$vnet2 = Get-AzVirtualNetwork -Name $VNetnameOnprem -ResourceGroupName $RG1
$subnet2 = Get-AzVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet2
$gwipconf2 = New-AzVirtualNetworkGatewayIpConfig -Name $GWIPconfNameOnprem `
-Subnet $subnet2 -PublicIpAddress $gwOnprempip

Skapa nu VPN-gatewayen för det lokala virtuella nätverket. Nätverks-till-nätverk-konfigurationer kräver värdet VpnTypeRouteBased. Det kan ofta ta 45 minuter eller mer att skapa en VPN-gateway, beroende på vilken SKU du väljer.

New-AzVirtualNetworkGateway -Name $GWOnpremName -ResourceGroupName $RG1 `
-Location $Location1 -IpConfigurations $gwipconf2 -GatewayType Vpn `
-VpnType RouteBased -GatewaySku basic

Skapa VPN-anslutningarna

Skapa VPN-anslutningarna mellan hubben och lokala gatewayer.

Hämta VPN-gatewayerna

$vnetHubgw = Get-AzVirtualNetworkGateway -Name $GWHubName -ResourceGroupName $RG1
$vnetOnpremgw = Get-AzVirtualNetworkGateway -Name $GWOnpremName -ResourceGroupName $RG1

Skapa anslutningarna

I det här steget skapar du anslutningen från det virtuella hubbnätverket till det lokala virtuella nätverket. Exemplen visar en delad nyckel, men du kan använda dina egna värden för den delade nyckeln. Det är viktigt att den delade nyckeln matchar båda anslutningarna. Att skapa en anslutning kan ta en stund att slutföra.

New-AzVirtualNetworkGatewayConnection -Name $ConnectionNameHub -ResourceGroupName $RG1 `
-VirtualNetworkGateway1 $vnetHubgw -VirtualNetworkGateway2 $vnetOnpremgw -Location $Location1 `
-ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3'

Skapa den virtuella nätverksanslutningen från lokal plats till hubben. Det här steget liknar det föregående, förutom att du skapar anslutningen från VNet-Onprem till VNet-Hub. Kontrollera att de delade nycklarna matchar. Anslutningen upprättas efter några minuter.

New-AzVirtualNetworkGatewayConnection -Name $ConnectionNameOnprem -ResourceGroupName $RG1 `
-VirtualNetworkGateway1 $vnetOnpremgw -VirtualNetworkGateway2 $vnetHubgw -Location $Location1 `
-ConnectionType Vnet2Vnet -SharedKey 'AzureA1b2C3'

Verifiera anslutningen

Du kan verifiera en lyckad anslutning med hjälp av cmdleten Get-AzVirtualNetworkGatewayConnection , med eller utan -Debug.

Använd följande cmdlet-exempel, men konfigurera värdena så att de matchar dina egna. Om du uppmanas väljer du A att köra All. I exemplet -Name refererar till namnet på den anslutning som du vill testa.

Get-AzVirtualNetworkGatewayConnection -Name $ConnectionNameHub -ResourceGroupName $RG1

Visa värdena när cmdleten är klar. I följande exempel visas anslutningsstatusen Connected, tillsammans med inkommande och utgående byte:

"connectionStatus": "Connected",
"ingressBytesTransferred": 33509044,
"egressBytesTransferred": 4142431

Peera de virtuella hubb- och ekernätverken

Peer-koppla de virtuella nätverken hubb och eker:

# Peer hub to spoke
Add-AzVirtualNetworkPeering -Name HubtoSpoke -VirtualNetwork $VNetHub -RemoteVirtualNetworkId $VNetSpoke.Id -AllowGatewayTransit

# Peer spoke to hub
Add-AzVirtualNetworkPeering -Name SpoketoHub -VirtualNetwork $VNetSpoke -RemoteVirtualNetworkId $VNetHub.Id -AllowForwardedTraffic -UseRemoteGateways

Skapa vägarna

Använd följande kommandon för att skapa dessa vägar:

  • En väg från hubbgateway-undernätet till ekerundernätet via brandväggens IP-adress
  • En standardväg från ekerundernätet via brandväggens IP-adress
#Create a route table
$routeTableHubSpoke = New-AzRouteTable `
  -Name 'UDR-Hub-Spoke' `
  -ResourceGroupName $RG1 `
  -location $Location1

#Create a route
Get-AzRouteTable `
  -ResourceGroupName $RG1 `
  -Name UDR-Hub-Spoke `
  | Add-AzRouteConfig `
  -Name "ToSpoke" `
  -AddressPrefix $VNetSpokePrefix `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress $AzfwPrivateIP `
 | Set-AzRouteTable

#Associate the route table to the subnet

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $VNetHub `
  -Name $SNnameGW `
  -AddressPrefix $SNGWHubPrefix `
  -RouteTable $routeTableHubSpoke | `
Set-AzVirtualNetwork

#Now, create the default route

#Create a table, with BGP route propagation disabled. The property is now called "Virtual network gateway route propagation," but the API still refers to the parameter as "DisableBgpRoutePropagation."
$routeTableSpokeDG = New-AzRouteTable `
  -Name 'UDR-DG' `
  -ResourceGroupName $RG1 `
  -location $Location1 `
  -DisableBgpRoutePropagation

#Create a route
Get-AzRouteTable `
  -ResourceGroupName $RG1 `
  -Name UDR-DG `
  | Add-AzRouteConfig `
  -Name "ToFirewall" `
  -AddressPrefix 0.0.0.0/0 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress $AzfwPrivateIP `
 | Set-AzRouteTable

#Associate the route table to the subnet

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $VNetSpoke `
  -Name $SNnameSpoke `
  -AddressPrefix $SNSpokePrefix `
  -RouteTable $routeTableSpokeDG | `
Set-AzVirtualNetwork

Skapa virtuella datorer

Skapa ekerarbetsbelastningen och lokala virtuella datorer och placera dem i lämpliga undernät.

Skapa den virtuella arbetsbelastningsdatorn

Skapa en virtuell dator i det virtuella ekernätverket som kör IIS (Internet Information Services), har ingen offentlig IP-adress och tillåter ping. När du uppmanas att ange ett användarnamn och lösenord för den virtuella datorn.

# Create an inbound network security group rule for ports 3389 and 80
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name Allow-RDP  -Protocol Tcp `
  -Direction Inbound -Priority 200 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix $SNSpokePrefix -DestinationPortRange 3389 -Access Allow
$nsgRuleWeb = New-AzNetworkSecurityRuleConfig -Name Allow-web  -Protocol Tcp `
  -Direction Inbound -Priority 202 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix $SNSpokePrefix -DestinationPortRange 80 -Access Allow

# Create a network security group
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $RG1 -Location $Location1 -Name NSG-Spoke02 -SecurityRules $nsgRuleRDP,$nsgRuleWeb

#Create the NIC
$NIC = New-AzNetworkInterface -Name spoke-01 -ResourceGroupName $RG1 -Location $Location1 -SubnetId $VnetSpoke.Subnets[0].Id -NetworkSecurityGroupId $nsg.Id

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

#Create the virtual machine
New-AzVM -ResourceGroupName $RG1 -Location $Location1 -VM $VirtualMachine -Verbose

#Install IIS on the VM
Set-AzVMExtension `
    -ResourceGroupName $RG1 `
    -ExtensionName IIS `
    -VMName VM-Spoke-01 `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server"}' `
    -Location $Location1

#Create a host firewall rule to allow pings in
Set-AzVMExtension `
    -ResourceGroupName $RG1 `
    -ExtensionName IIS `
    -VMName VM-Spoke-01 `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell New-NetFirewallRule –DisplayName "Allow ICMPv4-In" –Protocol ICMPv4"}' `
    -Location $Location1

Skapa den lokala virtuella datorn

Skapa en enkel virtuell dator som du kan använda för att ansluta via fjärråtkomst till den offentliga IP-adressen. Därifrån kan du ansluta till den lokala servern via brandväggen. När du uppmanas att ange ett användarnamn och lösenord för den virtuella datorn.

New-AzVm `
    -ResourceGroupName $RG1 `
    -Name "VM-Onprem" `
    -Location $Location1 `
    -VirtualNetworkName $VNetnameOnprem `
    -SubnetName $SNNameOnprem `
    -OpenPorts 3389 `
    -Size "Standard_DS2"

Kommentar

Azure tillhandahåller en standard-IP för utgående åtkomst för virtuella datorer som antingen inte har tilldelats någon offentlig IP-adress eller som finns i serverdelspoolen för en intern grundläggande Azure-lastbalanserare. Ip-mekanismen för utgående åtkomst har en utgående IP-adress som inte kan konfigureras.

Standard-IP för utgående åtkomst inaktiveras när någon av följande händelser inträffar:

  • En offentlig IP-adress tilldelas till den virtuella datorn.
  • Den virtuella datorn placeras i serverdelspoolen för en standardlastbalanserare, med eller utan regler för utgående trafik.
  • En Azure NAT Gateway-resurs tilldelas till den virtuella datorns undernät.

Virtuella datorer som du skapar med hjälp av vm-skalningsuppsättningar i flexibelt orkestreringsläge har inte standardåtkomst till utgående trafik.

Mer information om utgående anslutningar i Azure finns i Standardutgående åtkomst i Azure och Använda SNAT (Source Network Address Translation) för utgående anslutningar.

testa brandväggen.

  1. Hämta och notera sedan den privata IP-adressen för den virtuella datorn VM-spoke-01 :

    $NIC.IpConfigurations.privateipaddress
    
  2. Från Azure-portalen ansluter du till den virtuella datorn VM-Onprem.

  3. Öppna en Windows PowerShell-kommandotolk på VM-Onprem och pinga den privata IP-adressen för VM-spoke-01. Du bör få ett svar.

  4. Öppna en webbläsare på VM-Onprem och bläddra till http://<VM-spoke-01 private IP>. Standardsidan för IIS bör öppnas.

  5. Öppna en fjärråtkomstanslutning till VM-spoke-01 på den privata IP-adressen från VM-Onprem. Anslutningen bör lyckas och du bör kunna logga in med ditt valda användarnamn och lösenord.

Nu när du har kontrollerat att brandväggsreglerna fungerar kan du:

  • Pinga servern i det virtuella ekernätverket.
  • Bläddra till webbservern i det virtuella ekernätverket.
  • Anslut till servern i det virtuella ekernätverket med hjälp av RDP.

Kör sedan följande skript för att ändra åtgärden för samlingen av brandväggsnätverksregler till Deny:

$rcNet = $azfw.GetNetworkRuleCollectionByName("RCNet01")
$rcNet.action.type = "Deny"

Set-AzFirewall -AzureFirewall $azfw

Stäng alla befintliga fjärråtkomstanslutningar. Kör testerna igen för att testa de ändrade reglerna. De bör alla misslyckas den här gången.

Rensa resurser

Du kan behålla brandväggsresurserna för nästa självstudie. Om du inte längre behöver dem tar du bort resursgruppen FW-Hybrid-Test för att ta bort alla brandväggsrelaterade resurser.

Nästa steg

Övervaka Azure Firewall-loggar