Implementación y configuración de Azure Firewall mediante la CLI de Azure
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. 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. El nombre de dominio completo también puede incluir instancias de SQL.
- 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. 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.
- Jump-SN: el servidor de "salto" está en esta subred. El servidor de salto tiene una dirección IP pública a la que puede conectarse mediante Escritorio remoto. Desde allí se puede conectar posteriormente al servidor de carga de trabajo (mediante otro Escritorio remoto).
En este artículo aprenderá a:
- Configurar un entorno de red de prueba
- Implementar un firewall
- Crear una ruta predeterminada
- 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 completar este procedimiento desde Azure Portal o Azure PowerShell.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
Requisitos previos
Use el entorno de Bash en Azure Cloud Shell. Para más información, consulte Inicio rápido para Bash en Azure Cloud Shell.
Si prefiere ejecutar comandos de referencia de la CLI localmente, instale la CLI de Azure. Si utiliza Windows o macOS, considere la posibilidad de ejecutar la CLI de Azure en un contenedor Docker. Para más información, vea Ejecución de la CLI de Azure en un contenedor de Docker.
Si usa una instalación local, inicie sesión en la CLI de Azure mediante el comando az login. Siga los pasos que se muestran en el terminal para completar el proceso de autenticación. Para ver otras opciones de inicio de sesión, consulte Inicio de sesión con la CLI de Azure.
En caso de que se le solicite, instale las extensiones de la CLI de Azure la primera vez que la use. Para más información sobre las extensiones, consulte Uso de extensiones con la CLI de Azure.
Ejecute az version para buscar cuál es la versión y las bibliotecas dependientes que están instaladas. Para realizar la actualización a la versión más reciente, ejecute az upgrade.
- En este artículo se necesita la versión 2.55.0, o versiones posteriores, de la CLI de Azure. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.
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.
az group create --name Test-FW-RG --location eastus
Creación de una red virtual
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.
az network vnet create \
--name Test-FW-VN \
--resource-group Test-FW-RG \
--location eastus \
--address-prefix 10.0.0.0/16 \
--subnet-name AzureFirewallSubnet \
--subnet-prefix 10.0.1.0/26
az network vnet subnet create \
--name Workload-SN \
--resource-group Test-FW-RG \
--vnet-name Test-FW-VN \
--address-prefix 10.0.2.0/24
az network vnet subnet create \
--name Jump-SN \
--resource-group Test-FW-RG \
--vnet-name Test-FW-VN \
--address-prefix 10.0.3.0/24
Creación de máquinas virtuales
Ahora cree las máquinas virtuales de salto y de cargas de trabajo, y colóquelas en las subredes adecuadas. Cuando se le solicite, escriba la contraseña de la máquina virtual.
Cree la máquina virtual Srv-Jump.
az vm create \
--resource-group Test-FW-RG \
--name Srv-Jump \
--location eastus \
--image win2016datacenter \
--vnet-name Test-FW-VN \
--subnet Jump-SN \
--admin-username azureadmin
az vm open-port --port 3389 --resource-group Test-FW-RG --name Srv-Jump
Cree una tarjeta de interfaz de red para Srv-Work con las direcciones IP del servidor DNS específico y ninguna dirección IP pública con la que realizar pruebas.
az network nic create \
-g Test-FW-RG \
-n Srv-Work-NIC \
--vnet-name Test-FW-VN \
--subnet Workload-SN \
--public-ip-address "" \
--dns-servers 209.244.0.3 209.244.0.4
Ahora cree la máquina virtual de cargas de trabajo. Cuando se le solicite, escriba la contraseña de la máquina virtual.
az vm create \
--resource-group Test-FW-RG \
--name Srv-Work \
--location eastus \
--image win2016datacenter \
--nics Srv-Work-NIC \
--admin-username azureadmin
Nota:
Azure proporciona una dirección IP de acceso de salida predeterminada para las máquinas virtuales que no tienen asignada una dirección IP pública o están en el grupo back-end de un equilibrador de carga de Azure básico interno. El mecanismo de dirección IP de acceso de salida predeterminado proporciona una dirección IP de salida que no se puede configurar.
La dirección IP de acceso de salida predeterminada está deshabilitada cuando se produce uno de los siguientes eventos:
- Se asigna una dirección IP pública a la máquina virtual.
- La máquina virtual se coloca en el grupo back-end de un equilibrador de carga estándar, con o sin reglas de salida.
- Se asigna un recurso de Azure NAT Gateway a la subred de la máquina virtual.
Las máquinas virtuales creadas mediante conjuntos de escalado de máquinas virtuales en modo de orquestación flexible no tienen acceso de salida predeterminado.
Para más información sobre las conexiones de salida en Azure, vea Acceso de salida predeterminado en Azure y Uso de traducción de direcciones de red (SNAT) de origen para conexiones de salida.
Implementación del firewall
Ahora, implemente el firewall en la red virtual.
az network firewall create \
--name Test-FW01 \
--resource-group Test-FW-RG \
--location eastus
az network public-ip create \
--name fw-pip \
--resource-group Test-FW-RG \
--location eastus \
--allocation-method static \
--sku standard
az network firewall ip-config create \
--firewall-name Test-FW01 \
--name FW-config \
--public-ip-address fw-pip \
--resource-group Test-FW-RG \
--vnet-name Test-FW-VN
az network firewall update \
--name Test-FW01 \
--resource-group Test-FW-RG
az network public-ip show \
--name fw-pip \
--resource-group Test-FW-RG
fwprivaddr="$(az network firewall ip-config list -g Test-FW-RG -f Test-FW01 --query "[?name=='FW-config'].privateIpAddress" --output tsv)"
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 de enrutamiento con la propagación de la ruta BGP deshabilitada
az network route-table create \
--name Firewall-rt-table \
--resource-group Test-FW-RG \
--location eastus \
--disable-bgp-route-propagation true
Cree la ruta.
az network route-table route create \
--resource-group Test-FW-RG \
--name DG-Route \
--route-table-name Firewall-rt-table \
--address-prefix 0.0.0.0/0 \
--next-hop-type VirtualAppliance \
--next-hop-ip-address $fwprivaddr
Asociación de la tabla de rutas a la subred
az network vnet subnet update \
-n Workload-SN \
-g Test-FW-RG \
--vnet-name Test-FW-VN \
--address-prefixes 10.0.2.0/24 \
--route-table Firewall-rt-table
Configuración de una regla de aplicación
La regla de aplicación permite el acceso saliente a www.google.com.
az network firewall application-rule create \
--collection-name App-Coll01 \
--firewall-name Test-FW01 \
--name Allow-Google \
--protocols Http=80 Https=443 \
--resource-group Test-FW-RG \
--target-fqdns www.google.com \
--source-addresses 10.0.2.0/24 \
--priority 200 \
--action Allow
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.
Configurar una regla de red
La regla de red permite el acceso saliente a dos direcciones IP en el puerto 53 (DNS).
az network firewall network-rule create \
--collection-name Net-Coll01 \
--destination-addresses 209.244.0.3 209.244.0.4 \
--destination-ports 53 \
--firewall-name Test-FW01 \
--name Allow-DNS \
--protocols UDP \
--resource-group Test-FW-RG \
--priority 200 \
--source-addresses 10.0.2.0/24 \
--action Allow
Probar el firewall
Ahora, pruebe el firewall para confirmar que funciona según lo previsto.
Anote la dirección IP privada de la máquina virtual Srv-Work:
az vm list-ip-addresses \ -g Test-FW-RG \ -n Srv-Work
Conecte un escritorio remoto a la máquina virtual Srv-Jump e inicie sesión. Desde ahí, abra una conexión del escritorio remoto a la dirección IP privada de Srv-Work e inicie sesión.
En SRV-Work, abra una ventana de PowerShell y ejecute los comandos siguientes:
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 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 relacionados con el firewall para el siguiente tutorial o, si ya no los necesita, eliminar el grupo de recursos Test-FW-RG para eliminarlos todos:
az group delete \
-n Test-FW-RG