Implementación y configuración de una directiva de Azure Firewall mediante Azure PowerShell
El control del acceso de red saliente es una parte importante de un plan de seguridad de red de ámbito general. Por ejemplo, es posible que desee limitar el acceso a sitios web. O bien, que desee limitar las direcciones IP de salida y los puertos a los que se puede acceder.
Una manera de controlar el acceso de red saliente desde una subred de Azure es con Azure Firewall y una directiva de firewall. Con Azure Firewall, puede configurar:
- Reglas de aplicación que definen los nombres de dominio completos (FQDN) a los que se puede acceder desde una subred.
- Reglas de red que definen la dirección de origen, el protocolo, el puerto de destino y la dirección de destino.
El tráfico está sujeto a las reglas de firewall configuradas cuando enruta el tráfico al firewall como puerta de enlace predeterminada de la subred.
En este artículo, creará una red virtual única simplificada con tres subredes para facilitar la implementación. Para las implementaciones de producción, se recomienda un modelo de concentrador y radio, en el que el firewall está en su propia red virtual. Los servidores de las cargas de trabajo están en redes virtuales emparejadas en la misma región con una o varias subredes.
- AzureFirewallSubnet: el firewall está en esta subred.
- Workload-SN: el servidor de carga de trabajo está en esta subred. El tráfico de red de esta subred va a través del firewall.
- AzureBastionSubnet : la subred que se usa para Azure Bastion, que se usa para conectarse al servidor de carga de trabajo.
Para más información sobre Azure Bastion, consulte ¿Qué es Azure Bastion?
Importante
Los precios por hora comienzan desde el momento en que se implementa Bastion, independientemente del uso de datos salientes. Para más información, consulte Precios y SKU. Si va a implementar Bastion como parte de un tutorial o prueba, se recomienda eliminar este recurso una vez que haya terminado de usarlo.
En este artículo aprenderá a:
- Configurar un entorno de red de prueba
- Implementar un firewall
- Crear una ruta predeterminada
- Crear una directiva de firewall
- Configurar una regla de aplicación para permitir el acceso a www.google.com
- Configuración de una regla de red para permitir el acceso a los servidores DNS externos
- Probar el firewall
Si lo prefiere, puede realizar los pasos de este procedimiento mediante Azure Portal.
Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.
Requisitos previos
En este procedimiento es necesario ejecutar PowerShell de forma local. Debe tener instalados el módulo de Azure PowerShell. Ejecute Get-Module -ListAvailable Az
para encontrar la versión. Si necesita actualizarla, consulte Instalación del módulo de Azure PowerShell. Después de verificar la versión de PowerShell, ejecute Connect-AzAccount
para crear una conexión con Azure.
Configuración de la red
En primer lugar, cree un grupo de recursos para que contenga los recursos necesarios para implementar el firewall. A continuación, cree una red virtual, subredes y pruebe los servidores.
Crear un grupo de recursos
El grupo de recursos contiene todos los recursos necesarios para la implementación.
New-AzResourceGroup -Name Test-FW-RG -Location "East US"
Creación de una red virtual y un host de Azure Bastion
Esta red virtual tiene tres subredes:
Nota
El tamaño de la subred AzureFirewallSubnet es /26. Para más información sobre el tamaño de la subred, consulte Preguntas más frecuentes sobre Azure Firewall.
$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
Ahora cree la red virtual:
$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub
Creación de una dirección IP pública para un host de Azure Bastion
$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
-Name Bastion-pip -AllocationMethod static -Sku standard
Creación de un host de Azure Bastion
New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet
Creación de una máquina virtual
Ahora cree la máquina virtual de la carga de trabajo y colóquela en la subred correspondiente. Cuando se le solicite, escriba el nombre de usuario y la contraseña de la máquina virtual.
Cree una máquina virtual de carga de trabajo. Cuando se le solicite, escriba el nombre de usuario y la contraseña de la máquina virtual.
#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
Creación de una directiva de firewall
$fwpol = New-AzFirewallPolicy -Name fw-pol -ResourceGroupName Test-FW-RG -Location eastus
Configuración de una regla de aplicación de la directiva de firewall
La regla de aplicación permite el acceso de salida a 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 incluye una colección de reglas integradas para FQDN de infraestructura que están permitidos de forma predeterminada. Estos FQDN son específicos para la plataforma y no se pueden usar para otros fines. Para más información, consulte Nombres de dominio completos de infraestructura.
Configuración de una regla de red de la directiva de firewall
La regla de red permite el acceso saliente a dos direcciones IP en el puerto 53 (DNS).
$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
Implementación del firewall
Ahora, implemente el firewall en la red virtual.
# 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
Anote la dirección IP privada. Se usará más adelante al crear la ruta predeterminada.
Crear una ruta predeterminada
Creación de una tabla con la propagación de la ruta BGP deshabilitada
$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
Cambio de la dirección DNS principal y secundaria para la interfaz de red Srv-Work
Con fines de prueba para este procedimiento, configure las direcciones DNS principal y secundaria del servidor. Esto no es un requisito general de Azure Firewall.
$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface
Probar el firewall
Ahora, pruebe el firewall para confirmar que funciona según lo previsto.
Conéctese a la máquina virtual Srv-Work a través de Bastion e inicie sesión.
En Srv-Work, abra una ventana de PowerShell y ejecute estos comandos:
nslookup www.google.com nslookup www.microsoft.com
Ambos comandos deben devolver respuestas en las que se muestre que sus consultas de DNS están pasando por el firewall.
Ejecute los comandos siguientes:
Invoke-WebRequest -Uri https://www.google.com Invoke-WebRequest -Uri https://www.google.com Invoke-WebRequest -Uri https://www.microsoft.com Invoke-WebRequest -Uri https://www.microsoft.com
Las solicitudes de
www.google.com
deberían realizarse correctamente, mientras que las solicitudes dewww.microsoft.com
deberían producir un error. Esto demostraría que las reglas de firewall están funcionando según lo previsto.
Con ello, ha comprobado que las reglas de la directiva de firewall funcionan:
- Puede resolver nombres DNS con el servidor DNS externo configurado.
- Puede navegar al FQDN permitido pero no a ningún otro.
Limpieza de recursos
Puede conservar los recursos de firewall para probarlos más a fondo o, si ya no los necesita, eliminar el grupo de recursos Test-FW-RG para eliminar todos los recursos relacionados con el firewall.
Remove-AzResourceGroup -Name Test-FW-RG