Implementación y configuración de Azure Firewall en una red híbrida con Azure PowerShellDeploy and configure Azure Firewall in a hybrid network using Azure PowerShell

Cuando conecta la red local a una red virtual de Azure para crear una red híbrida, la capacidad de controlar el acceso a los recursos de la red de Azure es parte importante de un plan de seguridad global.When you connect your on-premises network to an Azure virtual network to create a hybrid network, the ability to control access to your Azure network resources is an important part of an overall security plan.

Puede usar Azure Firewall para controlar el acceso de red en una red híbrida con reglas que definen el tráfico de red que se permite o que se rechaza.You can use Azure Firewall to control network access in a hybrid network using rules that define allowed and denied network traffic.

En este artículo se crearán tres redes virtuales:For this article, you create three virtual networks:

  • VNet-Hub: el firewall está en esta red virtual.VNet-Hub - the firewall is in this virtual network.
  • VNet-Spoke: la red virtual Spoke representa la carga de trabajo ubicada en Azure.VNet-Spoke - the spoke virtual network represents the workload located on Azure.
  • VNet-Onprem: la red virtual local representa una red local.VNet-Onprem - The on-premises virtual network represents an on-premises network. En una implementación real, se puede conectar mediante una conexión VPN o ExpressRoute.In an actual deployment, it can be connected by either a VPN or ExpressRoute connection. Para simplificar, este artículo usa una conexión de puerta de enlace de VPN y una red virtual ubicada en Azure para representar una red local.For simplicity, this article uses a VPN gateway connection, and an Azure-located virtual network is used to represent an on-premises network.

Firewall en una red híbrida

En este artículo, aprenderá a:In this article, you learn how to:

  • Declaración de las variablesDeclare the variables
  • Crear la red virtual del centro de firewallCreate the firewall hub virtual network
  • Crear la red virtual de tipo hub-and-spokeCreate the spoke virtual network
  • Crear la red virtual localCreate the on-premises virtual network
  • Configuración e implementación del firewallConfigure and deploy the firewall
  • Creación y conexión de las puertas de enlace de VPNCreate and connect the VPN gateways
  • Emparejar las redes virtuales de tipo hub-and-spokePeer the hub and spoke virtual networks
  • Creación de las rutasCreate the routes
  • Creación de las máquinas virtualesCreate the virtual machines
  • Probar el firewallTest the firewall

Si desea usar Azure Portal en lugar de completar este tutorial, consulte Tutorial: Implementación y configuración de Azure Firewall en una red híbrida con Azure Portal.If you want to use Azure portal instead to complete this tutorial, see Tutorial: Deploy and configure Azure Firewall in a hybrid network using the Azure portal.

Nota

Este artículo se ha actualizado para usar el nuevo módulo Az de Azure PowerShell.This article has been updated to use the new Azure PowerShell Az module. Aún puede usar el módulo de AzureRM que continuará recibiendo correcciones de errores hasta diciembre de 2020 como mínimo.You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Para más información acerca del nuevo módulo Az y la compatibilidad con AzureRM, consulte Introducing the new Azure PowerShell Az module (Presentación del nuevo módulo Az de Azure PowerShell).To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Para obtener instrucciones sobre la instalación del módulo Az, consulte Instalación de Azure PowerShell.For Az module installation instructions, see Install Azure PowerShell.

Requisitos previosPrerequisites

En este artículo es necesario ejecutar PowerShell en local.This article requires that you run PowerShell locally. Debe tener instalados el módulo de Azure PowerShell.You must have the Azure PowerShell module installed. Ejecute Get-Module -ListAvailable Az para encontrar la versión.Run Get-Module -ListAvailable Az to find the version. Si necesita actualizarla, consulte Instalación del módulo de Azure PowerShell.If you need to upgrade, see Install Azure PowerShell module. Después de verificar la versión de PowerShell, ejecute Login-AzAccount para crear una conexión con Azure.After you verify the PowerShell version, run Login-AzAccount to create a connection with Azure.

