Compartir a través de


Habilitación del firewall de aplicaciones web mediante la CLI de Azure

Puede restringir el tráfico en una puerta de enlace de aplicaciones con un firewall de aplicaciones web (WAF). WAF usa reglas de OWASP para proteger la aplicación. Estas reglas incluyen protección frente a ataques, como la inyección de SQL, ataques de scripts entre sitios y apropiaciones de sesión.

En este artículo aprenderá a:

  • Configuración de la red
  • Crear una puerta de enlace de aplicaciones con WAF habilitado
  • Crear un conjunto de escalado de máquinas virtuales
  • Crear una cuenta de almacenamiento y configurar los diagnósticos

Diagrama del ejemplo de Firewall de aplicaciones web.

Si lo prefiere, puede realizar los pasos de este procedimiento mediante Azure PowerShell.

Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.

Requisitos previos

  • En este artículo se necesita la versión 2.0.4 de la CLI de Azure, o cualquier versión posterior. Si usa Azure Cloud Shell, ya está instalada la versión más reciente.

Crear un grupo de recursos

Un grupo de recursos es un contenedor lógico en el que se implementan y se administran los recursos de Azure. Cree un grupo de recursos de Azure llamado myResourceGroupAG con az group create.

az group create --name myResourceGroupAG --location eastus

Crear recursos de red

La red virtual y las subredes se usan para proporcionar conectividad de red a la puerta de enlace de aplicaciones y sus recursos asociados. Cree una red virtual denominada myVNet y una subred denominada myAGSubnet. Luego cree una dirección IP pública denominada myAGPublicIPAddress.

az network vnet create \
  --name myVNet \
  --resource-group myResourceGroupAG \
  --location eastus \
  --address-prefix 10.0.0.0/16 \
  --subnet-name myBackendSubnet \
  --subnet-prefix 10.0.1.0/24

az network vnet subnet create \
  --name myAGSubnet \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --address-prefix 10.0.2.0/24

az network public-ip create \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --allocation-method Static \
  --sku Standard

Creación de una puerta de enlace de aplicación con una directiva WAF

Puede usar az network application-gateway create para crear la puerta de enlace de aplicaciones llamada myAppGateway. Cuando se crea una puerta de enlace de aplicaciones mediante la CLI de Azure, se especifica información de configuración, como capacidad, SKU y HTTP. La puerta de enlace de aplicaciones se asigna a myAGSubnet y myAGPublicIPAddress.

az network application-gateway waf-policy create \
  --name waf-pol \
  --resource-group myResourceGroupAG \
  --type OWASP \
  --version 3.2

az network application-gateway create \
  --name myAppGateway \
  --location eastus \
  --resource-group myResourceGroupAG \
  --vnet-name myVNet \
  --subnet myAGSubnet \
  --capacity 2 \
  --sku WAF_v2 \
  --http-settings-cookie-based-affinity Disabled \
  --frontend-port 80 \
  --http-settings-port 80 \
  --http-settings-protocol Http \
  --public-ip-address myAGPublicIPAddress \
  --waf-policy waf-pol \
  --priority 1

La puerta de enlace de aplicaciones puede tardar varios minutos en crearse. Después de crear la puerta de enlace de aplicaciones, puede ver estas nuevas características de ella:

  • appGatewayBackendPool: una puerta de enlace de aplicaciones debe tener al menos un grupo de direcciones de servidores back-end.
  • appGatewayBackendHttpSettings: especifica que se use el puerto 80 y un protocolo HTTP para la comunicación.
  • appGatewayHttpListener: agente de escucha predeterminado asociado con appGatewayBackendPool.
  • appGatewayFrontendIP: asigna myAGPublicIPAddress a appGatewayHttpListener.
  • rule1: la regla de enrutamiento predeterminada asociada a appGatewayHttpListener.

Crear un conjunto de escalado de máquinas virtuales

En este ejemplo, creará un conjunto de escalado de máquinas virtuales que proporcione dos servidores para el grupo de servidores back-end en la puerta de enlace de aplicaciones. Las máquinas virtuales del conjunto de escalado están asociadas a la subred myBackendSubnet. Para crear el conjunto de escalado, puede usar az vmss create.

Reemplace <nombre de usuario> y and <contraseña> por sus valores antes de ejecutarlo.

az vmss create \
  --name myvmss \
  --resource-group myResourceGroupAG \
  --image Ubuntu2204 \
  --admin-username <username> \
  --admin-password <password> \
  --instance-count 2 \
  --vnet-name myVNet \
  --subnet myBackendSubnet \
  --vm-sku Standard_DS2 \
  --upgrade-policy-mode Automatic \
  --app-gateway myAppGateway \
  --backend-pool-name appGatewayBackendPool

Instalación de NGINX

az vmss extension set \
  --publisher Microsoft.Azure.Extensions \
  --version 2.0 \
  --name CustomScript \
  --resource-group myResourceGroupAG \
  --vmss-name myvmss \
  --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"],"commandToExecute": "./install_nginx.sh" }'

Crear una cuenta de almacenamiento y configurar los diagnósticos

En este artículo, la puerta de enlace de aplicaciones usa una cuenta de almacenamiento para almacenar datos con fines de detección y prevención. También puede usar los registros de Azure Monitor o una instancia de Event Hubs para registrar los datos.

Crear una cuenta de almacenamiento

Cree una cuenta de almacenamiento llamada myagstore1 con az storage account create.

az storage account create \
  --name myagstore1 \
  --resource-group myResourceGroupAG \
  --location eastus \
  --sku Standard_LRS \
  --encryption-services blob

Configuración de diagnóstico

Configure los diagnósticos para registrar datos en los registros ApplicationGatewayAccessLog, ApplicationGatewayPerformanceLog y ApplicationGatewayFirewallLog. Reemplace <subscriptionId> por el identificador de la suscripción y, luego, configure los diagnósticos con az monitor diagnostic-settings create.

appgwid=$(az network application-gateway show --name myAppGateway --resource-group myResourceGroupAG --query id -o tsv)

storeid=$(az storage account show --name myagstore1 --resource-group myResourceGroupAG --query id -o tsv)

az monitor diagnostic-settings create --name appgwdiag --resource $appgwid \
  --logs '[ { "category": "ApplicationGatewayAccessLog", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } }, { "category": "ApplicationGatewayPerformanceLog", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } }, { "category": "ApplicationGatewayFirewallLog", "enabled": true, "retentionPolicy": { "days": 30, "enabled": true } } ]' \
  --storage-account $storeid

Prueba de la puerta de enlace de aplicaciones

Para obtener la dirección IP pública de la puerta de enlace de aplicaciones, use az network public-ip show. Copie la dirección IP pública y péguela en la barra de direcciones del explorador.

az network public-ip show \
  --resource-group myResourceGroupAG \
  --name myAGPublicIPAddress \
  --query [ipAddress] \
  --output tsv

Prueba de la dirección URL base en la puerta de enlace de aplicaciones

Limpieza de recursos

Cuando ya no los necesite, quite el grupo de recursos, la puerta de enlace de aplicaciones y todos los recursos relacionados.

az group delete --name myResourceGroupAG 

Pasos siguientes

Personalización de reglas de firewall de aplicación web