Konfigurowanie list wykluczeń zapory aplikacji internetowej
Czasami usługa Azure Web Application Firewall w usłudze Azure Front Door może blokować uzasadnione żądanie. W ramach dostrajania zapory aplikacji internetowej (WAF) można skonfigurować zaporę aplikacji internetowej tak, aby zezwalała na żądanie aplikacji. Listy wykluczeń zapory aplikacji internetowej umożliwiają pominięcie określonych atrybutów żądania z oceny zapory aplikacji internetowej. Pozostała część żądania jest oceniana jako normalna. Aby uzyskać więcej informacji na temat list wykluczeń, zobacz Azure Web Application Firewall z listami wykluczeń usługi Azure Front Door.
Listę wykluczeń można skonfigurować przy użyciu Azure PowerShell, interfejsu wiersza polecenia platformy Azure, interfejsu API REST, Bicep, szablonów usługi Azure Resource Manager i Azure Portal.
Scenariusz
Załóżmy, że utworzono interfejs API. Klienci wysyłają żądania do interfejsu API zawierające nagłówki z nazwami takimi jak userid
i user-id
.
Podczas dostrajania zapory aplikacji internetowej zauważasz, że niektóre uzasadnione żądania zostały zablokowane, ponieważ nagłówki użytkownika zawierały sekwencje znaków wykryte przez zaporę aplikacji internetowej podczas ataków polegających na wstrzyknięciu kodu SQL. W szczególności identyfikator reguły 942230 wykrywa nagłówki żądania i blokuje żądania. Reguła 942230 jest częścią grupy reguł SQLI.
Postanawiasz utworzyć wykluczenie, aby zezwolić na przekazywanie tych uzasadnionych żądań bez blokowania ich przez zaporę aplikacji internetowej.
Tworzenie wykluczenia
Otwórz zasady zapory aplikacji internetowej usługi Azure Front Door.
Wybierz pozycję Reguły zarządzane>Zarządzaj wykluczeniami.
Wybierz pozycję Dodaj.
Skonfiguruj sekcję Dotyczącą wykluczenia:
Pole Wartość Zestaw reguł Microsoft_DefaultRuleSet_2.0 Grupa reguł SQLI Reguła 942230 Wykrywa próby wstrzyknięcia warunkowego KODU SQL Skonfiguruj warunki dopasowania wykluczenia:
Pole Wartość Dopasuj zmienną Nazwa nagłówka żądania Operator Rozpoczyna się od Selektor Użytkownik Przejrzyj wykluczenie, które powinno wyglądać podobnie do poniższego zrzutu ekranu:
To wykluczenie dotyczy wszystkich nagłówków żądań rozpoczynających się od wyrazu
user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające sięUser
od są również objęte wykluczeniem. Jeśli reguła zapory aplikacji internetowej 942230 wykryje ryzyko w tych wartościach nagłówka, ignoruje nagłówek i przechodzi dalej.Wybierz pozycję Zapisz.
Definiowanie selektora wykluczeń
Użyj polecenia cmdlet New-AzFrontDoorWafManagedRuleExclusionObject , aby zdefiniować nowy selektor wykluczeń.
W poniższym przykładzie zidentyfikowane są nagłówki żądań rozpoczynające się od wyrazu user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się User
od są również objęte wykluczeniem.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Definiowanie wykluczenia dla poszczególnych reguł
Użyj polecenia cmdlet New-AzFrontDoorWafManagedRuleOverrideObject , aby zdefiniować nowe wykluczenie poszczególnych reguł, które obejmuje selektor utworzony w poprzednim kroku.
Poniższy przykład tworzy wykluczenie dla identyfikatora reguły 942230.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Stosowanie wykluczenia do grupy reguł
Użyj polecenia cmdlet New-AzFrontDoorWafRuleGroupOverrideObject , aby utworzyć przesłonięć grupę reguł, która stosuje wykluczenie do odpowiedniej grupy reguł.
W poniższym przykładzie użyto grupy reguł SQLI, ponieważ ta grupa zawiera identyfikator reguły 942230.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Konfigurowanie zarządzanego zestawu reguł
Użyj polecenia cmdlet New-AzFrontDoorWafManagedRuleObject , aby skonfigurować zarządzany zestaw reguł, w tym zastąpienie grupy reguł utworzone w poprzednim kroku.
W poniższym przykładzie skonfigurowaliśmy zestaw reguł DRS 2.0 z zastąpieniem grupy reguł i jego wykluczeniem.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Stosowanie konfiguracji zestawu reguł zarządzanych do profilu zapory aplikacji internetowej
Użyj polecenia cmdlet Update-AzFrontDoorWafPolicy , aby zaktualizować zasady zapory aplikacji internetowej w celu uwzględnienia utworzonej konfiguracji. Upewnij się, że używasz poprawnej nazwy grupy zasobów i nazwy zasad zapory aplikacji internetowej dla własnego środowiska.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Tworzenie wykluczenia
az network front-door waf-policy managed-rules exclusion add
Użyj polecenia , aby zaktualizować zasady zapory aplikacji internetowej, aby dodać nowe wykluczenie.
Wykluczenie identyfikuje nagłówki żądań rozpoczynające się od wyrazu user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się User
od są również objęte wykluczeniem.
Upewnij się, że używasz poprawnej nazwy grupy zasobów i nazwy zasad zapory aplikacji internetowej dla własnego środowiska.
az network front-door waf-policy managed-rules exclusion add \
--resource-group FrontDoorWafPolicy \
--policy-name WafPolicy \
--type Microsoft_DefaultRuleSet \
--rule-group-id SQLI \
--rule-id 942230 \
--match-variable RequestHeaderNames \
--operator StartsWith \
--value user
Przykładowy plik Bicep
Poniższy przykładowy plik Bicep pokazuje, jak:
- Tworzenie zasad zapory aplikacji internetowej usługi Azure Front Door.
- Włącz zestaw reguł DRS 2.0.
- Skonfiguruj wykluczenie dla reguły 942230, która istnieje w grupie reguł SQLI. To wykluczenie dotyczy wszystkich nagłówków żądań rozpoczynających się od wyrazu
user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające sięUser
od są również objęte wykluczeniem. Jeśli reguła zapory aplikacji internetowej 942230 wykryje ryzyko w tych wartościach nagłówka, ignoruje nagłówek i przechodzi dalej.
param wafPolicyName string = 'WafPolicy'
@description('The mode that the WAF should be deployed using. In "Prevention" mode, the WAF will block requests it detects as malicious. In "Detection" mode, the WAF will not block requests and will simply log the request.')
@allowed([
'Detection'
'Prevention'
])
param wafMode string = 'Prevention'
resource wafPolicy 'Microsoft.Network/frontDoorWebApplicationFirewallPolicies@2022-05-01' = {
name: wafPolicyName
location: 'Global'
sku: {
name: 'Premium_AzureFrontDoor'
}
properties: {
policySettings: {
enabledState: 'Enabled'
mode: wafMode
}
managedRules: {
managedRuleSets: [
{
ruleSetType: 'Microsoft_DefaultRuleSet'
ruleSetVersion: '2.0'
ruleSetAction: 'Block'
ruleGroupOverrides: [
{
ruleGroupName: 'SQLI'
rules: [
{
ruleId: '942230'
enabledState: 'Enabled'
action: 'AnomalyScoring'
exclusions: [
{
matchVariable: 'RequestHeaderNames'
selectorMatchOperator: 'StartsWith'
selector: 'user'
}
]
}
]
}
]
}
]
}
}
}
Następne kroki
Dowiedz się więcej o usłudze Azure Front Door.