Aracılığıyla paylaş


Azure CLI kullanarak Web Uygulaması Güvenlik Duvarı etkinleştirme

Web Uygulaması Güvenlik Duvarı (WAF) ile uygulama ağ geçidi üzerindeki trafiği kısıtlayabilirsiniz. WAF, uygulamanızı korumak için OWASP kurallarını kullanır. Bu kurallar SQL ekleme, siteler arası betik saldırıları ve oturum ele geçirme gibi saldırılara karşı korumayı içerir.

Bu makalede şunları öğreneceksiniz:

  • Ağı ayarlama
  • WAF etkinken bir uygulama ağ geçidi oluşturma
  • Sanal makine ölçek kümesi oluşturma
  • Bir depolama hesabı oluşturma ve tanılamaları yapılandırma

Web uygulaması güvenlik duvarı örneğinin diyagramı.

İsterseniz Azure PowerShell kullanarak bu yordamı tamamlayabilirsiniz.

Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.

Önkoşullar

  • Azure Cloud Shell'de Bash ortamını kullanın. Daha fazla bilgi için bkz . Azure Cloud Shell'de Bash için hızlı başlangıç.

  • CLI başvuru komutlarını yerel olarak çalıştırmayı tercih ediyorsanız Azure CLI'yı yükleyin . Windows veya macOS üzerinde çalışıyorsanız Azure CLI’yi bir Docker kapsayıcısında çalıştırmayı değerlendirin. Daha fazla bilgi için bkz . Docker kapsayıcısında Azure CLI'yi çalıştırma.

    • Yerel yükleme kullanıyorsanız az login komutunu kullanarak Azure CLI ile oturum açın. Kimlik doğrulama işlemini tamamlamak için terminalinizde görüntülenen adımları izleyin. Diğer oturum açma seçenekleri için bkz . Azure CLI ile oturum açma.

    • İstendiğinde, ilk kullanımda Azure CLI uzantısını yükleyin. Uzantılar hakkında daha fazla bilgi için bkz. Azure CLI ile uzantıları kullanma.

    • Yüklü sürümü ve bağımlı kitaplıkları bulmak için az version komutunu çalıştırın. En son sürüme yükseltmek için az upgrade komutunu çalıştırın.

  • Bu makale, Azure CLI'nın 2.0.4 veya sonraki bir sürümünü gerektirir. Azure Cloud Shell kullanılıyorsa en son sürüm zaten yüklüdür.

Kaynak grubu oluşturma

Kaynak grubu, Azure kaynaklarının dağıtıldığı ve yönetildiği bir mantıksal kapsayıcıdır. az group create komutuyla myResourceGroupAG adlı bir Azure kaynak grubu oluşturun.

az group create --name myResourceGroupAG --location eastus

Ağ kaynakları oluşturma

Sanal ağ ve alt ağlar, uygulama ağ geçidi ve ilişkili kaynakları ile ağ bağlantısı sağlamak için kullanılır. myVNet adlı bir sanal ağ ve myAGSubnet adlı bir alt ağ oluşturun. ardından myAGPublicIPAddress adlı bir genel IP adresi oluşturun.

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

WAF ilkesiyle uygulama ağ geçidi oluşturma

myAppGateway adlı uygulama ağ geçidini oluşturmak için az network application-gateway create komutunu kullanabilirsiniz. Azure CLI kullanarak bir uygulama ağ geçidi oluşturduğunuzda, kapasite, sku ve HTTP ayarları gibi yapılandırma bilgilerini belirtirsiniz. Uygulama ağ geçidi myAGSubnet ve myAGPublicIPAddress'e atanır.

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

Uygulama ağ geçidinin oluşturulması birkaç dakika sürebilir. Uygulama ağ geçidi oluşturulduktan sonra şu yeni özellikleri görürsünüz:

  • appGatewayBackendPool: Bir uygulama ağ geçidi en az bir arka uç adres havuzuna sahip olmalıdır.
  • appGatewayBackendHttpSettings: İletişim için 80 numaralı bağlantı noktasının ve HTTP protokolünün kullanıldığını belirtir.
  • appGatewayHttpListener: appGatewayBackendPool ile ilişkili varsayılan dinleyicidir.
  • appGatewayFrontendIP: appGatewayHttpListener’a myAGPublicIPAddress’i atar.
  • kural 1 - appGatewayHttpListener ile ilişkili varsayılan yönlendirme kuralıdır.

Sanal makine ölçek kümesi oluşturma

Bu örnekte uygulama ağ geçidinde arka uç havuzu için iki sunucu sağlayan bir sanal makine ölçek kümesi oluşturursunuz. Ölçek kümesindeki sanal makineler myBackendSubnet ile ilişkilidir. Ölçek kümesini oluşturmak için az vmss create komutunu kullanabilirsiniz.

Bunu çalıştırmadan önce kullanıcı adını ve parolayı> değerlerinizle değiştirin<.<>

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

NGINX yükleme

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" }'

Bir depolama hesabı oluşturma ve tanılamaları yapılandırma

Bu makalede, uygulama ağ geçidi algılama ve önleme amacıyla verileri depolamak için bir depolama hesabı kullanır. Verileri kaydetmek için Azure İzleyici günlüklerini veya Olay Hub'larını da kullanabilirsiniz.

Depolama hesabı oluşturma

New-AzureRmStorageAccount komutuyla myagstore1 adlı bir depolama hesabı oluşturun.

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

Tanılama yapılandırma

Tanılamayı ApplicationGatewayAccessLog, ApplicationGatewayPerformanceLog ve ApplicationGatewayFirewallLog günlüklerine verileri kaydedecek şekilde yapılandırın. değerini abonelik tanımlayıcınızla değiştirin <subscriptionId> ve ardından az monitor diagnostic-settings create ile tanılamayı yapılandırın.

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

Uygulama ağ geçidini test etme

Uygulama ağ geçidinin genel IP adresini almak için az network public-ip show komutunu kullanın. Genel IP adresini kopyalayıp tarayıcınızın adres çubuğuna yapıştırın.

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

Temel URL’yi uygulama ağ geçidinde test etme

Kaynakları temizleme

Artık gerekli olmadığında kaynak grubunu, uygulama ağ geçidini ve tüm ilgili kaynakları silin.

az group delete --name myResourceGroupAG 

Sonraki adımlar

Web uygulaması güvenlik duvarı kurallarını özelleştirme