Правила. Создать правила обработки запросов

Последние изменения: 09.03.2023

О вкладке «Правила»
Зачем использовать
Как пользоваться

О вкладке Правила

Для защиты приложений и анализа запросов WAF использует две встроенные библиотеки:

  • Первая библиотека проверяет все запросы на наличие признаков атак. Если один из признаков найден, запрос отправляется на анализ второй библиотеке.

  • Вторая библиотека проверяет полученный запрос. В случае подтверждения атаки вредоносный запрос блокируется. Если атака не подтверждена, запрос помечается как «легитимный» и не блокируется.

На вкладке Правила можно добавить собственные правила обработки запросов. Так выглядит вкладка с добавленными ветками правил:

7bc31d884d20f88e70f05a9cc962597a.png

Приоритет добавленных правил выше приоритета встроенных библиотек. Если запрос имеет признаки вредоносной активности, но вы добавили правило, которое игнорирует такую активность, запрос не будет заблокирован, а помечен как «легитимный».

При создании правила вы добавляете условия обработки запроса и условия для разных параметров HTTP-запросов: URI, метода, заголовка, и так далее. Все входящие запросы соотносятся с установленными условиями. Если запрос соответствует условию, к запросу применяется действие, которое было установлено правилом. Если запрос не соответствует условию, он будет обработан встроенными WAF библиотеками. Подробности работы условий описаны в разделе «Как пользоваться опцией».

Система автоматически группирует правила по веткам на основании условий и эндпоинтов — URI, который вы укажите. Ветка правил — набор параметров HTTP-запроса и условий, при выполнении которых будут применяться правила. В начале стоят ветки правил с высшим уровнем эндпоинта, например, корень приложения. В конце — ветки низких уровней, например, конкретная папка приложения или файл. Вы также можете создать правила без привязки к эндпоинту. Такие правила называются «Правилами по умолчанию» и наследуются всеми группами.

В примере ниже показаны пять веток правил, сгруппированных по эндпоинтам. Ветка с общим эндпоинтом disc в первой строке. Другие ветки (2, 3, 4) имеют тот же эндпоинт (например, disc/…/series), но первая ветка стоит выше, потому что содержит условие: /**/*.*. Две звёздочки означают, что ветка распространяется на любое количество вложенных путей. Правило без привязки к эндпоинту также находится на этой странице. Нажмите на кнопку Правила по умолчанию, чтобы его увидеть.

ada4da0b17899f60f214448ce426b70c.png

Нажмите на ветку правил — откроется список связанных с ней правил. Например, третья ветка имеет три особых правила и одно правило, унаследованное от Правил по умолчанию. Нажмите на кнопку Особые и унаследованные правила, чтобы увидеть их.

Нажмите на кнопку + Добавить правило, чтобы добавить связанное правило.

d4b60cbafb8606bae8666f9dc4b35790.png

Зачем использовать опцию

Покажем на примерах, когда правила могут быть полезны.

Изменить обработку некоторых запросов. Вы используете заголовок X-AUTHTOKEN для авторизации на вашем сайте. WAF обрабатывает значения этого заголовка с помощью парсера base64. Этот парсер определяет некоторые комбинации символов (например, символ = в конце значения) как признак атаки. В результате запросы на авторизацию от ваших пользователей могут быть заблокированы. Чтобы предотвратить блокировку легитимных запросов, создайте правило для запросов авторизации и выключите в нём парсер base64.

Повысить безопасность приложения. У вас самописное приложение, оно не построено на open-source движке (например, CMS WordPress). WAF не знаком с уязвимыми местами вашего приложения из-за его специфичной архитектуры. Чтобы повысить безопасность приложения, создайте правила, опираясь на свои знания о возможных уязвимостях.

Как пользоваться опцией

Добавить новое правило

Перейдите на вкладку Правила и нажмите на кнопку + Добавить правило.

308a01dd16d81eacd448f397b52a7440.png

Правило можно добавить на главном окне вкладки, либо открыть существующую ветку правил и добавить к ней связанное правило.

d2f34cd57fb00b808369c157dcbd55da.png

В правой части экрана появится окно настройки правила. Нужно добавить условия в секции Если есть запрос и правило обработки этого запроса в секции Тогда, затем нажать Создать.

Если пользовательские запросы совпадут с заданными условиями, они будут обрабатываться в соответствии с настроенным правилом.

a7b21c5a54457f6db4c382b3284feb58.png

Обратите внимание: настройки не применяются мгновенно. Фильтрующим серверам WAF требуется некоторое время на внесение настроек в базу.

Настроить условия правила (секция Если есть запрос)

Условия можно настроить двумя способами:

  • В расширенной форме редактирования

  • В одной строке

Второй способ требует специальных знаний о том, как добавить условия через URI. В этой статье мы рассмотрим добавление условий в расширенной форме редактирования. Чтобы настроить в ней правило, следуйте шагам ниже.

8d883ac17183d0c6f1cd6361b96f84e5.png

1. Выберите HTTP-метод (POST, GET, PUT, PATCH, DELETE) в выпадающем списке или оставьте поле пустым, если хотите применить правило ко всем методам.

2. Введите в поле желаемый эндпоинт запроса.

Если вы хотите создать правило по умолчанию, оставьте поле пустым и перейдите к следующему шагу. Поле автоматически заполнится значением /**/*.* .

