Настройка списков исключений брандмауэра веб-приложения
Иногда Брандмауэр веб-приложений Azure в Azure Front Door может блокировать законный запрос. В рамках настройки брандмауэра веб-приложения (WAF) вы можете настроить WAF, чтобы разрешить запрос для вашего приложения. Списки исключений WAF позволяют пропускать определенные атрибуты запроса в оценке WAF. Остальная часть запроса оценивается как нормальная. Дополнительные сведения о списках исключений см. в статье Azure Брандмауэр веб-приложений со списками исключений 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
, также охватываются исключением. Если правило 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.