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, aby zezwolić 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 normalnie. Aby uzyskać więcej informacji na temat list wykluczeń, zobacz Zapora Azure Web Application Firewall z listami wykluczeń usługi Azure Front Door.
Listę wykluczeń można skonfigurować przy użyciu programu Azure PowerShell, interfejsu wiersza polecenia platformy Azure, interfejsu API REST, szablonów Bicep, usługi Azure Resource Manager i witryny 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żysz, ż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 żądań i blokuje żądania. Reguła 942230 jest częścią grupy reguł SQLI.
Decydujesz się 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 Dodaj.
Skonfiguruj sekcję Dotyczy 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 User 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 słowa
user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się odUser
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ń.
Poniższy przykład identyfikuje nagłówki żądań rozpoczynające się od słowa user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się od User
są również objęte wykluczeniem.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Definiowanie wykluczenia na 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ć zastąpienie grupy reguł, które 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 słowa user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się od User
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 słowa
user
. Warunek dopasowania jest niewrażliwy na wielkość liter, więc nagłówki rozpoczynające się odUser
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.