3. Нажмите на иконку стрелки, чтобы открыть расширенную форму редактирования. Если вы указали эндпоинт, появившиеся ниже поля будут уже заполнены. Значения полей меняются, когда вы изменяете эндпоинт. Если эндпоинт не был указан, поля будут пустыми.

4. Нажмите + Добавить условие, чтобы настроить дополнительное условие.

5. Выберите параметр условия из выпадающего списка и впишите его значение. Во время анализа пользовательских запросов WAF будет проверять, соответствуют ли они указанному значению.

Доступны шесть параметров:

  • header — заголовок запроса. При выборе параметра — появится выпадающий список с часто используемыми заголовками. Выберите подходящий: HOST, USER-AGENT, COOKIE, X-FORWARDED-FOR, AUTHORIZATION, REFERER, CONTENT-TYPE.

  • path — номер части эндпоинта от 0 и выше. Обратите внимание: не нужно добавлять параметр для последней части эндпоинта. Оставьте поле пустым, если эндпоинт состоит из одной части. Например, параметры path для эндпоинта /disc/music/sounds/shake будут выглядеть так:

ec203e6467235a2d2dd8b990abb9294b.png
  • action_name — последняя часть эндпоинта перед точкой. Например, для эндпоинта disc/music.mp3, значением action_name является music.

  • action_ext — последняя часть эндпоинта после точки — расширение файла. Например, для эндпоинта disc/music.mp3, значением action_ext является mp3.

  • query — параметр запроса.

  • scheme — схема запроса (http или https).

Выберите тип условия. Доступны четыре типа:

Тип

Значение

Расшифровка

=

Equal — равно

Значение параметра должно соответствовать сравниваемому аргументу.
example = example

Aa

IEqual (Equal in any case) — равно в любом регистре

Значение параметра должно соответствовать сравниваемому аргументу в любом регистре.
Example Aa example

.*

Regular expression — регулярное выражение

Значение параметра должно соответствовать регулярному выражению.
Используйте библиотеку PIRE, чтобы составить выражение.

Absent — отсутствует

Параметр должен отсутствовать в запросе. Значение параметра заполнять не нужно.
example ∅

Введите значения добавленных параметров.

Добавить правило обработки запроса (секция Тогда)

После добавления условий установите действие в секции Тогда. Если пользовательский запрос совпадёт с условиями правила, это действие сработает.

57b375f7a73d65f413ca229af8e08616.png

Выберите действие из выпадающего списка и настройте его. Доступны шесть действий:

  1. Разрешить двоичные данные. Используйте действие, чтобы настроить механизм обнаружения атак в бинарных данных. WAF может ошибочно определить некоторые стандартные бинарные символы как признак атаки.

  2. Игнорировать определённые типы атак. Установите, какие типы атак будут игнорироваться в пользовательских запросах. По умолчанию WAF реагирует на все типы атак независимо от части запроса, в которой они обнаружены. Иногда на легитимные запросы происходят ложные срабатывания. Например, когда пользователь добавляет пост с описанием вредоносной SQL-команды.

  3. Выключить/Включить парсеры. Управляйте набором парсеров, которые WAF применяет к запросу при его анализе. WAF последовательно применяет все подходящие парсеры к каждой части запроса. Однако в некоторых случаях WAF может ошибочно применить парсер и определить атаку в декодированном значении.

  4. Создать индикатор атаки на основе регулярных выражений. Добавьте собственные индикаторы обнаружения атак на основе регулярных выражений (regexp). Самостоятельно WAF не использует регулярные выражения, но позволяет пользователям применять их для создания индикаторов атак.

  5. Маскировка конфиденциальных данных. Удалите конфиденциальные данные из запроса перед отправкой в Облако WAF. Конфиденциальные данные, например, авторизационные, платёжные и персональные, нежелательно передавать за пределы сервера, на котором они обрабатываются. WAF позволяет маскировать данные в запросе, но продолжает выявлять в них признаки атак. Обратите внимание: действие может повлиять на обнаружение атак перебора, их отображение и перепроверку.

  6. Установить режим фильтрации. Включите или выключите блокировку запросов для эндпоинтов веб‑приложения. Доступны четыре опции:

  • По умолчанию. WAF будет обрабатывать запросы в соответствии с настройками по умолчанию.

  • Запретить. Фильтрация и анализ запросов полностью выключены.

  • Мониторинг. Система анализирует запросы и отображает их в интерфейсе. Запросы не блокируются, даже если отправляются с IP‑адресов из чёрного списка или содержат признаки атак.

  • Блокировка. Вредоносные запросы блокируются и отображаются в интерфейсе.

Добавить место применения правила (секция В этой части запроса)

В секции В этой части запроса укажите, к какой части запроса будет или не будет применяться выбранное действие из секции Тогда.
Например, вы выбрали действие «Маскировка конфиденциальных данных» и хотите скрыть данные аутентификации пользователей через заголовок cookie.
  1. Выберите параметр header и введите cookie в качестве значения.

  2. Нажмите на +, чтобы добавить ещё один параметр. В появившемся поле выберите cookie и введите значение заголовка.

  3. Нажмите Сохранить.

Теперь данные об аутентификации скрыты, и не выйдут за пределы вашего сервера, а мы продолжим сканировать запросы на наличие атак.

Помогла ли вам статья?