Брандмауэр веб-приложений списки исключений 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. Вы больше не видите записи журнала со значением matchVariableNamePostParamValue: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, HeaderNamePostParamNameили QueryParamName, это означает имя поля, а не его значение, активировало правило. Исключение правил в настоящее время не поддерживает эти matchVariableName значения.

Следующие шаги

  • Настройте списки исключений в WAF Azure Front Door.
  • После настройки параметров WAF вы можете узнать, как просматривать журналы WAF. Дополнительные сведения см. в диагностика Azure Front Door.