Web Uygulaması Güvenlik Duvarı hız sınırı kuralı yapılandırma
Azure Front Door için Azure Web Uygulaması Güvenlik Duvarı hız sınırı kuralı, hız sınırı süresi boyunca belirli bir kaynak IP adresinden uygulamaya izin verilen istek sayısını denetler. Hız sınırlama hakkında daha fazla bilgi için bkz. Azure Front Door için hız sınırlama nedir?.
Bu makalede, Azure Front Door Standard ve Premium katmanlarında bir web uygulaması güvenlik duvarı (WAF) hız sınırı kuralının nasıl yapılandırılması gösterilmektedir.
Senaryo
Genel bir web sitesinden sorumlu olduğunuzu varsayalım. Kuruluşunuzun çalıştığı bir promosyon hakkında bilgi içeren bir sayfa eklediniz. İstemciler bu sayfayı çok sık ziyaret ederse bazı arka uç hizmetlerinizin hızla ölçeklendirilmediğinden ve uygulamada performans sorunları olabileceğinden endişe duyuyorsunuz.
Her kaynak IP adresini dakikada en fazla 1.000 istekle kısıtlayan bir hız sınırı kuralı oluşturmaya karar verirsiniz. Bu kuralı yalnızca istek URL'sinde bulunan */promo*
isteklere uygularsınız.
İpucu
Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.
Azure Front Door profili ve WAF ilkesi oluşturma
Azure portal Kaynak oluştur'u seçin.
Front Door araması yapın ve Front Door ve CDN profilleri'ni seçin.
Oluştur’u seçin.
Hızlı oluşturma portalı oluşturma işlemini kullanmak üzere bir Front Door oluşturmak için Devam'ı seçin.
Temel Bilgiler sayfasında gerekli bilgileri girin:
- Kaynak grubu: Mevcut bir kaynak grubunu seçin veya Azure Front Door ve WAF kaynakları için yeni bir kaynak grubu oluşturun.
- Ad: Azure Front Door profilinizin adını girin.
- Katman: Standart veya Premium'ı seçin. Bu senaryo için her iki katman da hız sınırlamayı destekler.
- Uç nokta adı: Azure Front Door uç noktalarının genel olarak benzersiz adlara sahip olması gerektiğinden uç noktanız için benzersiz bir ad sağlayın.
- Kaynak türü ve Kaynak ana bilgisayar adı: Hız sınırı kuralınızla korumak istediğiniz kaynak uygulamayı seçin.
WAF ilkesi'nin yanındaki Yeni oluştur'u seçin.
WAF ilkesinin adını girin ve Oluştur'u seçin.
Gözden geçir ve oluştur>Oluştur'u seçin.
Dağıtım tamamlandıktan sonra Kaynağa git'i seçin.
Hız sınırı kuralı oluşturma
Özel kurallar>Özel kural ekle'yi seçin.
Hız sınırı kuralı oluşturmak için gereken bilgileri girin:
- Özel kural adı: RateLimitRule gibi özel kuralın adını girin.
- Kural türü: Hız sınırı'ı seçin.
- Öncelik: Kuralın önceliğini girin, örneğin 1.
- Hız sınırı süresi: 1 dakika seçin.
- Hız sınırı eşiği (istekler):1000 girin.
Koşullar bölümünde, URL'nin dizesini
*/promo*
içerdiği istekleri tanımlamak için bir eşleşme koşulu belirtmek için gereken bilgileri girin:- Eşleştirme türü: Dize'yi seçin.
- Eşleştirme değişkeni: RequestUri girin.
- İşlem: öğesini seçin.
- İşleç: İçerir'i seçin.
- Değerleri eşleştir: /promo girin.
Eylem için Günlük veya Engelle'yi seçin.
Hız sınırı kuralları yalnızca ve
Block
eylemleri desteklerLog
.Allow
desteklenmez.Add (Ekle) seçeneğini belirleyin.
Kaydet’i seçin.
WAF'de önleme modunu kullanma
Varsayılan olarak, Azure portal algılama modunda WAF ilkeleri oluşturur. Bu ayar, WAF'nin istekleri engellemediği anlamına gelir. Daha fazla bilgi için bkz. WAF modları.
Önleme modunu kullanmadan önce WAF'nizi ayarlayın. Ayarlama, hatalı pozitif algılamaları önlemeye yardımcı olur. Ayrıca WAF'nizin meşru istekleri engellemesini önlemeye de yardımcı olur.
Burada WAF'yi önleme modunu kullanacak şekilde yeniden yapılandıracaksınız.
WAF ilkesini açın.
İlke modununAlgılama olarak ayarlandığına dikkat edin.
Önleme moduna geç'i seçin.
Önkoşullar
Hız sınırı ilkesi ayarlamaya başlamadan önce PowerShell ortamınızı ayarlayın ve bir Azure Front Door profili oluşturun.
PowerShell ortamınızı hazırlama
Azure PowerShell, Azure kaynaklarınızı yönetmek için Azure Resource Manager modelini kullanan bir dizi cmdlet sunar.
Azure PowerShell'i yerel makinenize yükleyebilir ve herhangi bir PowerShell oturumunda kullanabilirsiniz. Burada Azure kimlik bilgilerinizle oturum açar ve Azure Front Door Standard veya Premium için Azure PowerShell modülünü yüklersiniz.
Oturum açmak için etkileşimli bir iletişim kutusuyla Azure'a bağlanma
Aşağıdaki komutu çalıştırarak Azure'da oturum açın:
Connect-AzAccount
PowerShellGet yükleme
PowerShellGet'in geçerli sürümünün yüklü olduğundan emin olun. Şu komutu çalıştırın:
Install-Module PowerShellGet -Force -AllowClobber
Ardından, en son sürümü kullandığınızdan emin olmak için PowerShell'i yeniden başlatın.
Azure Front Door PowerShell modüllerini yükleme
PowerShell'den Az.FrontDoor
Azure Front Door Standard veya Premium ile çalışmak için ve Az.Cdn
PowerShell modüllerini yükleyin.
Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn
Azure Front Door Standard veya Premium kaynaklarıyla çalışmak için modülünü Az.Cdn
kullanırsınız. WAF kaynaklarıyla çalışmak için modülünü Az.FrontDoor
kullanın.
Kaynak grubu oluşturma
Azure Front Door profiliniz ve WAF ilkeniz için yeni bir kaynak grubu oluşturmak için New-AzResourceGroup cmdlet'ini kullanın. Kendi gereksinimleriniz için kaynak grubu adını ve konumunu güncelleştirin:
$resourceGroupName = 'FrontDoorRateLimit'
New-AzResourceGroup -Name $resourceGroupName -Location 'westus'
Azure Front Door profili oluşturma
Yeni bir Azure Front Door profili oluşturmak için New-AzFrontDoorCdnProfile cmdlet'ini kullanın.
Bu örnekte adlı MyFrontDoorProfile
bir Azure Front Door standart profili oluşturursunuz:
$frontDoorProfile = New-AzFrontDoorCdnProfile `
-Name 'MyFrontDoorProfile' `
-ResourceGroupName $resourceGroupName `
-Location global `
-SkuName Standard_AzureFrontDoor
Azure Front Door uç noktası oluşturma
Azure Front Door profilinize uç nokta eklemek için New-AzFrontDoorCdnEndpoint cmdlet'ini kullanın.
Azure Front Door uç noktalarının genel olarak benzersiz adlara sahip olması gerektiğinden değişkenin $frontDoorEndpointName
değerini benzersiz bir adla güncelleştirin.
$frontDoorEndpointName = '<unique-front-door-endpoint-name>'
$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
-EndpointName $frontDoorEndpointName `
-ProfileName $frontDoorProfile.Name `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Location $frontDoorProfile.Location
URL eşleştirme koşulu tanımlama
Hız sınırının uygulanması gereken istekleri tanımlamak üzere bir eşleştirme koşulu oluşturmak için New-AzFrontDoorWafMatchConditionObject cmdlet'ini kullanın.
Aşağıdaki örnek, değişkeninin RequestUri
/promo dizesini içerdiği isteklerle eşleşir:
$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable RequestUri `
-OperatorProperty Contains `
-MatchValue '/promo'
Özel hız sınırı kuralı oluşturma
Önceki adımda tanımladığınız eşleşme koşulunu ve istek eşiğini içeren hız sınırı kuralını oluşturmak için New-AzFrontDoorWafCustomRuleObject cmdlet'ini kullanın.
Aşağıdaki örnek sınırı olarak 1000
ayarlar:
$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
-Name 'rateLimitRule' `
-RuleType RateLimitRule `
-MatchCondition $promoMatchCondition `
-RateLimitThreshold 1000 `
-Action Block `
-Priority 1
Herhangi bir kaynak IP adresi bir dakika içinde 1.000'den fazla istek gönderdiğinde, WAF sonraki istekleri sonraki dakika başlayana kadar engeller.
WAF ilkesi oluşturma
Oluşturduğunuz özel kuralı içeren bir WAF ilkesi oluşturmak için New-AzFrontDoorWafPolicy cmdlet'ini kullanın.
$wafPolicy = New-AzFrontDoorWafPolicy `
-Name 'MyWafPolicy' `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Sku Standard_AzureFrontDoor `
-CustomRule $promoRateLimitRule
Azure Front Door profilinizi WAF ilkenizle ilişkilendirmek için bir güvenlik ilkesi yapılandırma
Azure Front Door profiliniz için bir güvenlik ilkesi oluşturmak için New-AzFrontDoorCdnSecurityPolicy cmdlet'ini kullanın. Güvenlik ilkesi WAF ilkenizi WAF kuralı tarafından korunmasını istediğiniz etki alanlarıyla ilişkilendirir.
Bu örnekte uç noktanın varsayılan ana bilgisayar adını WAF ilkenizle ilişkilendirirsiniz:
$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
-PatternsToMatch @("/*") `
-Domain @(@{"Id"=$($frontDoorEndpoint.Id)})
$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
-Association $securityPolicyAssociation `
-WafPolicyId $wafPolicy.Id
$frontDoorSecurityPolicy = New-AzFrontDoorCdnSecurityPolicy `
-Name 'MySecurityPolicy' `
-ProfileName $frontDoorProfile.Name `
-ResourceGroupName $frontDoorProfile.ResourceGroupName `
-Parameter $securityPolicyParameters
Önkoşullar
Hız sınırı ilkesi ayarlamaya başlamadan önce Azure CLI ortamınızı ayarlayın ve bir Azure Front Door profili oluşturun.
Azure CLI ortamınızı ayarlama
Azure CLI, Azure kaynaklarınızı yönetmek için Azure Resource Manager modelini kullanan bir dizi komut sağlar.
Azure CLI'yi yerel makinenize yükleyebilir ve herhangi bir kabuk oturumunda kullanabilirsiniz. Burada Azure kimlik bilgilerinizle oturum açar ve Azure Front Door Standard veya Premium için Azure CLI uzantısını yüklersiniz.
Oturum açmak için etkileşimli bir iletişim kutusuyla Azure'a bağlanma
Aşağıdaki komutu çalıştırarak Azure'da oturum açın:
az login
Azure CLI için Azure Front Door uzantısını yükleme
Azure CLI'dan front-door
Azure Front Door WAF ile çalışmak için uzantıyı yükleyin:
az extension add --name front-door
Azure Front Door Standard veya Premium kaynaklarıyla çalışmak için komutlarını kullanırsınız az afd
. az network front-door waf-policy
WAF kaynaklarıyla çalışmak için komutlarını kullanın.
Kaynak grubu oluşturma
Azure Front Door profiliniz ve WAF ilkeniz için yeni bir kaynak grubu oluşturmak için az group create komutunu kullanın. Kendi gereksinimleriniz için kaynak grubu adını ve konumunu güncelleştirin:
resourceGroupName='FrontDoorRateLimit'
az group create \
--name $resourceGroupName \
--location westus
Azure Front Door profili oluşturma
Yeni bir Azure Front Door profili oluşturmak için az afd profile create komutunu kullanın.
Bu örnekte adlı MyFrontDoorProfile
bir Azure Front Door standart profili oluşturursunuz:
frontDoorProfileName='MyFrontDoorProfile'
az afd profile create \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Azure Front Door uç noktası oluşturma
Azure Front Door profilinize uç nokta eklemek için az afd endpoint create komutunu kullanın.
Azure Front Door uç noktalarının genel olarak benzersiz adlara sahip olması gerektiğinden değişkenin frontDoorEndpointName
değerini benzersiz bir adla güncelleştirin.
frontDoorEndpointName='<unique-front-door-endpoint-name>'
az afd endpoint create \
--endpoint-name $frontDoorEndpointName \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
WAF ilkesi oluşturma
WAF ilkesi oluşturmak için az network front-door waf-policy create komutunu kullanın:
wafPolicyName='MyWafPolicy'
az network front-door waf-policy create \
--name $wafPolicyName \
--resource-group $resourceGroupName \
--sku Standard_AzureFrontDoor
Özel hız sınırı kuralı eklemeye hazırlanma
Özel bir hız sınırı kuralı oluşturmak için az network front-door waf-policy rule create komutunu kullanın. Aşağıdaki örnek, sınırı dakikada 1.000 istek olarak ayarlar.
Hız sınırı kuralları, bir sonraki adımda oluşturacağınız bir eşleşme koşulu içermelidir. Bu komutta, Azure CLI'ya kuralı henüz Azure'a göndermemelerini söyleyen bağımsız değişkenini eklersiniz --defer
.
az network front-door waf-policy rule create \
--name rateLimitRule \
--policy-name $wafPolicyName \
--resource-group $resourceGroupName \
--rule-type RateLimitRule \
--rate-limit-duration 1 \
--rate-limit-threshold 1000 \
--action Block \
--priority 1 \
--defer
Herhangi bir kaynak IP adresi bir dakika içinde 1.000'den fazla istek gönderdiğinde, WAF sonraki istekleri sonraki dakika başlayana kadar engeller.
Eşleştirme koşulu ekleme
Özel kuralınıza eşleştirme koşulu eklemek için az network front-door waf-policy rule match-condition add komutunu kullanın. Eşleştirme koşulu, hız sınırının uygulanması gereken istekleri tanımlar.
Aşağıdaki örnek, değişkeninin RequestUri
/promo dizesini içerdiği isteklerle eşleşir:
az network front-door waf-policy rule match-condition add \
--match-variable RequestUri \
--operator Contains \
--values '/promo' \
--name rateLimitRule \
--policy-name $wafPolicyName \
--resource-group $resourceGroupName
Bu komutu gönderdiğinizde Azure CLI hız sınırı kuralını ve eşleştirme koşulunu birlikte oluşturur.
Azure Front Door profilinizi WAF ilkenizle ilişkilendirmek için bir güvenlik ilkesi yapılandırma
Azure Front Door profiliniz için bir güvenlik ilkesi oluşturmak için az afd security-policy create komutunu kullanın. Güvenlik ilkesi WAF ilkenizi WAF kuralı tarafından korunmasını istediğiniz etki alanlarıyla ilişkilendirir.
Bu örnekte uç noktanın varsayılan ana bilgisayar adını WAF ilkenizle ilişkilendirirsiniz:
securityPolicyName='MySecurityPolicy'
wafPolicyResourceId=$(az network front-door waf-policy show --name $wafPolicyName --resource-group $resourceGroupName --query id --output tsv)
frontDoorEndpointResourceId=$(az afd endpoint show --endpoint-name $frontDoorEndpointName --profile-name $frontDoorProfileName --resource-group $resourceGroupName --query id --output tsv)
az afd security-policy create \
--security-policy-name $securityPolicyName \
--profile-name $frontDoorProfileName \
--resource-group $resourceGroupName \
--domains $frontDoorEndpointResourceId \
--waf-policy $wafPolicyResourceId
Yukarıdaki kod WAF ilkesi ve Azure Front Door uç noktası için Azure kaynak tanımlayıcılarını arar, böylece bunları güvenlik ilkenizle ilişkilendirebilir.
Not
WAF ilkenizde her değişiklik yaptığınızda Azure Front Door güvenlik ilkesini yeniden oluşturmanız gerekmez. WAF ilke güncelleştirmeleri Azure Front Door etki alanlarına otomatik olarak uygulanır.
Hızlı Başlangıç
Bicep kullanarak hız sınırı kuralına sahip bir Azure Front Door profili oluşturmak için bkz. Azure Front Door Standard veya Fiyat sınırıyla Premium Bicep hızlı başlangıcı.
Sonraki adımlar
Azure Front Door hakkında daha fazla bilgi edinin.