Hay tres requisitos clave para que este escenario funcione correctamente:There are three key requirements for this scenario to work correctly:

  • Una ruta definida por el usuario en la subred de radio que apunte a la dirección IP de Azure Firewall como puerta de enlace predeterminada.A User Defined Route (UDR) on the spoke subnet that points to the Azure Firewall IP address as the default gateway. La propagación de las rutas BGP debe deshabilitarse en esta tabla de rutas.BGP route propagation must be Disabled on this route table.

  • Una ruta definida por el usuario en la subred de la puerta de enlace del centro debe apuntar a la dirección IP del firewall como próximo salto para las redes de radio.A UDR on the hub gateway subnet must point to the firewall IP address as the next hop to the spoke networks.

    No se requiere ninguna ruta definida por el usuario en la subred de Azure Firewall, ya que obtiene las rutas de BGP.No UDR is required on the Azure Firewall subnet, as it learns routes from BGP.

  • Asegúrese de establecer AllowGatewayTransit al emparejar VNet-Hub con VNet-Spoke y UseRemoteGateways al emparejar VNet-Spoke con VNet-Hub.Make sure to set AllowGatewayTransit when peering VNet-Hub to VNet-Spoke and UseRemoteGateways when peering VNet-Spoke to VNet-Hub.

Consulte la sección Creación de rutas en este artículo para ver cómo se crean estas rutas.See the Create Routes section in this article to see how these routes are created.

Nota

Azure Firewall debe tener conectividad directa a Internet.Azure Firewall must have direct Internet connectivity. Si AzureFirewallSubnet aprende una ruta predeterminada a la red local mediante BGP, debe reemplazarla por una UDR 0.0.0.0/0 con el valor NextHopType establecido como Internet para mantener la conectividad directa a Internet.If your AzureFirewallSubnet learns a default route to your on-premises network via BGP, you must override this with a 0.0.0.0/0 UDR with the NextHopType value set as Internet to maintain direct Internet connectivity. De forma predeterminada, Azure Firewall no admite la tunelización forzada a una red local.By default, Azure Firewall doesn't support forced tunneling to an on-premises network.

Sin embargo, si la configuración requiere la tunelización forzada a una red local, Microsoft proporcionará soporte según el caso.However, if your configuration requires forced tunneling to an on-premises network, Microsoft will support it on a case by case basis. Póngase en contacto con soporte técnico para que podamos revisar su caso.Contact Support so that we can review your case. Si acepta, incluiremos su suscripción en una lista blanca y nos aseguraremos de que se mantenga la conectividad del firewall a Internet requerida.If accepted, we'll whitelist your subscription and ensure the required firewall Internet connectivity is maintained.

Nota

El tráfico entre redes virtuales emparejadas directamente se enruta directamente aunque una ruta definida por el usuario apunte a Azure Firewall como puerta de enlace predeterminada.Traffic between directly peered VNets is routed directly even if a UDR points to Azure Firewall as the default gateway. Para enviar tráfico de subred a subred al firewall en este escenario, una UDR debe contener el prefijo de red de la subred de destino de forma explícita en ambas subredes.To send subnet to subnet traffic to the firewall in this scenario, a UDR must contain the target subnet network prefix explicitly on both subnets.

Para revisar la documentación de referencia de Azure PowerShell relacionada, consulte Referencia de Azure PowerShell.To review the related Azure PowerShell reference documentation, see Azure PowerShell Reference.

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.If you don't have an Azure subscription, create a free account before you begin.

Declaración de las variablesDeclare the variables

En el ejemplo siguiente se declaran las variables con los valores para este artículo.The following example declares the variables using the values for this article. En algunos casos, puede que tenga que reemplazar algunos valores por los suyos propios para trabajar en su suscripción.In some cases, you might need to replace some values with your own to work in your subscription. Si es necesario, modifique las variables y después cópielas y péguelas en la consola de PowerShell.Modify the variables if needed, then copy and paste them into your PowerShell console.

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

