Пользовательские правила для Azure Брандмауэр веб-приложений в Azure Front Door
Azure Брандмауэр веб-приложений в Azure Front Door позволяет управлять доступом к веб-приложениям на основе заданных условий. Настраиваемое правило брандмауэра веб-приложения (WAF) состоит из числа приоритетов, типа правила, условий соответствия и действия.
Существует два типа настраиваемых правил: сопоставления и ограничения скорости. Правило сопоставления управляет доступом на основе набора условий сопоставления. Правило ограничения скорости управляет доступом на основе условий соответствия и частоты входящих запросов. Вы можете отключить настраиваемое правило, чтобы предотвратить его оценку, но сохранить конфигурацию.
Дополнительные сведения об ограничении скорости см. в статье "Что такое ограничение скорости для Azure Front Door?".
Приоритет, типы действий и условия соответствия
Вы можете управлять доступом с помощью настраиваемого правила WAF, определяющего номер приоритета, тип правила, массив условий соответствия и действие.
Приоритет
Уникальное целое число, описывающее порядок оценки правил WAF. Правила с значениями с более низким приоритетом оцениваются перед правилами с более высокими значениями. Оценка правила останавливается для любого действия правила, кроме журнала. Номера приоритета должны быть уникальными для всех настраиваемых правил.
Действие
Определяет, как маршрутизировать запрос, если соответствует правило WAF. Вы можете выбрать одно из следующих действий, чтобы применить, когда запрос соответствует пользовательскому правилу.
- Разрешить: WAF позволяет запрашивать, регистрировать запись в журналах WAF и выйти из нее.
- Блокировать: запрос заблокирован. WAF отправляет клиенту ответ, не перенаправляя запрос дальше. WAF регистрирует запись в журналах WAF и завершает работу.
- Журнал: WAF регистрирует запись в журналах WAF и продолжает оценивать следующее правило в порядке приоритета.
- Перенаправление: WAF перенаправляет запрос на указанный универсальный код ресурса (URI), регистрирует запись в журналах WAF и завершает работу.
Условие соответствия
Определяет переменную соответствия, оператор и значение соответствия. Каждое правило может содержать несколько условий соответствия. Условие соответствия может быть основано на географическом расположении, IP-адресах клиента (CIDR), размере или сопоставлении строк. Совпадение строк может состоять из списка переменных соответствия.
Переменная сопоставления
- requestMethod
- QueryString
- PostArgs
- RequestUri
- RequestHeader
- RequestBody
- Файлы cookie
Оператор
- Any: Часто используется для определения действия по умолчанию, если правила не соответствуют. Any является оператором Match ALL.
- Equal
- Содержит
- LessThan: ограничение размера
- GreaterThan: ограничение размера
- LessThanOrEqual: ограничение размера
- GreaterThanOrEqual: ограничение размера
- BeginsWith
- EndsWith
- Регулярное выражение
Регулярное выражение
Не поддерживает следующие операции:
- Обратные ссылки и запись частей выражений
- Произвольные утверждения нулевой ширины
- Ссылки на подпрограммы и рекурсивные шаблоны
- Условные шаблоны
- Команды управления обратным отслеживанием
- Однобайтовая директива \C
- Директива соответствия новой строке \R
- Директива начала сопоставления со сбросом \K
- Выноски и встроенный код
- Атомарное группирование и обладающие квантификаторы
Negate [необязательно]
Условие можно задать
negate
значение true , если результат условия должен быть отрицаем.Преобразование [необязательно]
Список строк с именами преобразований, которые необходимо выполнить до попытки сопоставления. Преобразования могут быть следующими.
- Верхний регистр
- Нижний регистр
- Trim
- RemoveNulls
- UrlDecode
- UrlEncode
Значение соответствия
Поддерживаемые значения метода HTTP-запроса включают:
- GET
- POST
- PUT
- HEAD
- DELETE
- LOCK
- UNLOCK
- ПРОФИЛЬ
- ПАРАМЕТРЫ
- PROPFIND
- PROPPATCH
- MKCOL
- COPY
- MOVE
- PATCH
- ПОДКЛЮЧЕНИЕ
Примеры
Рассмотрим следующие примеры.
Сопоставление на основе параметров HTTP-запроса
Предположим, необходимо настроить настраиваемое правило так, чтобы разрешать запросы, которые соответствуют следующим двум условиям:
- Значение заголовка
Referer
известно. - Строка запроса не содержит слово
password
.
Ниже приведен пример описания JSON настраиваемого правила.
{
"name": "AllowFromTrustedSites",
"priority": 1,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestHeader",
"selector": "Referer",
"operator": "Equal",
"negateCondition": false,
"matchValue": [
"www.mytrustedsites.com/referpage.html"
]
},
{
"matchVariable": "QueryString",
"operator": "Contains",
"matchValue": [
"password"
],
"negateCondition": true
}
],
"action": "Allow"
}
Блокировка HTTP-запросов PUT
Предположим, необходимо блокировать любой запрос, использующий метод HTTP PUT.
Ниже приведен пример описания JSON настраиваемого правила.
{
"name": "BlockPUT",
"priority": 2,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestMethod",
"selector": null,
"operator": "Equal",
"negateCondition": false,
"matchValue": [
"PUT"
]
}
],
"action": "Block"
}
Ограничение по размеру
WAF Azure Front Door позволяет создавать пользовательские правила, которые применяют ограничение длины или размера для части входящего запроса. Это ограничение размера измеряется в байтах.
Предположим, нужно блокировать запросы, в которых длина URL-адреса превышает 100 символов.
Ниже приведен пример описания JSON настраиваемого правила.
{
"name": "URLOver100",
"priority": 5,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestUri",
"selector": null,
"operator": "GreaterThanOrEqual",
"negateCondition": false,
"matchValue": [
"100"
]
}
],
"action": "Block"
}
Сопоставление на основе универсального кода ресурса (URI) запроса
Предположим, необходимо разрешить запросы, в которых URI содержит имя входа.
Ниже приведен пример описания JSON настраиваемого правила.
{
"name": "URIContainsLogin",
"priority": 5,
"ruleType": "MatchRule",
"matchConditions": [
{
"matchVariable": "RequestUri",
"selector": null,
"operator": "Contains",
"negateCondition": false,
"matchValue": [
"login"
]
}
],
"action": "Allow"
}
Копирование и дублирование пользовательских правил
Пользовательские правила можно дублировать в заданной политике. При дублировании правила необходимо указать уникальное имя правила и уникальное значение приоритета. Кроме того, пользовательские правила можно скопировать из одной политики WAF Azure Front Door в другую, если политики находятся в одной подписке. При копировании правила из одной политики в другую необходимо выбрать политику WAF Azure Front Door, в которую вы хотите скопировать правило. Выбрав политику WAF, необходимо указать уникальное имя правила и назначить ранг приоритета.
Следующие шаги
- Настройте политику WAF с помощью Azure PowerShell.
- Узнайте о Azure Брандмауэр веб-приложений в Azure Front Door.
- Узнайте, как создать экземпляр Azure Front Door.