Mengaktifkan Firewall Aplikasi Web menggunakan Azure CLI

Anda dapat membatasi lalu lintas pada gateway aplikasi dengan Web Application Firewall (WAF). WAF menggunakan aturan OWASP untuk melindungi aplikasi Anda. Aturan ini mencakup perlindungan terhadap serangan seperti injeksi SQL, serangan scripting lintas situs, dan pembajakan sesi.

Dalam artikel ini, Anda akan mempelajari cara:

  • Siapkan jaringan
  • Membuat gateway aplikasi dengan WAF diaktifkan
  • Buat kumpulan skala komputer virtual
  • Buat akun penyimpanan dan konfigurasikan diagnostik

Web Application Firewall example

Jika berkenan, Anda dapat menyelesaikan prosedur ini menggunakan Azure PowerShell.

Jika Anda tidak memiliki Langganan Azure, buat Akun gratis Azure sebelum memulai.

Prasyarat

  • Artikel ini memerlukan Azure CLI versi 2.0.4 atau yang lebih baru. Jika menggunakan Azure Cloud Shell, versi terbaru sudah terinstal.

Buat grup sumber daya

Grup sumber daya adalah kontainer logis yang disebarkan dan dikelola oleh sumber daya Azure. Buat grup sumber daya Azure bernama myResourceGroupAG dengan az group create.

az group create --name myResourceGroupAG --location eastus

Membuat sumber daya jaringan

Sumber daya ini digunakan untuk menyediakan konektivitas jaringan ke gateway aplikasi dan sumber daya terkait. Buat jaringan virtual bernama myVNet dan subnet bernama myAGSubnet. kemudian buat alamat IP publik bernama 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

Membuat gateway aplikasi dengan kebijakan WAF

Gunakan buat gateway-aplikasi jaringan az untuk membuat gateway aplikasi bernama myAppGateway. Saat Anda membuat gateway aplikasi menggunakan Azure CLI, Anda menentukan informasi konfigurasi, seperti pengaturan kapasitas, sku, dan HTTP. Gateway aplikasi ditetapkan ke myAGSubnet dan 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

Mungkin perlu waktu beberapa menit untuk membuat gateway aplikasi. Setelah gateway aplikasi dibuat, Anda bisa melihat fitur baru ini:

  • appGatewayBackendPool - Gateway aplikasi harus memiliki setidaknya satu kumpulan alamat backend.
  • appGatewayBackendHttpSettings - Menentukan bahwa port 80 dan protokol HTTP digunakan untuk komunikasi.
  • appGatewayHttpListener - Listener default yang dikaitkan dengan appGatewayBackendPool.
  • appGatewayFrontendIP: Menetapkan myAGPublicIPAddress ke appGatewayHttpListener.
  • aturan1 - Aturan perutean default yang terkait dengan appGatewayHttpListener.

Buat kumpulan skala komputer virtual

Dalam contoh ini, Anda membuat set skala komputer virtual yang menyediakan dua server untuk kumpulan backend di gateway aplikasi. Komputer virtual dalam set skala dikaitkan dengan subnet myBackendSubnet. Untuk membuat set skala, gunakan az vmss create.

Ganti <nama pengguna> dan <kata sandi>dengan nilai Anda sebelum menjalankan skrip ini.

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

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

Buat akun penyimpanan dan konfigurasikan diagnostik

Dalam artikel ini, gateway aplikasi menggunakan akun penyimpanan untuk menyimpan data untuk tujuan deteksi dan pencegahan. Anda juga dapat menggunakan log Azure Monitor atau Pusat Aktivitas untuk merekam data.

Buat akun penyimpanan

Buat akun penyimpanan bernama myagstore1 dengan az storage account create.

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

Mengonfigurasi diagnostik

Konfigurasikan diagnostik untuk merekam data ke dalam log ApplicationGatewayAccessLog, ApplicationGatewayPerformanceLog, dan ApplicationGatewayFirewallLog. Ganti <subscriptionId> dengan pengidentifikasi langganan Anda lalu konfigurasi diagnostik dengan pembuatan 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

Uji gateway aplikasi

Untuk mendapatkan alamat IP publik application gateway, gunakan tampilkan ip publik jaringan az. Salin alamat IP publik, lalu tempelkan ke bilah alamat browser Anda.

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

Test base URL in application gateway

Membersihkan sumber daya

Jika tidak lagi diperlukan, hapus grup sumber daya, gateway aplikasi, dan semua sumber daya terkait.

az group delete --name myResourceGroupAG 

Langkah berikutnya

Mengkustomisasi aturan firewall aplikasi web