# Variables for the firewall hub VNet

$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"

Crear la red virtual del centro de firewallCreate the firewall hub virtual network

En primer lugar, cree el grupo de recursos en el que se incluirán los recursos de este artículo:First, create the resource group to contain the resources for this article:

  New-AzResourceGroup -Name $RG1 -Location $Location1

Defina las subredes que se incluirán en la red virtual:Define the subnets to be included in the virtual network:

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

Ahora, cree la red virtual del centro de firewall:Now, create the firewall hub virtual network:

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

Solicite que se asigne una dirección IP pública a la puerta de enlace de VPN que creará para la red virtual.Request a public IP address to be allocated to the VPN gateway you'll create for your virtual network. Observe que AllocationMethod es Dynamic.Notice that the AllocationMethod is Dynamic. No puede especificar la dirección IP que desea usar.You can't specify the IP address that you want to use. Se asigna dinámicamente a la puerta de enlace de VPN.It's dynamically allocated to your VPN gateway.

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

Crear la red virtual de tipo hub-and-spokeCreate the spoke virtual network

Defina las subredes que se incluirán en la red virtual de tipo hub-and-spoke:Define the subnets to be included in the spoke virtual network:

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

Cree la red virtual de tipo hub-and-spoke:Create the spoke virtual network:

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

Crear la red virtual localCreate the on-premises virtual network

Defina las subredes que se incluirán en la red virtual:Define the subnets to be included in the virtual network:

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

Ahora, cree la red virtual local:Now, create the on-premises virtual network:

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

Solicite que se asigne una dirección IP pública a la puerta de enlace que creará para la red virtual.Request a public IP address to be allocated to the gateway you'll create for the virtual network. Observe que AllocationMethod es Dynamic.Notice that the AllocationMethod is Dynamic. No puede especificar la dirección IP que desea usar.You can't specify the IP address that you want to use. Se asigna dinámicamente a la puerta de enlace.It's dynamically allocated to your gateway.

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

Configuración e implementación del firewallConfigure and deploy the firewall

Ahora, implemente el firewall en la red virtual de centro.Now deploy the firewall into the hub virtual network.

# 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

Configuración de reglas de redConfigure network rules

$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

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

Creación y conexión de las puertas de enlace de VPNCreate and connect the VPN gateways

Las redes virtuales de centro y local están conectadas mediante puertas de enlace VPN.The hub and on-premises virtual networks are connected via VPN gateways.

Creación de una puerta de enlace VPN para la red virtual de centroCreate a VPN gateway for the hub virtual network

Establezca la configuración de la puerta de enlace de VPN.Create the VPN gateway configuration. La configuración de la puerta de enlace de VPN define la subred y la dirección IP pública.The VPN gateway configuration defines the subnet and the public IP address to use.

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

Cree la puerta de enlace VPN para la red virtual de centro.Now create the VPN gateway for the hub virtual network. Las configuraciones de red a red requieren un VpnType RouteBased.Network-to-network configurations require a RouteBased VpnType. La creación de una puerta de enlace de VPN suele tardar 45 minutos o más, según la SKU de la puerta de enlace de VPN seleccionada.Creating a VPN gateway can often take 45 minutes or more, depending on the selected VPN gateway SKU.

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

Creación de una puerta de enlace VPN para la red virtual localCreate a VPN gateway for the on-premises virtual network

Establezca la configuración de la puerta de enlace de VPN.Create the VPN gateway configuration. La configuración de la puerta de enlace de VPN define la subred y la dirección IP pública.The VPN gateway configuration defines the subnet and the public IP address to use.

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

