Рейт-лимиты

Рейт-лимиты – установка ограничений на трафик веб-приложения.

По кнопке Рейт-лимиты на трафик защищаемого веб-приложения можно наложить несколько ограничений.

  1. Запросы, превысившие лимит запросов за секунду, будут блокироваться. (За эту настройку отвечает параметр Запросов в сек.)

  2. Запросы, превысившие лимит при разовом всплеске, будут сначала замедляться, а затем блокироваться. Либо такие запросы сразу будут блокироваться. (За эту настройку отвечают параметры Burst, Задержка).

При блокировке запроса выдается сообщение об ошибке. Период блокировки доступа к веб-приложению задается параметром Время в секундах ограничений F2B.

Размеры рейт-лимитов подбираются эмпирическим путем. Для этого удобно настроить Рейт-лимиты, задать Режим работы = Отладка, через некоторое время работы под нагрузкой (в это время лимиты будут фиксироваться в отчете, в таблице атак и на графиках, но запросы блокироваться не будут) сформировать отчет в разделе «Отчеты» и проверить по отчету превышение лимитов. При необходимости скорректировать Рейт-лимиты, еще раз проверить отчет. После подбора подходящих рейт-лимитов можно установить Режим работы = Блокировка, тогда при превышении лимитов будет происходить замедление и блокировка запросов.

Предусмотрена возможность задать несколько наборов рейт-лимитов («рейт-лимитов»): по одному набору ограничений на каждый ключ запроса: $server_name, $remote_addr, $binary_remote_addr.

Ниже показано окно рейт-лимитов. Отредактировать рейт-лимит можно с помощью пиктограммы lk_cl_redact. С помощью пиктограммы lk_red_delete рейт-лимит удаляется.

../_images/user_guide_437cl.png

Пиктограмма lk_cl_plus позволит задать лимиты для оставшихся свойств запроса, открывается окно «Добавление рейт-лимита».

../_images/user_guide_472cl.png

Ключ запроса – объект применения лимитов, т.е. к каким группам запросов применяется лимитирование. Список значений:

  • $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.

Конец примера.

../_images/Weblock_Logos_small.png