Настройка списков исключений брандмауэра веб-приложения
Иногда azure Брандмауэр веб-приложений в Azure Front Door может блокировать законный запрос. В рамках настройки брандмауэра веб-приложения (WAF) можно настроить WAF, чтобы разрешить запрос приложения. Списки исключений WAF позволяют опущению определенных атрибутов запроса из оценки WAF. Остальная часть запроса оценивается как нормальная. Чтобы узнать больше о списках исключений, ознакомьтесь с использованием брандмауэра веб-приложений (WAF) со списками исключений Azure Front Door.
Список исключений можно настроить с помощью Azure PowerShell, Azure CLI, REST API, Bicep, шаблонов Azure Resource Manager и портал Azure.
Сценарий
Предположим, что вы создали API. Клиенты отправляют запросы в API, которые включают заголовки с именами, такими как userid
и user-id
.
При настройке WAF обратите внимание, что некоторые законные запросы были заблокированы, так как заголовки пользователей включали последовательности символов, обнаруженные WAF как атаки на внедрение SQL. В частности, идентификатор правила 942230 обнаруживает заголовки запросов и блокирует запросы. Правило 942230 является частью группы правил SQLI.
Вы решили создать исключение, чтобы разрешить передачу этих законных запросов без блокировки WAF.
Создание исключения
Откройте политику WAF Azure Front Door.
Выберите управляемые правила>управления исключениями.
Выберите Добавить.
Настройка исключения применяется к разделу :
Поле значение Набор правил Microsoft_DefaultRuleSet_2.0 Группа правил SQLI Правило 942230 Обнаруживает условные попытки внедрения SQL Настройте условия соответствия исключений:
Поле значение Сопоставление переменных Имя заголовка запроса. Оператор Начинается с Выбор User Просмотрите исключение, которое должно выглядеть следующим образом:
Это исключение применяется ко всем заголовкам запросов, начинающимся с слова
user
. Условие соответствия не учитывает регистр, поэтому заголовки, начинающиеся сUser
, также охватываются исключением. Если правило WAF 942230 обнаруживает риск в этих значениях заголовков, он игнорирует заголовок и перемещается дальше.Выберите Сохранить.
Определение селектора исключения
Используйте командлет New-AzFrontDoorWafManagedRuleExclusionObject, чтобы определить новый селектор исключений.
В следующем примере определяются заголовки запросов, начинающиеся с слова user
. Условие соответствия не учитывает регистр, поэтому заголовки, начинающиеся с User
, также охватываются исключением.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Определение исключения для каждого правила
Используйте командлет New-AzFrontDoorWafManagedRuleOverrideObject, чтобы определить новое исключение для каждого правила, которое включает селектор, созданный на предыдущем шаге.
В следующем примере создается исключение для идентификатора правила 942230.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Применение исключения к группе правил
Используйте командлет New-AzFrontDoorWafRuleGroupOverrideObject для создания переопределения группы правил, которая применяет исключение к соответствующей группе правил.
В следующем примере используется группа правил SQLI, так как эта группа содержит идентификатор правила 942230.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Настройка управляемого набора правил
Используйте командлет New-AzFrontDoorWafManagedRuleObject для настройки управляемого набора правил, включая переопределение группы правил, созданной на предыдущем шаге.
В следующем примере настраивается набор правил DRS 2.0 с переопределением группы правил и его исключением.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Применение конфигурации управляемого набора правил к профилю WAF
Используйте командлет Update-AzFrontDoorWafPolicy, чтобы обновить политику WAF, чтобы включить созданную конфигурацию. Убедитесь, что для вашей среды используется правильное имя группы ресурсов и имя политики WAF.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Создание исключения
az network front-door waf-policy managed-rules exclusion add
Используйте команду для обновления политики WAF, чтобы добавить новое исключение.
Исключение определяет заголовки запросов, начинающиеся с слова user
. Условие соответствия не учитывает регистр, поэтому заголовки, начинающиеся с User
, также охватываются исключением.
Убедитесь, что для вашей среды используется правильное имя группы ресурсов и имя политики WAF.
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
Пример файла Bicep
В следующем примере Bicep-файла показано, как:
- Создайте политику WAF Azure Front Door.
- Включите набор правил DRS 2.0.
- Настройте исключение для правила 942230, которое существует в группе правил SQLI. Это исключение применяется ко всем заголовкам запросов, начинающимся с слова
user
. Условие соответствия не учитывает регистр, поэтому заголовки, начинающиеся сUser
, также охватываются исключением. Если правило WAF 942230 обнаруживает риск в этих значениях заголовков, он игнорирует заголовок и перемещается дальше.
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'
}
]
}
]
}
]
}
]
}
}
}
Следующие шаги
Узнайте больше о Azure Front Door.