Cree la puerta de enlace VPN para la red virtual local.Now create the VPN gateway for the on-premises virtual network. Las configuraciones de red a red requieren un VpnType RouteBased.Network-to-network configurations require a RouteBased VpnType. La creación de una puerta de enlace de VPN suele tardar 45 minutos o más, según la SKU de la puerta de enlace de VPN seleccionada.Creating a VPN gateway can often take 45 minutes or more, depending on the selected VPN gateway SKU.

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

Creación de las conexionesCreate the VPN connections

Ahora puede crear las conexiones de VPN entre las puertas de enlace de centro y local.Now you can create the VPN connections between the hub and on-premises gateways

Obtención de las puertas de enlace de VPNGet the VPN gateways

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

Crear las conexionesCreate the connections

En este paso va a crear la conexión entre la red virtual de centro y la red virtual local.In this step, you create the connection from the hub virtual network to the on-premises virtual network. Verá una clave compartida a la que se hace referencia en los ejemplos.You'll see a shared key referenced in the examples. Puede utilizar sus propios valores para la clave compartida.You can use your own values for the shared key. Lo importante es que la clave compartida coincida en ambas conexiones.The important thing is that the shared key must match for both connections. Se tardará unos momentos en terminar de crear la conexión.Creating a connection can take a short while to complete.

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

Cree la conexión de red entre la red virtual local y la red virtual de centro.Create the on-premises to hub virtual network connection. Este paso es similar al anterior, excepto que se crea una conexión desde la red virtual local a la red virtual de centro.This step is similar to the previous one, except you create the connection from VNet-Onprem to VNet-hub. Asegúrese de que coincidan las claves compartidas.Make sure the shared keys match. Después de unos minutos, se habrá establecido la conexión.The connection will be established after a few minutes.

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

Comprobación de la conexiónVerify the connection

Para comprobar que la conexión se realizó correctamente, use el cmdlet Get-AzVirtualNetworkGatewayConnection, con o sin -Debug.You can verify a successful connection by using the Get-AzVirtualNetworkGatewayConnection cmdlet, with or without -Debug. Puede usar el siguiente ejemplo de cmdlet, configurando los valores para que coincidan con los tuyos.Use the following cmdlet example, configuring the values to match your own. Cuando se le pida, seleccione A para ejecutar Todo.If prompted, select A to run All. En el ejemplo, -Name es el nombre de la conexión que desea probar.In the example, -Name refers to the name of the connection that you want to test.

Get-AzVirtualNetworkGatewayConnection -Name $ConnectionNameHub -ResourceGroupName $RG1

Cuando el cmdlet termine, consulte los valores.After the cmdlet finishes, view the values. En el ejemplo siguiente, el estado de conexión aparece como Connected (Conectado) y pueden verse los bytes de entrada y salida.In the following example, the connection status shows as Connected and you can see ingress and egress bytes.

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

Emparejar las redes virtuales de tipo hub-and-spokePeer the hub and spoke virtual networks

Ahora, empareje las redes virtuales de tipo hub-and-spoke.Now peer the hub and spoke virtual networks.

# 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

Creación de las rutasCreate the routes

A continuación, cree un par de rutas:Next, create a couple routes:

  • Una ruta desde la subred de puerta de enlace de concentrador a la subred de radio mediante la dirección IP del firewall.A route from the hub gateway subnet to the spoke subnet through the firewall IP address
  • Una ruta predeterminada desde la subred de radio mediante la dirección IP del firewall.A default route from the spoke subnet through the firewall IP address
#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
$routeTableSpokeDG = New-AzRouteTable `
  -Name 'UDR-DG' `
  -ResourceGroupName $RG1 `
  -location $Location1 `
  -DisableBgpRoutePropagation

