Рейт-лимиты¶
Рейт-лимиты – установка ограничений на трафик веб-приложения.
По кнопке Рейт-лимиты на трафик защищаемого веб-приложения можно наложить несколько ограничений.
Запросы, превысившие лимит запросов за секунду, будут блокироваться. (За эту настройку отвечает параметр Запросов в сек.)
Запросы, превысившие лимит при разовом всплеске, будут сначала замедляться, а затем блокироваться. Либо такие запросы сразу будут блокироваться. (За эту настройку отвечают параметры Burst, Задержка).
При блокировке запроса выдается сообщение об ошибке. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.
Размеры рейт-лимитов подбираются эмпирическим путем. Для этого удобно настроить Рейт-лимиты, задать Режим работы = Отладка, через некоторое время работы под нагрузкой (в это время лимиты будут фиксироваться в отчете, в таблице атак и на графиках, но запросы блокироваться не будут) сформировать отчет в разделе «Отчеты» и проверить по отчету превышение лимитов. При необходимости скорректировать Рейт-лимиты, еще раз проверить отчет. После подбора подходящих рейт-лимитов можно установить Режим работы = Блокировка, тогда при превышении лимитов будет происходить замедление и блокировка запросов.
Предусмотрена возможность задать несколько наборов рейт-лимитов («рейт-лимитов»): по одному набору ограничений на каждый ключ запроса: $server_name, $remote_addr, $binary_remote_addr.
Ниже показано окно рейт-лимитов. Отредактировать рейт-лимит можно с помощью пиктограммы . С помощью пиктограммы рейт-лимит удаляется.
Пиктограмма позволит задать лимиты для оставшихся свойств запроса, открывается окно «Добавление рейт-лимита».
Ключ запроса – объект применения лимитов, т.е. к каким группам запросов применяется лимитирование. Список значений:
$remote_addr – лимитирование по IP-адресам трафика защищаемого веб-приложения, когда заданные лимиты применяются по отношению к трафику с IP-адреса.
$binary_remote_addr – лимитирование по бинарному представлению IP-адресов трафика защищаемого веб-приложения; где заданные лимиты применяются по отношению к трафику с IP-адреса в бинарном представлении.
$server_name – лимитирование по трафику защищаемого веб-приложения в целом; когда заданные лимиты применяются ко всему потоку запросов, независимо от источника трафика.
Запросов в сек – ограничение на количество запросов в секунду. Целое число >=1. Как только количество запросов превысит данный лимит, запросы, поступившие в течение данной секунды, блокируются и клиенту выдается ошибка, заданная в поле Код ответа. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.
Burst (Предел) – разрешённый разовый всплеск запросов. Целое число >=0 и меньше параметра Запросов в сек. Как только количество запросов превысит данный лимит, запросы, поступившие в течение данных n миллисекунд, блокируются и клиенту выдается ошибка с параметром Код ответа. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.
Задержка (Превышение) – порог замедления трафика при разовом всплеске запросов, т.е. запросы сверх данного лимита будут замедляться. При включенной опции задается целое число >=0 и меньше параметра Burst.
Если опция отключена (что соответствует значению «-1»), все запросы сверх лимита (заданного параметром Запросов в сек) сразу блокируются и клиенту выдается ошибка с параметром Код ответа, а параметр Burst игнорируется. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.
Если опция включена и Задержка = 0, тогда все запросы замедляются, параметр Burst игнорируется.
Если опция включена и Задержка > 0, тогда, как только количество запросов превысит данный лимит, запросы этого всплеска будут замедляться. При этом, как только количество запросов превысит параметр Burst, запросы сразу блокируются и клиенту выдается ошибка с параметром Код ответа. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.
Код ответа – код ошибки, которая будет выдаваться клиенту при блокировании подозрительного трафика (когда количество запросов превышает один из выше заданных лимитов). По умолчанию – 429.
Режим работы – два режима применения рейт-лимитов:
Отладка – лимиты только считаются, но не применяются (тестовой режим для проверки корректности установленных лимитов),
Блокировка – лимиты применяются (основной режим, ограничивающий подозрительный трафик).
Пример 1. Задание рейт-лимитов.
Ключ запроса $remote_addr
Запросов в сек 5
Burst 5
Задержка 0
Код ответа 429
Режим работы Отладка
Конец примера.
Пример 2. Свойство запроса $server_name.
У запроса к защищаемому серверу (веб-приложению) есть свойства:
{
"server_name": "example.com",
"remote_addr": "1.2.3.4",
"uri": "sample.php",
}
У всех запросов к защищаемому веб-приложению свойства server_name
будут одинаковые.
Следовательно, если в настройках Рейт-лимиты задать свойство запроса $server_name, то защита будет лимитировать запросы, у которых значение свойства server_name
совпадает со значением переменной $server_name
в конфигурационном файле default-weblock.conf
.
Конец примера.