Брандмауэр веб-приложений списки исключений Azure Front Door
Иногда azure Брандмауэр веб-приложений в Azure Front Door может блокировать законный запрос. В рамках настройки брандмауэра веб-приложения (WAF) можно настроить WAF, чтобы разрешить запрос приложения. Списки исключений WAF позволяют опущению определенных атрибутов запроса из оценки WAF. Остальная часть запроса оценивается как нормальная.
Например, идентификатор Microsoft Entra предоставляет маркеры, используемые для проверки подлинности. Если эти маркеры используются в заголовке запроса, они могут содержать специальные символы, которые могут активировать ложноположительное обнаружение одним или несколькими правилами WAF. Вы можете добавить заголовок в список исключений, который указывает WAF игнорировать заголовок. WAF по-прежнему проверяет остальную часть запроса на подозрительное содержимое.
Области исключения
Исключения можно создать на следующих область:
- Набор правил. Эти исключения применяются ко всем правилам в наборе правил.
- Группа правил: эти исключения применяются ко всем правилам определенной категории в наборе правил. Например, можно настроить исключение, которое применяется ко всем правилам внедрения SQL.
- Правило: эти исключения применяются к одному правилу.
Селекторы исключений
Селекторы исключений определяют части запросов, к которым применяется исключение. WAF игнорирует все обнаружения, которые он находит в указанных частях запроса. Можно указать несколько селекторов исключений в одном исключении.
Каждый селектор исключений указал переменную соответствия, оператор и селектор.
Совпадение переменных
В исключение можно добавить следующие атрибуты запроса:
- Имя заголовка запроса.
- Имя файла cookie запроса.
- Имя аргументов строки запроса.
- Имя args в тексте запроса
- Имя args текста запроса (поддерживается в DRS 2.0 или более поздней версии)
Значения используемых полей не оцениваются на соответствие правилам WAF, но оцениваются их имена. Списки исключений отключают проверку значения поля. Однако имена полей по-прежнему оцениваются. Дополнительные сведения см. в разделе "Исключить другие атрибуты запроса".
Операторы
Для сопоставления можно указать точный заголовок запроса, текст, файл cookie или атрибут строки запроса. Кроме того, можно указать частичные совпадения. Для критериев соответствия поддерживаются следующие операторы:
- Равно: соответствует всем полям запроса, которые точно соответствуют указанному значению селектора. Например, чтобы выбрать заголовок с именем bearerToken, используйте
Equals
оператор с селектором, заданным для носителяToken. - Начинается с: соответствует всем полям запроса, начинающимся с указанного значения селектора.
- Заканчивается: соответствует всем полям запроса, которые заканчиваются указанным значением селектора.
- Содержит: соответствует всем полям запроса, содержащим указанное значение селектора.
- Равен любому: соответствует всем полям запроса. При использовании
Equals any
оператора значение селектора автоматически задается*
. Например, оператор можно использоватьEquals any
для настройки исключения, которое применяется ко всем заголовкам запроса.
Учет регистра
В именах заголовков и файлов cookie не учитывается регистр. Строки запросов, аргументы POST и аргументы JSON чувствительны к регистру.
Проверка содержимого тела
Некоторые управляемые правила оценивают необработанные полезные данные текста запроса перед анализом в аргументы POST или аргументы JSON. Поэтому в некоторых ситуациях могут отображаться записи журнала со matchVariableName
значением InitialBodyContents
или DecodedInitialBodyContents
.
Например, предположим, что вы создаете исключение с переменной Request body POST args
соответствия и селектором, чтобы определить и игнорировать аргументы POST с именем FOO
. Вы больше не видите записи журнала со значением matchVariableName
PostParamValue:FOO
. Однако если именованный FOO
аргумент POST содержит текст, который активирует правило, журнал может показать обнаружение в исходном содержимом текста. В настоящее время нельзя создавать исключения для начального содержимого текста.
Определение правил исключения на основе журналов azure Брандмауэр веб-приложений
Журналы можно использовать для просмотра сведений о заблокированном запросе, включая части запроса, активировав это правило. Дополнительные сведения см. в статье Ведение журнала и мониторинг в Брандмауэре веб-приложения Azure.
Иногда определенное правило WAF создает ложноположительные обнаружения из значений, включенных в заголовок запроса, файл cookie, аргумент POST, аргумент строки запроса или поле JSON в тексте запроса. Если эти ложные положительные обнаружения происходят, можно настроить правило, чтобы исключить соответствующую часть запроса из его оценки.
В следующей таблице показаны примеры значений из журналов WAF и селекторов исключений, которые можно создать.
matchVariableName из журналов WAF | Исключение правил на портале |
---|---|
CookieValue:SOME_NAME | Имя файла сookie запроса имеет значение SOME_NAME |
HeaderValue:SOME_NAME | Имя заголовка запроса имеет значение SOME_NAME |
PostParamValue:SOME_NAME | Имя args текста запроса POST равно SOME_NAME |
QueryParamValue:SOME_NAME | Имя аргументов строки запроса имеет значение SOME_NAME |
JsonValue:SOME_NAME | Имя args в тексте запроса равно SOME_NAME |
Исключения для тел запросов JSON
Из DRS версии 2.0 тела запросов JSON проверяются WAF. Например, рассмотрим этот текст запроса JSON:
{
"posts": [
{
"id": 1,
"comment": ""
},
{
"id": 2,
"comment": "\"1=1\""
}
]
}
Запрос включает в себя последовательность символов комментариев SQL, которая WAF обнаруживает как потенциальную атаку на внедрение SQL.
Если определить, что запрос является допустимым, можно создать исключение с переменной Request body JSON args name
соответствия , оператором Equals
и селектором posts.comment
.
Исключение других атрибутов запроса
Если запись журнала WAF отображает matchVariableName
значение, которое отсутствует в предыдущей таблице, невозможно создать исключение. Например, в настоящее время нельзя создавать исключения для имен файлов cookie, имен заголовков, имен параметров POST или имен параметров запроса.
Вместо этого попробуйте принять одно из следующих действий:
- Отключите правила, которые дают ложные срабатывания.
- Создайте пользовательское правило, которое явно разрешает эти запросы. Запросы обходят все проверки WAF.
В частности, если matchVariableName
значение равно CookieName
, HeaderName
PostParamName
или QueryParamName
, это означает имя поля, а не его значение, активировало правило. Исключение правил в настоящее время не поддерживает эти matchVariableName
значения.
Следующие шаги
- Настройте списки исключений в WAF Azure Front Door.
- После настройки параметров WAF вы можете узнать, как просматривать журналы WAF. Дополнительные сведения см. в диагностика Azure Front Door.