#Create a route
Get-AzRouteTable `
  -ResourceGroupName $RG1 `
  -Name UDR-DG `
  | Add-AzRouteConfig `
  -Name "ToSpoke" `
  -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

Creación de máquinas virtualesCreate virtual machines

Ahora, cree la carga de trabajo de tipo hub-and-spoke y las máquinas virtuales locales, y colóquelas en las subredes adecuadas.Now create the spoke workload and on-premises virtual machines, and place them in the appropriate subnets.

Creación de la máquina virtual de cargas de trabajoCreate the workload virtual machine

Cree una máquina virtual en la red virtual de tipo hub-and-spoke, que ejecute IIS, sin ninguna dirección IP pública y que permita que se haga ping en ella.Create a virtual machine in the spoke virtual network, running IIS, with no public IP address, and allows pings in. Cuando se le solicite, escriba el nombre de usuario y la contraseña de la máquina virtual.When prompted, type a user name and password for the virtual machine.

# 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

Creación de la máquina virtual localCreate the on-premises virtual machine

Se trata de una máquina virtual sencilla con una dirección IP pública a la que se puede conectar mediante Escritorio remoto.This is a simple virtual machine that you use to connect using Remote Desktop to the public IP address. Desde allí, puede conectarse al servidor local a través del firewall.From there, you then connect to the on-premises server through the firewall. Cuando se le solicite, escriba el nombre de usuario y la contraseña de la máquina virtual.When prompted, type a user name and password for the virtual machine.

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

Probar el firewallTest the firewall

En primer lugar, obtenga y anote la dirección IP privada de la máquina virtual VM-spoke-01.First, get and then note the private IP address for VM-spoke-01 virtual machine.

$NIC.IpConfigurations.privateipaddress

En Azure Portal, conéctese a la máquina virtual VM-Onprem.From the Azure portal, connect to the VM-Onprem virtual machine.

Abra un explorador web en VM-Onprem y vaya a http://<VM-spoke-01 private IP>.Open a web browser on VM-Onprem, and browse to http://<VM-spoke-01 private IP>.

Verá la página predeterminada de Internet Information Services.You should see the Internet Information Services default page.

En VM-Onprem, abra un escritorio remoto a VM-spoke-01 en la dirección IP privada.From VM-Onprem, open a remote desktop to VM-spoke-01 at the private IP address.

Se realizará la conexión y podrá iniciar sesión con el nombre de usuario y la contraseña elegidos.Your connection should succeed, and you should be able to sign in using your chosen username and password.

Con ello, ha comprobado que las reglas de firewall funcionan:So now you've verified that the firewall rules are working:

  • Puede examinar el servidor web en la red virtual de tipo hub-and-spoke.You can browse web server on the spoke virtual network.
  • Puede conectarse al servidor en la red virtual de tipo hub-and-spoke mediante RDP.You can connect to the server on the spoke virtual network using RDP.

A continuación, cambie la acción de recopilación de la regla de red del firewall a Deny (Denegar) para comprobar que las reglas del firewall funcionan según lo previsto.Next, change the firewall network rule collection action to Deny to verify that the firewall rules work as expected. Ejecute el siguiente script para cambiar la acción de recopilación de la regla a Deny (Denegar).Run the following script to change the rule collection action to Deny.

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

Set-AzFirewall -AzureFirewall $azfw

Ahora, ejecute de nuevo las pruebas.Now run the tests again. Esta vez, todas producirán un error.They should all fail this time. Cierre los escritorios remotos existentes antes de probar las reglas modificadas.Close any existing remote desktops before testing the changed rules.

Limpieza de recursosClean up resources

Puede conservar los recursos relacionados con el firewall para el siguiente tutorial o, si ya no los necesita, eliminar el grupo de recursos FW-Hybrid-Test para eliminarlos todos.You can keep your firewall resources for the next tutorial, or if no longer needed, delete the FW-Hybrid-Test resource group to delete all firewall-related resources.

Pasos siguientesNext steps

A continuación, puede supervisar los registros de Azure Firewall.Next, you can monitor the Azure Firewall logs.

Tutorial: Supervisión de los registros de Azure FirewallTutorial: Monitor Azure Firewall logs